U Indyju povežite proxy s IOHandlerom koji koristi TIdSMTP. Držite TIdSMTP.Host i Port usmjerene 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. Provjerite biblioteku komponenti u aplikaciji umjesto da primjer birate samo po nazivu Delphi izdanja.

Indy 10 sa SOCKS5

Pretpostavimo da formular već posjeduje ove komponente:

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

Povežite ih i konfigurirajte prije 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;

Vrijednosti portova su primjeri. SMTP port mora odgovarati usluzi i TLS režimu koji namjeravate koristiti. SOCKS port pripada proxyju.

Za dopušteni javni SMTP test gdje je javni posrednik dozvoljen, lista SOCKS5 proxyja nudi kandidatske adrese. Potvrdite da kandidat dopušta stvarni poštanski host i port i koristite granu bez proxy autentifikacije, bez zadržavanja vjerodajnica iz ranijeg proxyja.

TIdSocksInfo počinje s svNoSocks, pa samo postavljanje imena proxy hosta ne aktivira ga. Odaberite odgovarajuću SOCKS verziju. Ako proxy zahtijeva SOCKS5 autentifikaciju korisničkim imenom/lozinkom, konfigurirajte i metod autentifikacije i vjerodajnice:

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

ProxyUser i ProxyPassword predstavljaju vrijednosti koje daje aplikacija. Ta svojstva se autentificiraju na proxyju. Konfigurirajte SMTP račun i njegov metod autentifikacije odvojeno na poštanskom klijentu.

Zadržavanje postojećeg TLS IOHandlera

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

U Indyju 10 SSL IOHandler osnovica potječe od TIdIOHandlerStack i nasljeđ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. Konfigurirajte povjerenje u certifikat i provjeru imena hosta u TLS integraciji za smtp.example.net, a ne za ime proxy hosta. Dodavanje tunela samo po sebi ne uspostavlja provjeru certifikata.

Korištenje HTTP CONNECT proxyja umjesto 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, dodijelite HttpTunnel svojstvu TransparentProxy tog rukovatelja. 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 zahtijeva drugi mehanizam autentifikacije treba kompatibilnu implementaciju; ne pretpostavljajte da ta dva svojstva pružaju sve HTTP šeme autentifikacije.

Proxy također mora dopustiti CONNECT na stvarni port poštanskog servera. Dopuštenje za tunel do web servera na 443 ne znači dopuštenje 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 zalijepiti u ovo starije sučelje.

Nema zasebne prethodne prijave na proxy koju treba obaviti drugim TCP klijentom. Proxy autentifikacija, postavljanje tunela i SMTP razmjena 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, umjesto da se svako odbijanje smatra lošom poštanskom lozinkom.

Povezani članci