Indy-də proxy-ni TIdSMTP istifadə edən IOHandler-ə qoşun. TIdSMTP.Host və Port poçt xidmətinə yönəlsin. IOHandler-in proxy komponenti vasitəçinin ünvanını təqdim edir və proxy əl sıxmasını həmin bağlantı üzərində yerinə yetirir.

İstifadə etdiyiniz xassə Indy versiyasından asılıdır: Indy 9 SocksInfo təqdim edir; Indy 10 isə TransparentProxy istifadə edir. Nümunəni yalnız Delphi buraxılışının adına görə seçmək əvəzinə tətbiqdəki komponent kitabxanasını yoxlayın.

SOCKS5 ilə Indy 10

Tutaq ki, formada artıq bu komponentlər var:

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

SMTP bağlantısını açmazdan əvvəl onları qoşun və konfiqurasiya edin:

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;

Port dəyərləri nümunədir. SMTP portu istifadə etmək istədiyiniz xidmətə və TLS rejiminə uyğun olmalıdır. SOCKS portu proxy-yə aiddir.

Ümumi vasitəçiyə icazə verilən icazəli ictimai SMTP testi üçün SOCKS5 proxy siyahısı namizəd ünvanlar təklif edir. Namizədin faktiki poçt hostuna və portuna icazə verdiyini təsdiqləyin və əvvəlki proxy-dən etimad məlumatlarını saxlamadan proxy-autentifikasiyasız budaqdan istifadə edin.

TIdSocksInfo svNoSocks ilə başlayır, ona görə yalnız proxy host adını təyin etmək onu aktivləşdirmir. Uyğun SOCKS versiyasını seçin. Proxy SOCKS5 istifadəçi adı/parol autentifikasiyası tələb edirsə, etimad məlumatları ilə yanaşı autentifikasiya metodunu da konfiqurasiya edin:

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

ProxyUser və ProxyPassword tətbiq tərəfindən verilən dəyərləri təmsil edir. Bu xassələr proxy-yə autentifikasiya edir. SMTP hesabını və onun autentifikasiya metodunu poçt müştərisində ayrıca konfiqurasiya edin.

Mövcud TLS IOHandler-in saxlanması

STARTTLS və ya gizli TLS istifadə edən poçt müştərisinə SSL qabiliyyətli IOHandler lazımdır. Yalnız proxy əlavə etmək üçün həmin komponenti adi TIdIOHandlerStack ilə əvəz etməyin.

Indy 10-da SSL IOHandler bazası TIdIOHandlerStack-dən törəyir və onun proxy dəstəyini miras alır. MailTLS adlı mövcud uyğun SSL IOHandler üçün bağlantı belə olur:

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

SMTP komponentinin UseTLS parametri yenə də poçt xidmətinin TLS rejimini seçir. Sertifikat etimadını və host adı yoxlamasını smtp.example.net üçün TLS inteqrasiyasında konfiqurasiya edin, proxy host adı üçün yox. Tunel əlavə etmək özlüyündə sertifikat yoxlaması yaratmır.

Əvəzində HTTP CONNECT proxy istifadəsi

Indy 10 üçün TIdConnectThroughHttpProxy komponentindən istifadə edin; bu komponent IdConnectThroughHttpProxy vahidindən mövcuddur. Formaya məxsus HttpTunnel adlı mövcud nüsxə olduğunu fərz edərək:

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

SMTP MailTLS istifadə edirsə, əvəzində HttpTunnel-i həmin handler-in TransparentProxy xassəsinə təyin edin. Poçt hədəfi Smtp üzərində qalır.

Bu komponent HTTP CONNECT tuneli qurur və Username və Password xassələri vasitəsilə əsas proxy autentifikasiyasını tətbiq edir. Başqa autentifikasiya mexanizmi tələb edən proxy uyğun tətbiqə ehtiyac duyur; bu iki xassənin bütün HTTP autentifikasiya sxemlərini təmin etdiyini düşünməyin.

Proxy həmçinin poçt serverinin faktiki portuna CONNECT-ə icazə verməlidir. 443-də veb serverlərə tunel icazəsi 587-də göndərmə xidmətinə və ya 25-də SMTP serverinə çıxış icazəsi demək deyil.

Indy 9 bağlantısı

Indy 9 TIdIOHandlerSocket və onun SocksInfo xassəsindən istifadə edir. Socket9 və Socks9 adlı formaya məxsus komponentlərlə ekvivalent qoşulma belədir:

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

Onun SOCKS tətbiqi 4, 4a və 5 versiyalarını dəstəkləyir. Indy 10-un TransparentProxy və HTTP CONNECT komponent düzümünü bu köhnə interfeysə sadəcə yapışdırmaq olmaz.

Başqa TCP müştərisi ilə yerinə yetiriləcək ayrıca ilkin proxy girişi yoxdur. Proxy autentifikasiyası, tunel qurulması və SMTP mübadiləsi SMTP komponentinin faktiki istifadə etdiyi bağlantıya aid olmalıdır. Bu qoşulma düzgün olduqda, nasazlıq proxy danışıqlarında, SMTP salamlamasında, TLS-də və ya poçt autentifikasiyasında tapıla bilər; hər imtinaya pis poçt parolu kimi baxmaq əvəzinə.

Əlaqəli məqalələr