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: TIdSMTP
  • MailSocket: TIdIOHandlerStack
  • Socks: 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.

Relaterte artikler