Indy ਵਿੱਚ, ਪ੍ਰੌਕਸੀ ਨੂੰ ਉਸ IOHandler ਨਾਲ ਜੋੜੋ ਜੋ TIdSMTP ਵਰਤਦਾ ਹੈ। TIdSMTP.Host ਅਤੇ Port ਨੂੰ ਮੇਲ ਸੇਵਾ ਵੱਲ ਰੱਖੋ। IOHandler ਦਾ ਪ੍ਰੌਕਸੀ ਹਿੱਸਾ ਵਿਚੋਲੇ ਦਾ ਪਤਾ ਦਿੰਦਾ ਹੈ ਅਤੇ ਉਸੇ ਕਨੈਕਸ਼ਨ ਉੱਤੇ ਪ੍ਰੌਕਸੀ ਹੈਂਡਸ਼ੇਕ ਕਰਦਾ ਹੈ।

ਤੁਸੀਂ ਜੋ ਵਿਸ਼ੇਸ਼ਤਾ ਵਰਤਦੇ ਹੋ ਉਹ Indy ਵਰਜਨ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ: Indy 9 SocksInfo ਦਿੰਦਾ ਹੈ; Indy 10 TransparentProxy ਵਰਤਦਾ ਹੈ। ਸਿਰਫ਼ Delphi ਰਿਲੀਜ਼ ਦੇ ਨਾਂ 'ਤੇ ਉਦਾਹਰਨ ਚੁਣਨ ਦੀ ਥਾਂ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਹਿੱਸਾ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਜਾਂਚ ਕਰੋ।

SOCKS5 ਨਾਲ Indy 10

ਮੰਨ ਲਓ ਕਿ ਫਾਰਮ ਕੋਲ ਇਹ ਹਿੱਸੇ ਪਹਿਲਾਂ ਹੀ ਹਨ:

  • Smtp: TIdSMTP
  • MailSocket: TIdIOHandlerStack
  • Socks: 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 ਜਾਂ ਮੇਲ ਪ੍ਰਮਾਣਿਕਤਾ ਵਿੱਚ ਲੱਭਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਹਰ ਇਨਕਾਰ ਨੂੰ ਖਰਾਬ ਮੇਲ ਪਾਸਵਰਡ ਮੰਨਣ ਦੀ ਥਾਂ।

ਸੰਬੰਧਿਤ ਲੇਖ