I Indy knytter du proxyen til den IOHandler, som TIdSMTP bruger. Hold TIdSMTP.Host og Port rettet mod mailtjenesten. IOHandlerens proxykomponent leverer mellemledets adresse og udfører proxy-håndtrykket på samme forbindelse.

Egenskaben, du bruger, afhænger af Indy-versionen: Indy 9 eksponerer SocksInfo; Indy 10 bruger TransparentProxy. Kontroller komponentbiblioteket i programmet i stedet for at vælge et eksempel alene ud fra Delphi-udgivelsens navn.

Indy 10 med SOCKS5

Antag, at formularen allerede ejer disse komponenter:

  • Smtp: TIdSMTP
  • MailSocket: TIdIOHandlerStack
  • Socks: TIdSocksInfo

Tilslut og konfigurer dem, før du åbner 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;

Portværdierne er eksempler. SMTP-porten skal matche den tjeneste og TLS-tilstand, du vil bruge. SOCKS-porten tilhører proxyen.

Til en tilladt offentlig SMTP-test, hvor et offentligt mellemled er tilladt, tilbyder SOCKS5-proxylisten kandidatadresser. Bekræft, at kandidaten tillader den faktiske mail-vært og port, og brug grenen uden proxygodkendelse uden at beholde legitimationsoplysninger fra en tidligere proxy.

TIdSocksInfo starter med svNoSocks, så det at sætte et proxy-værtsnavn alene aktiverer den ikke. Vælg den passende SOCKS-version. Hvis proxyen kræver SOCKS5-brugernavn/adgangskode-godkendelse, skal du konfigurere både godkendelsesmetoden og legitimationsoplysningerne:

Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;

ProxyUser og ProxyPassword repræsenterer værdier, som programmet leverer. Disse egenskaber godkender over for proxyen. Konfigurer SMTP-kontoen og dens godkendelsesmetode separat i mailklienten.

Behold en eksisterende TLS-IOHandler

En mailklient, der bruger STARTTLS eller implicit TLS, har brug for sin SSL-kapable IOHandler. Erstat ikke den komponent med en almindelig TIdIOHandlerStack blot for at tilføje proxyen.

I Indy 10 nedstammer SSL-IOHandler-basis fra TIdIOHandlerStack og arver dens proxyunderstøttelse. For en eksisterende kompatibel SSL-IOHandler med navnet MailTLS bliver forbindelsen:

Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;

SMTP-komponentens UseTLS-indstilling vælger stadig mailtjenestens TLS-tilstand. Konfigurer certifikattillid og værtsnavnsvalidering i TLS-integrationen for smtp.example.net, ikke for proxyens værtsnavn. Tilføjelse af en tunnel etablerer ikke certifikatvalidering i sig selv.

Brug en HTTP CONNECT-proxy i stedet

Til Indy 10 skal du bruge en TIdConnectThroughHttpProxy-komponent, som fås fra IdConnectThroughHttpProxy. Forudsat at der findes en eksisterende formular-ejet instans med navnet HttpTunnel:

HttpTunnel.Host := 'proxy.example.net';
HttpTunnel.Port := 8080;
HttpTunnel.Enabled := True;
MailSocket.TransparentProxy := HttpTunnel;

Hvis SMTP bruger MailTLS, skal du i stedet tildele HttpTunnel til den handlers TransparentProxy. Mailmålet forbliver på Smtp.

Denne komponent etablerer en HTTP CONNECT-tunnel og implementerer Basic proxygodkendelse via egenskaberne Username og Password. En proxy, der kræver en anden godkendelsesmekanisme, har brug for en kompatibel implementering; antag ikke, at disse to egenskaber dækker alle HTTP-godkendelsesskemaer.

Proxyen skal også tillade CONNECT til mailserverens faktiske port. Tilladelse til at tunnelere til webservere på 443 betyder ikke tilladelse til at nå en indsendelsestjeneste på 587 eller en SMTP-server på 25.

Indy 9-forbindelsen

Indy 9 bruger en TIdIOHandlerSocket og dens SocksInfo-egenskab. Med formular-ejede komponenter med navnene Socket9 og Socks9 er den tilsvarende sammenkobling:

Smtp.IOHandler := Socket9;
Socket9.SocksInfo := Socks9;
Socks9.Host := 'proxy.example.net';
Socks9.Port := 1080;
Socks9.Version := svSocks5;

Dens SOCKS-implementering understøtter version 4, 4a og 5. Indy 10's TransparentProxy og HTTP CONNECT-komponentarrangement kan ikke bare indsættes i denne ældre grænseflade.

Der er ingen separat foreløbig proxylogin at udføre med en anden TCP-klient. Proxygodkendelse, tunnelopsætning og SMTP-udveksling skal høre til den forbindelse, som SMTP-komponenten faktisk bruger. Når sammenkoblingen er korrekt, kan en fejl lokaliseres ved proxyforhandling, SMTP-hilsenen, TLS eller mailgodkendelse i stedet for at behandle enhver afvisning som en dårlig mailadgangskode.

Relaterede artikler