Indy ನ SMTP ಸಂಪರ್ಕಕ್ಕೆ ಪ್ರಾಕ್ಸಿ IOHandler ನೀಡಿ
ಸರಿಯಾದ Indy ಆವೃತ್ತಿಯ IOHandler ಗುಣಲಕ್ಷಣಗಳೊಂದಿಗೆ SOCKS ಅಥವಾ HTTP CONNECT ಅನ್ನು TIdSMTP ಗೆ ಸಂಪರ್ಕಿಸಿ, ಮೇಲ್ ಮತ್ತು ಪ್ರಾಕ್ಸಿ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಇರಿಸಿ.
Indy ನಲ್ಲಿ, TIdSMTP ಬಳಸುವ IOHandler ಗೆ ಪ್ರಾಕ್ಸಿಯನ್ನು ಜೋಡಿಸಿ. TIdSMTP.Host ಮತ್ತು Port ಅನ್ನು ಮೇಲ್ ಸೇವೆಯ ಕಡೆಗೆ ಇರಿಸಿ. IOHandler ನ ಪ್ರಾಕ್ಸಿ ಘಟಕವು ಮಧ್ಯವರ್ತಿಯ ವಿಳಾಸವನ್ನು ಒದಗಿಸುತ್ತದೆ ಮತ್ತು ಅದೇ ಸಂಪರ್ಕದಲ್ಲಿ ಪ್ರಾಕ್ಸಿ ಹ್ಯಾಂಡ್ಶೇಕ್ ಮಾಡುತ್ತದೆ.
ನೀವು ಬಳಸುವ ಗುಣಲಕ್ಷಣ Indy ಆವೃತ್ತಿಯನ್ನು ಅವಲಂಬಿಸಿದೆ: Indy 9 SocksInfo ಒದಗಿಸುತ್ತದೆ; Indy 10 TransparentProxy ಬಳಸುತ್ತದೆ. ಕೇವಲ Delphi ಬಿಡುಗಡೆಯ ಹೆಸರಿನಿಂದ ಉದಾಹರಣೆ ಆಯ್ಕೆ ಮಾಡುವ ಬದಲು ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿನ ಘಟಕ ಗ್ರಂಥಾಲಯವನ್ನು ಪರಿಶೀಲಿಸಿ.
SOCKS5 ಜೊತೆಗೆ Indy 10
ಫಾರ್ಮ್ನಲ್ಲಿ ಈಗಾಗಲೇ ಈ ಘಟಕಗಳಿವೆ ಎಂದು ಭಾವಿಸಿ:
Smtp: TIdSMTPMailSocket: TIdIOHandlerStackSocks: TIdSocksInfo
SMTP ಸಂಪರ್ಕ ತೆರೆಯುವ ಮೊದಲು ಅವುಗಳನ್ನು ಸಂಪರ್ಕಿಸಿ ಮತ್ತು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ:
Smtp.Host := 'smtp.example.net';
Smtp.Port := 587;
Smtp.IOHandler := MailSocket;
Socks.Host := 'proxy.example.net';
Socks.Port := 1080;
Socks.Version := svSocks5;
MailSocket.TransparentProxy := Socks;
ಪೋರ್ಟ್ ಮೌಲ್ಯಗಳು ಉದಾಹರಣೆಗಳು. SMTP ಪೋರ್ಟ್ ನೀವು ಬಳಸಲು ಉದ್ದೇಶಿಸಿರುವ ಸೇವೆ ಮತ್ತು TLS ಮೋಡ್ಗೆ ಹೊಂದಿಕೆಯಾಗಬೇಕು. SOCKS ಪೋರ್ಟ್ ಪ್ರಾಕ್ಸಿಗೆ ಸೇರಿದೆ.
ಸಾರ್ವಜನಿಕ ಮಧ್ಯವರ್ತಿಗೆ ಅನುಮತಿ ಇರುವ ಅನುಮತಿಸಲಾದ ಸಾರ್ವಜನಿಕ SMTP ಪರೀಕ್ಷೆಗೆ, SOCKS5 ಪ್ರಾಕ್ಸಿ ಪಟ್ಟಿ ಅಭ್ಯರ್ಥಿ ವಿಳಾಸಗಳನ್ನು ನೀಡುತ್ತದೆ. ಅಭ್ಯರ್ಥಿಯು ನಿಜವಾದ ಮೇಲ್ ಹೋಸ್ಟ್ ಮತ್ತು ಪೋರ್ಟ್ಗೆ ಅನುಮತಿ ನೀಡುತ್ತದೆಯೇ ಎಂದು ದೃಢೀಕರಿಸಿ, ಮತ್ತು ಹಿಂದಿನ ಪ್ರಾಕ್ಸಿಯ ರುಜುವಾತುಗಳನ್ನು ಉಳಿಸಿಕೊಳ್ಳದೆ ಪ್ರಾಕ್ಸಿ-ದೃಢೀಕರಣ-ರಹಿತ ಶಾಖೆಯನ್ನು ಬಳಸಿ.
TIdSocksInfo svNoSocks ನಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಕೇವಲ ಪ್ರಾಕ್ಸಿ ಹೋಸ್ಟ್ಹೆಸರು ಸೆಟ್ ಮಾಡುವುದು ಅದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವುದಿಲ್ಲ. ಸೂಕ್ತವಾದ SOCKS ಆವೃತ್ತಿಯನ್ನು ಆಯ್ಕೆಮಾಡಿ. ಪ್ರಾಕ್ಸಿಗೆ SOCKS5 ಬಳಕೆದಾರಹೆಸರು/ಪಾಸ್ವರ್ಡ್ ದೃಢೀಕರಣ ಬೇಕಾದರೆ, ದೃಢೀಕರಣ ವಿಧಾನ ಮತ್ತು ರುಜುವಾತುಗಳೆರಡನ್ನೂ ಕಾನ್ಫಿಗರ್ ಮಾಡಿ:
Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;
ProxyUser ಮತ್ತು ProxyPassword ಅಪ್ಲಿಕೇಶನ್ ಒದಗಿಸುವ ಮೌಲ್ಯಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತವೆ. ಈ ಗುಣಲಕ್ಷಣಗಳು ಪ್ರಾಕ್ಸಿಗೆ ದೃಢೀಕರಿಸುತ್ತವೆ. SMTP ಖಾತೆ ಮತ್ತು ಅದರ ದೃಢೀಕರಣ ವಿಧಾನವನ್ನು ಮೇಲ್ ಕ್ಲೈಂಟ್ನಲ್ಲಿ ಪ್ರತ್ಯೇಕವಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಿ.
ಇರುವ TLS IOHandler ಅನ್ನು ಉಳಿಸಿಕೊಳ್ಳುವುದು
STARTTLS ಅಥವಾ ಸೂಚ್ಯ TLS ಬಳಸುವ ಮೇಲ್ ಕ್ಲೈಂಟ್ಗೆ ಅದರ SSL-ಸಮರ್ಥ IOHandler ಬೇಕು. ಕೇವಲ ಪ್ರಾಕ್ಸಿ ಸೇರಿಸಲು ಆ ಘಟಕವನ್ನು ಸಾಮಾನ್ಯ TIdIOHandlerStack ನಿಂದ ಬದಲಾಯಿಸಬೇಡಿ.
Indy 10 ನಲ್ಲಿ SSL IOHandler ಮೂಲ TIdIOHandlerStack ನಿಂದ ಬರುತ್ತದೆ ಮತ್ತು ಅದರ ಪ್ರಾಕ್ಸಿ ಬೆಂಬಲವನ್ನು ಆನುವಂಶಿಕವಾಗಿ ಪಡೆಯುತ್ತದೆ. MailTLS ಎಂಬ ಹೆಸರಿನ ಇರುವ ಹೊಂದಿಕೊಳ್ಳುವ SSL IOHandler ಗೆ, ಸಂಪರ್ಕ ಹೀಗಾಗುತ್ತದೆ:
Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;
SMTP ಘಟಕದ UseTLS ಸೆಟ್ಟಿಂಗ್ ಇನ್ನೂ ಮೇಲ್ ಸೇವೆಯ TLS ಮೋಡ್ ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ. smtp.example.net ಗಾಗಿ TLS ಸಂಯೋಜನೆಯಲ್ಲಿ ಪ್ರಮಾಣಪತ್ರ ವಿಶ್ವಾಸ ಮತ್ತು ಹೋಸ್ಟ್ಹೆಸರು ಮಾನ್ಯತೆಯನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ, ಪ್ರಾಕ್ಸಿ ಹೋಸ್ಟ್ಹೆಸರಿಗಲ್ಲ. ಸುರಂಗ ಸೇರಿಸುವುದು ತಾನಾಗಿಯೇ ಪ್ರಮಾಣಪತ್ರ ಮಾನ್ಯತೆಯನ್ನು ಸ್ಥಾಪಿಸುವುದಿಲ್ಲ.
ಬದಲಿಗೆ HTTP CONNECT ಪ್ರಾಕ್ಸಿ ಬಳಸುವುದು
Indy 10 ಗಾಗಿ TIdConnectThroughHttpProxy ಘಟಕವನ್ನು ಬಳಸಿ; ಅದು IdConnectThroughHttpProxy ನಿಂದ ಲಭ್ಯವಿದೆ. ಫಾರ್ಮ್ಗೆ ಸೇರಿದ HttpTunnel ಎಂಬ ಇರುವ ನಿದರ್ಶನವಿದೆ ಎಂದು ಭಾವಿಸಿ:
HttpTunnel.Host := 'proxy.example.net';
HttpTunnel.Port := 8080;
HttpTunnel.Enabled := True;
MailSocket.TransparentProxy := HttpTunnel;
SMTP MailTLS ಬಳಸಿದರೆ, ಬದಲಿಗೆ HttpTunnel ಅನ್ನು ಆ ನಿರ್ವಾಹಕದ TransparentProxy ಗೆ ನಿಗದಿಪಡಿಸಿ. ಮೇಲ್ ಗುರಿ Smtp ನಲ್ಲಿಯೇ ಇರುತ್ತದೆ.
ಈ ಘಟಕವು HTTP CONNECT ಸುರಂಗವನ್ನು ಸ್ಥಾಪಿಸುತ್ತದೆ ಮತ್ತು ತನ್ನ Username ಮತ್ತು Password ಗುಣಲಕ್ಷಣಗಳ ಮೂಲಕ ಮೂಲಭೂತ ಪ್ರಾಕ್ಸಿ ದೃಢೀಕರಣವನ್ನು ಜಾರಿಗೊಳಿಸುತ್ತದೆ. ಬೇರೆ ದೃಢೀಕರಣ ಕ್ರಮವನ್ನು ಬೇಡುವ ಪ್ರಾಕ್ಸಿಗೆ ಹೊಂದಿಕೊಳ್ಳುವ ಅನುಷ್ಠಾನ ಬೇಕು; ಈ ಎರಡು ಗುಣಲಕ್ಷಣಗಳು ಎಲ್ಲಾ HTTP ದೃಢೀಕರಣ ಯೋಜನೆಗಳನ್ನು ಒದಗಿಸುತ್ತವೆ ಎಂದು ಭಾವಿಸಬೇಡಿ.
ಪ್ರಾಕ್ಸಿ ಮೇಲ್ ಸರ್ವರ್ನ ನಿಜವಾದ ಪೋರ್ಟ್ಗೆ CONNECT ಗೂ ಅನುಮತಿ ನೀಡಬೇಕು. 443 ನಲ್ಲಿ ವೆಬ್ ಸರ್ವರ್ಗಳಿಗೆ ಸುರಂಗ ಮಾಡುವ ಅನುಮತಿ 587 ನಲ್ಲಿ ಸಲ್ಲಿಕೆ ಸೇವೆ ಅಥವಾ 25 ನಲ್ಲಿ SMTP ಸರ್ವರ್ ತಲುಪುವ ಅನುಮತಿ ಎಂದು ಅರ್ಥವಲ್ಲ.
Indy 9 ಸಂಪರ್ಕ
Indy 9 TIdIOHandlerSocket ಮತ್ತು ಅದರ SocksInfo ಗುಣಲಕ್ಷಣವನ್ನು ಬಳಸುತ್ತದೆ. Socket9 ಮತ್ತು Socks9 ಎಂಬ ಫಾರ್ಮ್-ಸ್ವಾಮ್ಯದ ಘಟಕಗಳೊಂದಿಗೆ ಸಮಾನ ವೈರಿಂಗ್:
Smtp.IOHandler := Socket9;
Socket9.SocksInfo := Socks9;
Socks9.Host := 'proxy.example.net';
Socks9.Port := 1080;
Socks9.Version := svSocks5;
ಅದರ SOCKS ಅನುಷ್ಠಾನವು 4, 4a ಮತ್ತು 5 ಆವೃತ್ತಿಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ. Indy 10 ನ TransparentProxy ಮತ್ತು HTTP CONNECT ಘಟಕದ ಜೋಡಣೆಯನ್ನು ಈ ಹಳೆಯ ಇಂಟರ್ಫೇಸ್ಗೆ ನೇರವಾಗಿ ಅಂಟಿಸಲಾಗುವುದಿಲ್ಲ.
ಬೇರೆ TCP ಕ್ಲೈಂಟ್ನೊಂದಿಗೆ ಮಾಡಬೇಕಾದ ಪ್ರತ್ಯೇಕ ಪ್ರಾಥಮಿಕ ಪ್ರಾಕ್ಸಿ ಲಾಗಿನ್ ಇಲ್ಲ. ಪ್ರಾಕ್ಸಿ ದೃಢೀಕರಣ, ಸುರಂಗ ಸಿದ್ಧತೆ ಮತ್ತು SMTP ವಿನಿಮಯವು SMTP ಘಟಕವು ನಿಜವಾಗಿ ಬಳಸುವ ಸಂಪರ್ಕಕ್ಕೆ ಸೇರಿರಬೇಕು. ಆ ವೈರಿಂಗ್ ಸರಿಯಾಗಿದ್ದರೆ, ವೈಫಲ್ಯವನ್ನು ಪ್ರಾಕ್ಸಿ ಮಾತುಕತೆ, SMTP ಅಭಿವಾದನ, TLS ಅಥವಾ ಮೇಲ್ ದೃಢೀಕರಣದಲ್ಲಿ ಪತ್ತೆಹಚ್ಚಬಹುದು, ಪ್ರತಿ ನಿರಾಕರಣೆಯನ್ನು ಕೆಟ್ಟ ಮೇಲ್ ಪಾಸ್ವರ್ಡ್ ಎಂದು ಪರಿಗಣಿಸುವ ಬದಲು.