Gee Indy se SMTP-verbinding 'n proxy-IOHandler
Koppel SOCKS of HTTP CONNECT aan TIdSMTP met die korrekte Indy-weergawe se IOHandler-eienskappe, met aparte pos- en proxy-instellings.
In Indy koppel jy die proxy aan die IOHandler wat TIdSMTP gebruik. Hou TIdSMTP.Host en Port na die posdiens gerig. Die IOHandler se proxy-komponent verskaf die tussenbemiddelaar se adres en voer die proxy-handdruk op daardie selfde verbinding uit.
Die eienskap wat jy gebruik, hang van die Indy-weergawe af: Indy 9 bied SocksInfo; Indy 10 gebruik TransparentProxy. Kontroleer die komponentbiblioteek in die toepassing eerder as om 'n voorbeeld slegs op grond van die Delphi-vrystellingsnaam te kies.
Indy 10 met SOCKS5
Veronderstel die vorm besit reeds hierdie komponente:
Smtp: TIdSMTPMailSocket: TIdIOHandlerStackSocks: TIdSocksInfo
Koppel en stel hulle op voordat jy die SMTP-verbinding oopmaak:
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;
Die portwaardes is voorbeelde. Die SMTP-port moet by die diens en TLS-modus pas wat jy van plan is om te gebruik. Die SOCKS-port behoort aan die proxy.
Vir 'n toegelate publieke SMTP-toets waar 'n publieke tussenbemiddelaar toegelaat word, bied die SOCKS5-proxylys kandidaatadresse. Bevestig dat die kandidaat die werklike posgasheer en -port toelaat, en gebruik die tak sonder proxy-verifikasie sonder om geloofsbriewe van 'n vroeëre proxy te behou.
TIdSocksInfo begin met svNoSocks, dus om net 'n proxy-gasheernaam te stel, aktiveer dit nie. Kies die toepaslike SOCKS-weergawe. As die proxy SOCKS5-gebruikersnaam/wagwoord-verifikasie vereis, stel die verifikasiemetode sowel as die geloofsbriewe op:
Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;
ProxyUser en ProxyPassword verteenwoordig waardes wat deur die toepassing verskaf word. Hierdie eienskappe verifieer by die proxy. Stel die SMTP-rekening en sy verifikasiemetode afsonderlik op die poskliënt op.
Behoud 'n bestaande TLS-IOHandler
'n Poskliënt wat STARTTLS of implisiete TLS gebruik, het sy SSL-vermoënde IOHandler nodig. Moenie daardie komponent met 'n gewone TIdIOHandlerStack vervang net om die proxy by te voeg nie.
In Indy 10 stem die SSL-IOHandler-basis van TIdIOHandlerStack af en erf sy proxy-ondersteuning. Vir 'n bestaande versoenbare SSL-IOHandler genaamd MailTLS, word die verbinding:
Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;
Die SMTP-komponent se UseTLS-instelling kies steeds die posdiens se TLS-modus. Stel sertifikaatvertroue en gasheernaamvalidering in die TLS-integrasie op vir smtp.example.net, nie vir die proxy-gasheernaam nie. Die byvoeging van 'n tonnel vestig nie op sigself sertifikaatvalidering nie.
Gebruik eerder 'n HTTP CONNECT-proxy
Vir Indy 10, gebruik 'n TIdConnectThroughHttpProxy-komponent, beskikbaar vanaf IdConnectThroughHttpProxy. Gestel daar is 'n bestaande vorm-besitte instansie genaamd HttpTunnel:
HttpTunnel.Host := 'proxy.example.net';
HttpTunnel.Port := 8080;
HttpTunnel.Enabled := True;
MailSocket.TransparentProxy := HttpTunnel;
As SMTP MailTLS gebruik, wys HttpTunnel eerder aan daardie handler se TransparentProxy toe. Die posteiken bly op Smtp.
Hierdie komponent vestig 'n HTTP CONNECT-tonnel en implementeer Basiese proxy-verifikasie deur sy Username- en Password-eienskappe. 'n Proxy wat 'n ander verifikasiemeganisme vereis, benodig 'n versoenbare implementering; moenie aanneem hierdie twee eienskappe bied elke HTTP-verifikasieskema nie.
Die proxy moet ook CONNECT na die posbediener se werklike poort toelaat. Toestemming om na webbedieners op 443 te tonnel impliseer nie toestemming om 'n indieningsdiens op 587 of 'n SMTP-bediener op 25 te bereik nie.
Die Indy 9-verbinding
Indy 9 gebruik 'n TIdIOHandlerSocket en sy SocksInfo-eienskap. Met vorm-besitte komponente genaamd Socket9 en Socks9, is die ekwivalente bedrading:
Smtp.IOHandler := Socket9;
Socket9.SocksInfo := Socks9;
Socks9.Host := 'proxy.example.net';
Socks9.Port := 1080;
Socks9.Version := svSocks5;
Sy SOCKS-implementering ondersteun weergawes 4, 4a en 5. Die Indy 10 TransparentProxy en HTTP CONNECT-komponentrangskikking kan nie bloot in hierdie ouer koppelvlak geplak word nie.
Daar is geen aparte voorlopige proxy-aanmelding om met 'n ander TCP-kliënt uit te voer nie. Die proxy-verifikasie, tonnel-opstelling en SMTP-uitruiling moet aan die verbinding behoort wat die SMTP-komponent werklik gebruik. Sodra daardie bedrading korrek is, kan 'n fout by proxy-onderhandeling, die SMTP-groet, TLS of posverifikasie opgespoor word in plaas daarvan om elke weiering as 'n slegte poswagwoord te beskou.