Omogočite SMTP-povezavi v Indyu proxy IOHandler
Povežite SOCKS ali HTTP CONNECT s TIdSMTP z lastnostmi IOHandler pravilne različice Indya, z ločenimi nastavitvami pošte in proxyja.
V Indyu pritrdite proxy na IOHandler, ki ga uporablja TIdSMTP. Ohranjajte TIdSMTP.Host in Port usmerjena na poštno storitev. Proxy komponenta IOHandlerja zagotavlja naslov posrednika in izvede proxy rokovanje na isti povezavi.
Lastnost, ki jo uporabite, je odvisna od različice Indya: Indy 9 izpostavi SocksInfo; Indy 10 uporablja TransparentProxy. Preverite knjižnico komponent v aplikaciji, namesto da bi primer izbrali samo po imenu izdaje Delphi.
Indy 10 s SOCKS5
Recimo, da ima obrazec že te komponente:
Smtp: TIdSMTPMailSocket: TIdIOHandlerStackSocks: TIdSocksInfo
Povežite jih in nastavite, preden odprete SMTP-povezavo:
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 vrat so primeri. Vrata SMTP se morajo ujemati s storitvijo in načinom TLS, ki ga nameravate uporabiti. Vrata SOCKS pripadajo proxyju.
Za dovoljen javni preskus SMTP, kjer je javni posrednik dovoljen, seznam proxyjev SOCKS5 ponuja kandidatne naslove. Potrdite, da kandidat dovoljuje dejanski poštni gostitelj in vrata, ter uporabite vejo brez proxy preverjanja pristnosti, ne da bi obdržali poverilnice prejšnjega proxyja.
TIdSocksInfo se začne z svNoSocks, zato ga samo nastavitev imena gostitelja proxyja ne aktivira. Izberite ustrezno različico SOCKS. Če proxy zahteva preverjanje pristnosti SOCKS5 z uporabniškim imenom in geslom, nastavite metodo preverjanja pristnosti in poverilnice:
Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;
ProxyUser in ProxyPassword predstavljata vrednosti, ki jih zagotovi aplikacija. Te lastnosti se preverjajo pri proxyju. Račun SMTP in njegovo metodo preverjanja pristnosti nastavite ločeno v poštnem odjemalcu.
Ohranjanje obstoječega IOHandler TLS
Poštni odjemalec, ki uporablja STARTTLS ali implicitni TLS, potrebuje svoj IOHandler s podporo SSL. Te komponente ne zamenjajte z običajnim TIdIOHandlerStack samo zato, da bi dodali proxy.
V Indyu 10 osnova IOHandler SSL izhaja iz TIdIOHandlerStack in podeduje njegovo podporo proxyju. Za obstoječi združljivi IOHandler SSL z imenom MailTLS povezava postane:
Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;
Nastavitev UseTLS komponente SMTP še vedno izbira način TLS poštne storitve. Zaupanje v potrdilo in preverjanje imena gostitelja nastavite v integraciji TLS za smtp.example.net, ne za ime gostitelja proxyja. Dodajanje tunela samo po sebi ne vzpostavi preverjanja potrdila.
Uporaba proxyja HTTP CONNECT namesto tega
Za Indy 10 uporabite komponento TIdConnectThroughHttpProxy, ki je na voljo v IdConnectThroughHttpProxy. Ob predpostavki, da obstaja primerek v lasti obrazca z imenom HttpTunnel:
HttpTunnel.Host := 'proxy.example.net';
HttpTunnel.Port := 8080;
HttpTunnel.Enabled := True;
MailSocket.TransparentProxy := HttpTunnel;
Če SMTP uporablja MailTLS, namesto tega dodelite HttpTunnel lastnosti TransparentProxy tega upravljalnika. Poštni cilj ostane na Smtp.
Ta komponenta vzpostavi tunel HTTP CONNECT in izvede osnovno preverjanje pristnosti proxyja prek svojih lastnosti Username in Password. Proxy, ki zahteva drug mehanizem preverjanja pristnosti, potrebuje združljivo izvedbo; ne predpostavljajte, da ti dve lastnosti zagotavljata vse sheme preverjanja pristnosti HTTP.
Proxy mora dovoliti tudi CONNECT na dejanska vrata poštnega strežnika. Dovoljenje za tuneliranje do spletnih strežnikov na 443 ne pomeni dovoljenja za dosego storitve pošiljanja na 587 ali strežnika SMTP na 25.
Povezava v Indyu 9
Indy 9 uporablja TIdIOHandlerSocket in njegovo lastnost SocksInfo. S komponentami v lasti obrazca z imenoma Socket9 in Socks9 je enakovredna povezava:
Smtp.IOHandler := Socket9;
Socket9.SocksInfo := Socks9;
Socks9.Host := 'proxy.example.net';
Socks9.Port := 1080;
Socks9.Version := svSocks5;
Njegova izvedba SOCKS podpira različice 4, 4a in 5. Razporeditve TransparentProxy in komponente HTTP CONNECT iz Indya 10 ni mogoče preprosto prilepiti v ta starejši vmesnik.
Ni ločene predhodne prijave v proxy, ki bi jo bilo treba izvesti z drugim odjemalcem TCP. Preverjanje pristnosti proxyja, nastavitev tunela in izmenjava SMTP morajo pripadati povezavi, ki jo komponenta SMTP dejansko uporablja. Ko je ta povezava pravilna, je napako mogoče najti pri pogajanju s proxyjem, pozdravu SMTP, TLS ali preverjanju pristnosti pošte, namesto da bi vsako zavrnitev obravnavali kot napačno poštno geslo.