Andke Indy SMTP-ühendusele puhverserveri IOHandler
Ühendage SOCKS või HTTP CONNECT TIdSMTP-ga õige Indy versiooni IOHandleri omaduste kaudu, eraldi posti- ja puhverserveri seadetega.
Indys ühendage puhverserver IOHandleriga, mida kasutab TIdSMTP. Hoidke TIdSMTP.Host ja Port suunatud postiteenusele. IOHandleri puhverserveri komponent annab vahendaja aadressi ja teeb puhverserveri käepigistuse samal ühendusel.
Kasutatav omadus sõltub Indy versioonist: Indy 9 pakub SocksInfo; Indy 10 kasutab TransparentProxy. Kontrollige rakenduse komponenditeeki, mitte ei valige näidet ainult Delphi väljalaske nime järgi.
Indy 10 SOCKS5-ga
Oletame, et vormil on juba need komponendid:
Smtp: TIdSMTPMailSocket: TIdIOHandlerStackSocks: TIdSocksInfo
Ühendage ja seadistage need enne SMTP-ühenduse avamist:
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;
Pordi väärtused on näited. SMTP port peab vastama teenusele ja TLS-režiimile, mida kavatsete kasutada. SOCKS port kuulub puhverserverile.
Lubatud avaliku SMTP-testi jaoks, kus avalik vahendaja on lubatud, pakub SOCKS5 puhverserverite loend kandidaataadresse. Kinnitage, et kandidaat lubab tegelikku postihosti ja porti, ning kasutage puhverserveri autentimiseta haru, hoidmata eelmise puhverserveri volitusi.
TIdSocksInfo algab väärtusega svNoSocks, seega ainult puhverserveri hostinime seadmine ei aktiveeri seda. Valige sobiv SOCKS-i versioon. Kui puhverserver nõuab SOCKS5 kasutajanime/parooli autentimist, seadistage nii autentimismeetod kui ka volitused:
Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;
ProxyUser ja ProxyPassword tähistavad rakenduse antavaid väärtusi. Need omadused autendivad puhverserveri vastu. Seadistage SMTP-konto ja selle autentimismeetod postikliendis eraldi.
Olemasoleva TLS IOHandleri hoidmine
STARTTLS-i või kaudset TLS-i kasutav postiklient vajab oma SSL-võimekust IOHandlerit. Ärge asendage seda komponenti lihtsa TIdIOHandlerStack-ga ainult puhverserveri lisamiseks.
Indy 10-s pärineb SSL IOHandleri baas TIdIOHandlerStack-st ja pärib selle puhverserveri toe. Olemasoleva ühilduva SSL IOHandleri puhul nimega MailTLS muutub ühendus järgmiseks:
Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;
SMTP komponendi säte UseTLS valib endiselt postiteenuse TLS-režiimi. Seadistage sertifikaadi usaldus ja hostinime valideerimine TLS-i integratsioonis smtp.example.net jaoks, mitte puhverserveri hostinime jaoks. Tunneli lisamine ei taga iseenesest sertifikaadi valideerimist.
Selle asemel HTTP CONNECT puhverserveri kasutamine
Indy 10 jaoks kasutage komponenti TIdConnectThroughHttpProxy, mis on saadaval IdConnectThroughHttpProxy-st. Eeldades, et vormile kuuluv olemasolev eksemplar on nimega HttpTunnel:
HttpTunnel.Host := 'proxy.example.net';
HttpTunnel.Port := 8080;
HttpTunnel.Enabled := True;
MailSocket.TransparentProxy := HttpTunnel;
Kui SMTP kasutab MailTLS, määrake hoopis HttpTunnel selle käsitleja omadusele TransparentProxy. Postisiht jääb Smtp peale.
See komponent loob HTTP CONNECT tunneli ja rakendab Basic puhverserveri autentimist oma omaduste Username ja Password kaudu. Muud autentimismehhanismi nõudev puhverserver vajab ühilduvat teostust; ärge eeldage, et need kaks omadust katavad kõik HTTP autentimisskeemid.
Puhverserver peab lubama ka CONNECT-i postiserveri tegelikule pordile. Luba tunnelida veebiserveritesse pordil 443 ei tähenda luba pääseda saateteenusele pordil 587 või SMTP-serverile pordil 25.
Indy 9 ühendus
Indy 9 kasutab TIdIOHandlerSocket ja selle omadust SocksInfo. Vormile kuuluvate komponentidega nimega Socket9 ja Socks9 on samaväärne ühendus:
Smtp.IOHandler := Socket9;
Socket9.SocksInfo := Socks9;
Socks9.Host := 'proxy.example.net';
Socks9.Port := 1080;
Socks9.Version := svSocks5;
Selle SOCKS-i teostus toetab versioone 4, 4a ja 5. Indy 10 TransparentProxy ja HTTP CONNECT komponendi paigutust ei saa sellesse vanemasse liidesesse lihtsalt kleepida.
Eraldi esialgset puhverserveri sisselogimist teise TCP-kliendiga teha ei ole. Puhverserveri autentimine, tunneli seadistamine ja SMTP-vahetus peavad kuuluma ühendusele, mida SMTP komponent tegelikult kasutab. Kui see ühendus on korras, saab tõrke paigutada puhverserveri läbirääkimisse, SMTP-tervitusse, TLS-i või posti autentimisse, selle asemel et pidada igat keeldumist vale postiparooliks.