Gi Indys SMTP-tilkobling en proxy-IOHandler
Koble SOCKS eller HTTP CONNECT til TIdSMTP med riktig Indy-versjons IOHandler-egenskaper, med separate e-post- og proxyinnstillinger.
I Indy knytter du proxyen til IOHandleren som TIdSMTP bruker. Hold TIdSMTP.Host og Port rettet mot e-posttjenesten. IOHandlerens proxykomponent leverer mellomleddets adresse og utfører proxy-håndtrykket på samme tilkobling.
Egenskapen du bruker avhenger av Indy-versjonen: Indy 9 eksponerer SocksInfo; Indy 10 bruker TransparentProxy. Kontroller komponentbiblioteket i programmet i stedet for å velge et eksempel bare ut fra navnet på Delphi-utgivelsen.
Indy 10 med SOCKS5
Anta at skjemaet allerede eier disse komponentene:
Smtp: TIdSMTPMailSocket: TIdIOHandlerStackSocks: TIdSocksInfo
Koble dem til og konfigurer dem før du åpner SMTP-tilkoblingen:
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;
Portverdiene er eksempler. SMTP-porten må samsvare med tjenesten og TLS-modusen du planlegger å bruke. SOCKS-porten tilhører proxyen.
For en tillatt offentlig SMTP-test der et offentlig mellomledd er tillatt, tilbyr SOCKS5-proxylisten kandidatadresser. Bekreft at kandidaten tillater den faktiske e-postverten og porten, og bruk grenen uten proxyautentisering uten å beholde legitimasjon fra en tidligere proxy.
TIdSocksInfo starter med svNoSocks, så det å sette bare et proxy-vertsnavn aktiverer den ikke. Velg riktig SOCKS-versjon. Hvis proxyen krever SOCKS5-brukernavn/passord-autentisering, konfigurer både autentiseringsmetoden og legitimasjonen:
Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;
ProxyUser og ProxyPassword representerer verdier som programmet leverer. Disse egenskapene autentiserer mot proxyen. Konfigurer SMTP-kontoen og dens autentiseringsmetode separat i e-postklienten.
Beholde en eksisterende TLS-IOHandler
En e-postklient som bruker STARTTLS eller implisitt TLS trenger sin SSL-kapable IOHandler. Ikke erstatt den komponenten med en vanlig TIdIOHandlerStack bare for å legge til proxyen.
I Indy 10 stammer SSL-IOHandler-basen fra TIdIOHandlerStack og arver proxy-støtten. For en eksisterende kompatibel SSL-IOHandler kalt MailTLS blir tilkoblingen:
Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;
Innstillingen UseTLS på SMTP-komponenten velger fortsatt e-posttjenestens TLS-modus. Konfigurer sertifikattillit og vertsnavnvalidering i TLS-integrasjonen for smtp.example.net, ikke for proxyens vertsnavn. Å legge til en tunnel etablerer ikke sertifikatvalidering av seg selv.
Bruke en HTTP CONNECT-proxy i stedet
For Indy 10 bruker du en TIdConnectThroughHttpProxy-komponent, tilgjengelig fra IdConnectThroughHttpProxy. Forutsatt at det finnes en eksisterende skjema-eid instans kalt HttpTunnel:
HttpTunnel.Host := 'proxy.example.net';
HttpTunnel.Port := 8080;
HttpTunnel.Enabled := True;
MailSocket.TransparentProxy := HttpTunnel;
Hvis SMTP bruker MailTLS, tilordne HttpTunnel til den behandlerens TransparentProxy i stedet. E-postmålet forblir på Smtp.
Denne komponenten etablerer en HTTP CONNECT-tunnel og implementerer Basic proxyautentisering gjennom egenskapene Username og Password. En proxy som krever en annen autentiseringsmekanisme trenger en kompatibel implementering; ikke anta at disse to egenskapene gir alle HTTP-autentiseringsskjemaer.
Proxyen må også tillate CONNECT til e-postserverens faktiske port. Tillatelse til å tunnelere til webservere på 443 betyr ikke tillatelse til å nå en innsendelsestjeneste på 587 eller en SMTP-server på 25.
Indy 9-tilkoblingen
Indy 9 bruker en TIdIOHandlerSocket og dens SocksInfo-egenskap. Med skjema-eide komponenter kalt Socket9 og Socks9 er den tilsvarende koblingen:
Smtp.IOHandler := Socket9;
Socket9.SocksInfo := Socks9;
Socks9.Host := 'proxy.example.net';
Socks9.Port := 1080;
Socks9.Version := svSocks5;
Dens SOCKS-implementering støtter versjon 4, 4a og 5. Indy 10s TransparentProxy og HTTP CONNECT-komponentarrangement kan ikke bare limes inn i dette eldre grensesnittet.
Det finnes ingen separat innledende proxypålogging å utføre med en annen TCP-klient. Proxyautentisering, tunneloppsett og SMTP-utveksling må tilhøre tilkoblingen som SMTP-komponenten faktisk bruker. Når den koblingen er riktig, kan en feil lokaliseres ved proxyforhandling, SMTP-hilsenen, TLS eller e-postautentisering i stedet for å behandle enhver avvisning som et dårlig e-postpassord.