Indy SMTP байланышына прокси IOHandler бериңиз
Туура Indy версиясынын IOHandler касиеттери менен SOCKS же HTTP CONNECT ти TIdSMTP ге туташтырыңыз, почта жана прокси жөндөөлөрү өзүнчө.
Indy ичинде проксини TIdSMTP колдонгон IOHandler ге тиркеңиз. 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 колдонгон почта кардарына SSL жөндөмдүү IOHandler керек. Проксини кошуу үчүн гана бул компонентти жөнөкөй TIdIOHandlerStack менен алмаштырбаңыз.
Indy 10 ичинде SSL IOHandler негизи TIdIOHandlerStack тен тарайт жана анын прокси колдоосун мурастайт. MailTLS деп аталган бар шайкеш SSL IOHandler үчүн байланыш мындай болот:
Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;
SMTP компонентинин UseTLS жөндөөсү дагы эле почта кызматынын TLS режимин тандайт. Сертификат ишенимин жана хост атын текшерүүнү smtp.example.net үчүн TLS интеграциясында жөндөңүз, прокси хост аты үчүн эмес. Туннель кошуу өзү менен сертификат текшерүүсүн орнотпойт.
Анын ордуна 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 портундагы жөнөтүү кызматына же 25 портундагы SMTP серверине жетүү уруксатын билдирбейт.
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 версияларын колдойт. Indy 10 дун TransparentProxy жана HTTP CONNECT компонентинин жайгашуусун бул эски интерфейске жөн эле чаптоого болбойт.
Башка TCP кардары менен аткарылуучу өзүнчө алдын ала прокси кирүү жок. Прокси аутентификациясы, туннелди орнотуу жана SMTP алмашуу SMTP компоненти чындыгында колдонгон байланышка таандык болушу керек. Бул туташуу туура болсо, катаны прокси сүйлөшүүсүндө, SMTP саламдашуусунда, TLS те же почта аутентификациясында аныктоого болот, ар бир баш тартууну туура эмес почта сырсөзү деп эсептөөнүн ордуна.