U Indyju povežite proxy sa IOHandlerom koji koristi TIdSMTP. Držite TIdSMTP.Host i Port usmerene na poštansku uslugu. Proxy komponenta IOHandlera daje adresu posrednika i obavlja proxy rukovanje na istoj vezi.

Svojstvo koje koristite zavisi od verzije Indyja: Indy 9 izlaže SocksInfo; Indy 10 koristi TransparentProxy. Proverite biblioteku komponenti u aplikaciji umesto da primer birate samo po nazivu Delphi izdanja.

Indy 10 sa SOCKS5

Pretpostavimo da formular već poseduje ove komponente:

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

Povežite ih i konfigurišite pre otvaranja SMTP veze:

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;

Vrednosti portova su primeri. SMTP port mora odgovarati usluzi i TLS režimu koji nameravate koristiti. SOCKS port pripada proxyju.

Za dozvoljeni javni SMTP test gde je javni posrednik dozvoljen, lista SOCKS5 proxyja nudi kandidat adrese. Potvrdite da kandidat dozvoljava stvarni poštanski host i port i koristite granu bez proxy autentifikacije, bez zadržavanja akreditiva iz ranijeg proxyja.

TIdSocksInfo počinje sa svNoSocks, pa samo postavljanje imena proxy hosta ne aktivira ga. Izaberite odgovarajuću verziju SOCKS-a. Ako proxy zahteva SOCKS5 autentifikaciju korisničkim imenom/lozinkom, konfigurišite i metod autentifikacije i akreditive:

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

ProxyUser i ProxyPassword predstavljaju vrednosti koje daje aplikacija. Ta svojstva se autentifikuju prema proxyju. Konfigurišite SMTP nalog i njegov metod autentifikacije odvojeno u poštanskom klijentu.

Zadržavanje postojećeg TLS IOHandlera

Poštanskom klijentu koji koristi STARTTLS ili implicitni TLS treba IOHandler sposoban za SSL. Ne zamenjujte tu komponentu običnim TIdIOHandlerStack samo da biste dodali proxy.

U Indyju 10 SSL IOHandler osnova potiče od TIdIOHandlerStack i nasleđuje njegovu proxy podršku. Za postojeći kompatibilni SSL IOHandler nazvan MailTLS veza postaje:

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

Postavka UseTLS SMTP komponente i dalje bira TLS režim poštanske usluge. Konfigurišite poverenje u sertifikat i proveru imena hosta u TLS integraciji za smtp.example.net, a ne za ime proxy hosta. Dodavanje tunela samo po sebi ne uspostavlja proveru sertifikata.

Korišćenje HTTP CONNECT proxyja umesto toga

Za Indy 10 koristite komponentu TIdConnectThroughHttpProxy, dostupnu iz IdConnectThroughHttpProxy. Uz pretpostavku da postoji postojeća instanca u vlasništvu formulara nazvana HttpTunnel:

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

Ako SMTP koristi MailTLS, dodelite HttpTunnel svojstvu TransparentProxy tog rukovaoca. Poštanski cilj ostaje na Smtp.

Ova komponenta uspostavlja HTTP CONNECT tunel i implementira osnovnu proxy autentifikaciju kroz svoja svojstva Username i Password. Proxy koji zahteva drugi mehanizam autentifikacije treba kompatibilnu implementaciju; ne pretpostavljajte da ta dva svojstva pružaju sve HTTP šeme autentifikacije.

Proxy takođe mora dozvoliti CONNECT na stvarni port poštanskog servera. Dozvola za tunel do veb servera na 443 ne znači dozvolu za dosezanje usluge predaje na 587 ili SMTP servera na 25.

Veza u Indyju 9

Indy 9 koristi TIdIOHandlerSocket i njegovo svojstvo SocksInfo. Uz komponente u vlasništvu formulara nazvane Socket9 i Socks9, ekvivalentno povezivanje je:

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

Njegova SOCKS implementacija podržava verzije 4, 4a i 5. Raspored TransparentProxy i HTTP CONNECT komponente iz Indyja 10 ne može se jednostavno zalepiti u ovo starije sučelje.

Nema zasebne prethodne prijave na proxy koju treba obaviti drugim TCP klijentom. Proxy autentifikacija, postavljanje tunela i SMTP razmena moraju pripadati vezi koju SMTP komponenta stvarno koristi. Kad je to povezivanje ispravno, kvar se može locirati na proxy pregovaranju, SMTP pozdravu, TLS-u ili poštanskoj autentifikaciji, umesto da se svako odbijanje smatra lošom poštanskom lozinkom.

Povezani članci