Indy vidē pievienojiet starpniekserveri IOHandler, ko izmanto TIdSMTP. Turiet TIdSMTP.Host un Port vērstus uz pasta pakalpojumu. IOHandler starpniekservera komponents nodrošina starpnieka adresi un veic starpniekservera rokasspiedienu tajā pašā savienojumā.

Izmantojamais rekvizīts ir atkarīgs no Indy versijas: Indy 9 piedāvā SocksInfo; Indy 10 izmanto TransparentProxy. Pārbaudiet lietojumprogrammas komponentu bibliotēku, nevis izvēlieties piemēru tikai pēc Delphi izlaiduma nosaukuma.

Indy 10 ar SOCKS5

Pieņemsim, ka formai jau ir šie komponenti:

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

Savienojiet un konfigurējiet tos pirms SMTP savienojuma atvēršanas:

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;

Portu vērtības ir piemēri. SMTP portam jāatbilst pakalpojumam un TLS režīmam, ko plānojat izmantot. SOCKS ports pieder starpniekserverim.

Atļautam publiskam SMTP testam, kur atļauts publisks starpnieks, SOCKS5 starpniekserveru saraksts piedāvā kandidātu adreses. Apstipriniet, ka kandidāts atļauj faktisko pasta resursdatoru un portu, un izmantojiet zaru bez starpniekservera autentifikācijas, nepaturot iepriekšējā starpniekservera akreditācijas datus.

TIdSocksInfo sākas ar svNoSocks, tāpēc tikai starpniekservera resursdatora nosaukuma iestatīšana to neaktivizē. Izvēlieties atbilstošo SOCKS versiju. Ja starpniekserverim nepieciešama SOCKS5 lietotājvārda/paroles autentifikācija, konfigurējiet gan autentifikācijas metodi, gan akreditācijas datus:

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

ProxyUser un ProxyPassword apzīmē vērtības, ko nodrošina lietojumprogramma. Šie rekvizīti autentificējas starpniekserverī. Konfigurējiet SMTP kontu un tā autentifikācijas metodi atsevišķi pasta klientā.

Esošā TLS IOHandler saglabāšana

Pasta klientam, kas izmanto STARTTLS vai netiešo TLS, ir nepieciešams savs SSL atbalstošais IOHandler. Neaizstājiet šo komponentu ar vienkāršu TIdIOHandlerStack tikai tāpēc, lai pievienotu starpniekserveri.

Indy 10 SSL IOHandler pamats cēlies no TIdIOHandlerStack un manto tā starpniekservera atbalstu. Esošam saderīgam SSL IOHandler ar nosaukumu MailTLS savienojums kļūst:

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

SMTP komponenta UseTLS iestatījums joprojām izvēlas pasta pakalpojuma TLS režīmu. Konfigurējiet sertifikāta uzticēšanos un resursdatora nosaukuma validāciju TLS integrācijā smtp.example.net vajadzībām, nevis starpniekservera resursdatora nosaukumam. Tuneles pievienošana pati par sevi neizveido sertifikāta validāciju.

Starpniekservera HTTP CONNECT izmantošana tā vietā

Indy 10 izmantojiet TIdConnectThroughHttpProxy komponentu, kas pieejams no IdConnectThroughHttpProxy. Pieņemot, ka pastāv esošs formai piederošs eksemplārs ar nosaukumu HttpTunnel:

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

Ja SMTP izmanto MailTLS, piešķiriet HttpTunnel tā apstrādātāja TransparentProxy rekvizītam. Pasta mērķis paliek uz Smtp.

Šis komponents izveido HTTP CONNECT tuneli un īsteno pamata starpniekservera autentifikāciju, izmantojot tā Username un Password rekvizītus. Starpniekserverim, kas prasa citu autentifikācijas mehānismu, nepieciešama saderīga ieviešana; nepieņemiet, ka šie divi rekvizīti nodrošina visas HTTP autentifikācijas shēmas.

Starpniekserverim jāatļauj arī CONNECT uz pasta servera faktisko portu. Atļauja tunelēt uz tīmekļa serveriem 443 portā nenozīmē atļauju sasniegt sūtīšanas pakalpojumu 587 portā vai SMTP serveri 25 portā.

Indy 9 savienojums

Indy 9 izmanto TIdIOHandlerSocket un tā SocksInfo rekvizītu. Ar formai piederošiem komponentiem ar nosaukumiem Socket9 un Socks9 līdzvērtīgais savienojums ir:

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

Tā SOCKS ieviešana atbalsta 4., 4a. un 5. versiju. Indy 10 TransparentProxy un HTTP CONNECT komponenta izkārtojumu nevar vienkārši ielīmēt šajā vecākajā saskarnē.

Nav atsevišķas iepriekšējas starpniekservera pieteikšanās, kas jāveic ar citu TCP klientu. Starpniekservera autentifikācijai, tuneļa iestatīšanai un SMTP apmaiņai jāpieder savienojumam, ko SMTP komponents faktiski izmanto. Kad šis savienojums ir pareizs, kļūmi var lokalizēt starpniekservera sarunās, SMTP sveicienā, TLS vai pasta autentifikācijā, nevis uzskatīt katru atteikumu par nepareizu pasta paroli.

Saistītie raksti