Dejte SMTP připojení v Indyu proxy IOHandler
Připojte SOCKS nebo HTTP CONNECT k TIdSMTP pomocí vlastností IOHandler správné verze Indye, se samostatným nastavením pošty a proxy.
V Indyu připojte proxy k IOHandleru, který používá TIdSMTP. Nechte TIdSMTP.Host a Port směřovat k poštovní službě. Proxy komponenta IOHandleru dodává adresu zprostředkovatele a provádí proxy handshake na stejném připojení.
Vlastnost, kterou použijete, závisí na verzi Indye: Indy 9 vystavuje SocksInfo; Indy 10 používá TransparentProxy. Zkontrolujte knihovnu komponent v aplikaci, místo abyste příklad vybírali jen podle názvu vydání Delphi.
Indy 10 se SOCKS5
Předpokládejme, že formulář už tyto komponenty vlastní:
Smtp: TIdSMTPMailSocket: TIdIOHandlerStackSocks: TIdSocksInfo
Připojte je a nakonfigurujte je před otevřením SMTP připojení:
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;
Hodnoty portů jsou příklady. Port SMTP musí odpovídat službě a režimu TLS, který hodláte použít. Port SOCKS patří proxy.
Pro povolený veřejný SMTP test, kde je veřejný zprostředkovatel dovolen, nabízí seznam SOCKS5 proxy kandidátské adresy. Ověřte, že kandidát povoluje skutečný poštovní hostitel a port, a použijte větev bez proxy autentizace, aniž byste si ponechali údaje z dřívější proxy.
TIdSocksInfo začíná na svNoSocks, takže pouhé nastavení názvu proxy hostitele ji neaktivuje. Zvolte odpovídající verzi SOCKS. Pokud proxy vyžaduje autentizaci SOCKS5 jménem a heslem, nakonfigurujte metodu autentizace i údaje:
Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;
ProxyUser a ProxyPassword představují hodnoty, které dodává aplikace. Tyto vlastnosti se autentizují vůči proxy. SMTP účet a jeho metodu autentizace nastavte zvlášť v poštovním klientovi.
Zachování stávajícího TLS IOHandleru
Poštovní klient používající STARTTLS nebo implicitní TLS potřebuje svůj IOHandler schopný SSL. Nenahrazujte tuto komponentu obyčejným TIdIOHandlerStack jen kvůli přidání proxy.
V Indyu 10 základ SSL IOHandleru pochází z TIdIOHandlerStack a dědí jeho podporu proxy. Pro existující kompatibilní SSL IOHandler nazvaný MailTLS vypadá připojení takto:
Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;
Nastavení UseTLS komponenty SMTP stále volí režim TLS poštovní služby. Důvěru v certifikát a ověření názvu hostitele nastavte v TLS integraci pro smtp.example.net, nikoli pro název proxy hostitele. Přidání tunelu samo o sobě ověření certifikátu nezavádí.
Použití proxy HTTP CONNECT místo toho
Pro Indy 10 použijte komponentu TIdConnectThroughHttpProxy, dostupnou z IdConnectThroughHttpProxy. Za předpokladu, že existuje instance vlastněná formulářem nazvaná HttpTunnel:
HttpTunnel.Host := 'proxy.example.net';
HttpTunnel.Port := 8080;
HttpTunnel.Enabled := True;
MailSocket.TransparentProxy := HttpTunnel;
Pokud SMTP používá MailTLS, přiřaďte místo toho HttpTunnel vlastnosti TransparentProxy tohoto handleru. Poštovní cíl zůstává na Smtp.
Tato komponenta vytváří tunel HTTP CONNECT a implementuje základní proxy autentizaci prostřednictvím svých vlastností Username a Password. Proxy vyžadující jiný mechanismus autentizace potřebuje kompatibilní implementaci; nepředpokládejte, že tyto dvě vlastnosti poskytují všechna schémata HTTP autentizace.
Proxy musí také povolit CONNECT na skutečný port poštovního serveru. Povolení tunelovat k webovým serverům na 443 neznamená povolení dosáhnout služby pro odesílání na 587 nebo SMTP serveru na 25.
Připojení v Indyu 9
Indy 9 používá TIdIOHandlerSocket a jeho vlastnost SocksInfo. S komponentami vlastněnými formulářem nazvanými Socket9 a Socks9 je ekvivalentní zapojení:
Smtp.IOHandler := Socket9;
Socket9.SocksInfo := Socks9;
Socks9.Host := 'proxy.example.net';
Socks9.Port := 1080;
Socks9.Version := svSocks5;
Jeho implementace SOCKS podporuje verze 4, 4a a 5. Uspořádání TransparentProxy a komponenty HTTP CONNECT z Indye 10 nelze do tohoto staršího rozhraní jen tak vložit.
Neexistuje žádné samostatné předběžné přihlášení k proxy, které by se provádělo jiným TCP klientem. Proxy autentizace, sestavení tunelu a SMTP výměna musí patřit připojení, které komponenta SMTP skutečně používá. Když je toto zapojení správné, lze selhání lokalizovat v proxy vyjednávání, SMTP pozdravu, TLS nebo poštovní autentizaci, místo aby se každé odmítnutí považovalo za špatné poštovní heslo.