Gi Indys SMTP-tilkobling en proxy-IOHandler
Koble SOCKS eller HTTP CONNECT til TIdSMTP med den riktige Indy-versjonens IOHandler-egenskaper, med atskilte e-post- og proxyinnstillinger.
I Indy fester du proxyen til IOHandleren som TIdSMTP benytter. Hold TIdSMTP.Host og Port vendt mot e-posttjenesten. Proxykomponenten i IOHandleren oppgir mellomleddets adresse og utfører proxy-håndtrykket på den samme forbindelsen.
Hvilken egenskap du bruker, avhenger av Indy-versjonen: Indy 9 tilbyr SocksInfo; Indy 10 bruker TransparentProxy. Sjekk komponentbiblioteket i applikasjonen i stedet for å velge et eksempel bare ut fra navnet på Delphi-utgivelsen.
Indy 10 med SOCKS5
Anta at skjemaet allerede har disse komponentene:
Smtp: TIdSMTPMailSocket: TIdIOHandlerStackSocks: TIdSocksInfo
Koble dem til og sett dem opp før du åpner SMTP-forbindelsen:
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å stemme med tjenesten og TLS-modusen du har tenkt å 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 å ta vare på legitimasjon fra en tidligere proxy.
TIdSocksInfo begynner med svNoSocks, så det å sette bare et proxy-vertsnavn aktiverer den ikke. Velg riktig SOCKS-versjon. Dersom proxyen krever SOCKS5-brukernavn/passord-autentisering, sett opp både autentiseringsmetoden og legitimasjonen:
Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;
ProxyUser og ProxyPassword står for verdier som applikasjonen leverer. Disse egenskapene autentiserer mot proxyen. Sett opp SMTP-kontoen og autentiseringsmetoden dens separat i e-postklienten.
Beholde en eksisterende TLS-IOHandler
En e-postklient som bruker STARTTLS eller implisitt TLS trenger sin SSL-kapable IOHandler. Ikke bytt ut 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 med navnet MailTLS blir forbindelsen:
Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;
Innstillingen UseTLS på SMTP-komponenten velger fortsatt e-posttjenestens TLS-modus. Sett opp sertifikattillit og vertsnavnvalidering i TLS-integrasjonen for smtp.example.net, ikke for proxyens vertsnavn. Å legge til en tunnel etablerer ikke sertifikatvalidering i 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 med navnet HttpTunnel:
HttpTunnel.Host := 'proxy.example.net';
HttpTunnel.Port := 8080;
HttpTunnel.Enabled := True;
MailSocket.TransparentProxy := HttpTunnel;
Dersom SMTP bruker MailTLS, tilordne HttpTunnel til TransparentProxy til den behandleren i stedet. E-postmålet forblir på Smtp.
Denne komponenten etablerer en HTTP CONNECT-tunnel og implementerer grunnleggende proxyautentisering gjennom egenskapene Username og Password. En proxy som krever en annen autentiseringsmekanisme, trenger en kompatibel implementering; ikke anta at disse to egenskapene dekker 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-forbindelsen
Indy 9 bruker en TIdIOHandlerSocket og egenskapen SocksInfo. 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 10-oppsettet med TransparentProxy og HTTP CONNECT-komponenten kan ikke uten videre limes inn i dette eldre grensesnittet.
Det finnes ingen egen innledende proxypålogging som skal utføres med en annen TCP-klient. Proxyautentisering, tunneloppsett og SMTP-utveksling må høre til forbindelsen 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 hver avvisning som et dårlig e-postpassord.