Дајте му на SMTP поврзувањето на Indy прокси IOHandler
Поврзете SOCKS или HTTP CONNECT со TIdSMTP преку својствата IOHandler на точната верзија на Indy, со одделни поставки за пошта и прокси.
Во Indy, прикачете го проксито на IOHandler што го користи TIdSMTP. Држете ги TIdSMTP.Host и Port насочени кон поштенската услуга. Прокси компонентата на IOHandler ја дава адресата на посредникот и го извршува прокси ракувањето на истото поврзување.
Својството што го користите зависи од верзијата на Indy: Indy 9 го изложува SocksInfo; Indy 10 го користи TransparentProxy. Проверете ја библиотеката со компоненти во апликацијата наместо да избирате пример само според името на изданието на Delphi.
Indy 10 со SOCKS5
Да претпоставиме дека формата веќе ги има овие компоненти:
Smtp: TIdSMTPMailSocket: TIdIOHandlerStackSocks: TIdSocksInfo
Поврзете ги и конфигурирајте ги пред да го отворите SMTP поврзувањето:
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;
Вредностите на портите се примери. SMTP портата мора да одговара на услугата и TLS режимот што имате намера да го користите. SOCKS портата му припаѓа на проксито.
За дозволен јавен SMTP тест каде што е дозволен јавен посредник, списокот на SOCKS5 прокси нуди кандидат адреси. Потврдете дека кандидатот го дозволува вистинскиот поштенски домаќин и порта, и користете ја гранката без прокси автентикација без да ги задржите акредитивите од претходно прокси.
TIdSocksInfo започнува со svNoSocks, така што само поставување име на прокси домаќин не го активира. Изберете соодветна верзија на SOCKS. Ако проксито бара SOCKS5 автентикација со корисничко име/лозинка, конфигурирајте и методот на автентикација и акредитивите:
Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;
ProxyUser и ProxyPassword претставуваат вредности што ги дава апликацијата. Овие својства се автентицираат кон проксито. Конфигурирајте ја SMTP сметката и нејзиниот метод на автентикација одделно во поштенскиот клиент.
Задржување на постоечки TLS IOHandler
Поштенски клиент што користи STARTTLS или имплицитен TLS бара свој IOHandler способен за SSL. Не заменувајте ја таа компонента со обичен TIdIOHandlerStack само за да го додадете проксито.
Во Indy 10, основата на SSL IOHandler потекнува од TIdIOHandlerStack и ја наследува неговата прокси поддршка. За постоечки компатибилен SSL IOHandler наречен MailTLS, поврзувањето станува:
Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;
Поставката UseTLS на SMTP компонентата сè уште го избира TLS режимот на поштенската услуга. Конфигурирајте доверба на сертификатот и валидација на името на домаќинот во TLS интеграцијата за smtp.example.net, а не за името на прокси домаќинот. Додавањето тунел само по себе не воспоставува валидација на сертификат.
Користење HTTP CONNECT прокси наместо тоа
За Indy 10, користете компонента TIdConnectThroughHttpProxy, достапна од IdConnectThroughHttpProxy. Претпоставувајќи постоечка инстанца во сопственост на формата наречена HttpTunnel:
HttpTunnel.Host := 'proxy.example.net';
HttpTunnel.Port := 8080;
HttpTunnel.Enabled := True;
MailSocket.TransparentProxy := HttpTunnel;
Ако SMTP користи MailTLS, доделете го HttpTunnel на својството TransparentProxy на тој ракувач. Поштенската цел останува на Smtp.
Оваа компонента воспоставува HTTP CONNECT тунел и спроведува основна прокси автентикација преку своите својства Username и Password. Прокси што бара друг механизам за автентикација бара компатибилна имплементација; не претпоставувајте дека овие две својства ги обезбедуваат сите HTTP шеми за автентикација.
Проксито исто така мора да дозволува CONNECT до вистинската порта на поштенскиот сервер. Дозволата за тунел до веб сервери на 443 не значи дозвола да се стигне до услуга за поднесување на 587 или SMTP сервер на 25.
Поврзувањето во Indy 9
Indy 9 користи TIdIOHandlerSocket и неговото својство SocksInfo. Со компоненти во сопственост на формата наречени Socket9 и Socks9, еквивалентното поврзување е:
Smtp.IOHandler := Socket9;
Socket9.SocksInfo := Socks9;
Socks9.Host := 'proxy.example.net';
Socks9.Port := 1080;
Socks9.Version := svSocks5;
Неговата SOCKS имплементација поддржува верзии 4, 4a и 5. Распоредот TransparentProxy и HTTP CONNECT компонентата од Indy 10 не може едноставно да се залепи во ова постаро интерфејс.
Нема одделно прелиминарно најавување на проксито што треба да се изврши со друг TCP клиент. Прокси автентикацијата, поставувањето тунел и SMTP размената мора да припаѓаат на поврзувањето што SMTP компонентата навистина го користи. Кога тоа поврзување е точно, дефектот може да се лоцира при прокси преговарањето, SMTP поздравот, TLS или поштенската автентикација, наместо секое одбивање да се смета за лоша поштенска лозинка.