Ku-Indy, hlanganisa i-proxy ne-IOHandler esetshenziswa yi-TIdSMTP. Gcina i-TIdSMTP.Host ne-Port zibhekene nensizakalo ye-imeyili. Ingxenye ye-proxy ye-IOHandler inikeza ikheli lomlamuli futhi yenza i-proxy handshake kulolo xhumano olulodwa.

Isici osisebenzisayo sincike kunguqulo ye-Indy: i-Indy 9 inikeza i-SocksInfo; i-Indy 10 isebenzisa i-TransparentProxy. Hlola umtapo wezingxenye kuhlelo esikhundleni sokukhetha isibonelo ngokwegama lokukhishwa kwe-Delphi kuphela.

I-Indy 10 ne-SOCKS5

Ake sithi ifomu selivele linazo lezi zingxenye:

  • Smtp: TIdSMTP
  • MailSocket: TIdIOHandlerStack
  • Socks: TIdSocksInfo

Zixhumeni futhi zilungiseleleni ngaphambi kokuvula uxhumano lwe-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;

Amanani amachweba ayizibonelo. Ichweba le-SMTP kufanele lihambisane nensizakalo kanye nemodi ye-TLS ohlose ukuyisebenzisa. Ichweba le-SOCKS ngelase-proxy.

Ukuze kube nokuhlolwa kwe-SMTP komphakathi okuvunyelwe lapho umlamuli womphakathi evunyelwe, uhlu lwama-proxy e-SOCKS5 lunikeza amakheli angabagadli. Qinisekisa ukuthi umgadli uvumela umsingathi we-imeyili kanye nechweba langempela, futhi usebenzise igatsha elingenakho ukuqinisekiswa kwe-proxy ngaphandle kokugcina ubufakazi besikhathi esedlule se-proxy.

I-TIdSocksInfo iqala nge-svNoSocks, ngakho-ke ukusetha igama lomsingathi we-proxy kuphela akukuyisebenzi. Khetha inguqulo ye-SOCKS efanele. Uma i-proxy idinga ukuqinisekiswa kwe-SOCKS5 ngegama lomsebenzisi nenqubo yokugqama, lungiselela indlela yokuqinisekisa kanye nobufakazi:

Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;

I-ProxyUser ne-ProxyPassword zimele amanani anikezwa uhlelo. Lezi zici ziqinisekisa ku-proxy. Lungiselela i-akhawunti ye-SMTP nendlela yayo yokuqinisekisa ngokuhlukile kuklayenti ye-imeyili.

Ukugcina i-IOHandler ye-TLS ekhona

Iklayenti le-imeyili elisebenzisa i-STARTTLS noma i-TLS engabonakali lidinga i-IOHandler yalo enamandla e-SSL. Ungayishintshi leyo ngxenye nge-TIdIOHandlerStack elula ukuze wengeze i-proxy kuphela.

Ku-Indy 10 isisekelo se-IOHandler ye-SSL sivela ku-TIdIOHandlerStack futhi sizuzwa ukusekelwa kwe-proxy kwaso. Nge-IOHandler ye-SSL ehambisanayo ekhona ebizwa nge-MailTLS, uxhumano luba:

Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;

Isilungiselelo se-UseTLS sengxenye ye-SMTP sisakhetha imodi ye-TLS yensizakalo ye-imeyili. Lungiselela ukuthembela kwesitifiketi kanye nokuqinisekiswa kwegama lomsingathi ekuhlanganisweni kwe-TLS kwe-smtp.example.net, hhayi egameni lomsingathi we-proxy. Ukwengeza ithuneli akusikho ukusungula ukuqinisekiswa kwesitifiketi ngokwako.

Ukusebenzisa i-proxy ye-HTTP CONNECT esikhundleni

Kwe-Indy 10, sebenzisa ingxenye ye-TIdConnectThroughHttpProxy, etholakala ku-IdConnectThroughHttpProxy. Uma sithatha ukuthi kunensakhi ekhona ephethwe yifomu ebizwa nge-HttpTunnel:

HttpTunnel.Host := 'proxy.example.net';
HttpTunnel.Port := 8080;
HttpTunnel.Enabled := True;
MailSocket.TransparentProxy := HttpTunnel;

Uma i-SMTP isebenzisa i-MailTLS, yabela i-HttpTunnel ku-TransparentProxy yaleso siphathi esikhundleni. Umgomo we-imeyili uhlala ku-Smtp.

Le ngxenye isungula ithuneli le-HTTP CONNECT futhi isebenzisa ukuqinisekiswa kwe-proxy okuyisisekelo ngezici zayo i-Username ne-Password. I-proxy edinga enye indlela yokuqinisekisa idinga ukuqaliswa okuhambisanayo; ungacabangi ukuthi lezi zici ezimbili zinikeza zonke izinhlelo zokuqinisekisa ze-HTTP.

I-proxy kufanele futhi ivumele i-CONNECT echwebeni langempela leseva ye-imeyili. Imvume yokwenza ithuneli iye kumaseva ewebhu ku-443 ayisho imvume yokufinyelela insizakalo yokuthumela ku-587 noma iseva ye-SMTP ku-25.

Uxhumano lwe-Indy 9

I-Indy 9 isebenzisa i-TIdIOHandlerSocket kanye nesici sayo i-SocksInfo. Nezingxenye eziphethwe yifomu ezibizwa nge-Socket9 ne-Socks9, ukuxhumeka okulinganayo yilokhu:

Smtp.IOHandler := Socket9;
Socket9.SocksInfo := Socks9;
Socks9.Host := 'proxy.example.net';
Socks9.Port := 1080;
Socks9.Version := svSocks5;

Ukuqaliswa kwayo kwe-SOCKS kusekela izinguqulo 4, 4a kanye no-5. Ukuhlelwa kwe-TransparentProxy kanye nengxenye ye-HTTP CONNECT ye-Indy 10 akukwazi ukunanyathiselwa ngqo kulesi sikhombimsebenzo esidala.

Akukho ukungena kwe-proxy kwangaphambili okuhlukile okufanele kwenziwe ngeklayenti elinye le-TCP. Ukuqinisekiswa kwe-proxy, ukusethwa kwethuneli kanye nokushintshana kwe-SMTP kufanele kube koxhumano olusetshenziswa ngempela yingxenye ye-SMTP. Uma lokho kuxhumeka kulungile, ukwehluleka kungatholakala ekuxoxisaneni kwe-proxy, ekubingeleleni kwe-SMTP, ku-TLS noma ekuqinisekisweni kwe-imeyili, esikhundleni sokuthatha konke ukwenqaba njengephasiwedi yombhalo engalungile.

Izihloko ezihlobene