Indy da proksini TIdSMTP ishlatadigan IOHandler ga ulang. TIdSMTP.Host va Port ni pochta xizmatiga qaratib turing. IOHandler ning proksi komponenti vositachi manzilini beradi va proksi qo'l siqishini shu ulanishda bajaradi.

Ishlatadigan xossa Indy versiyasiga bog'liq: Indy 9 SocksInfo ni taqdim etadi; Indy 10 TransparentProxy dan foydalanadi. Namunani faqat Delphi nashri nomiga qarab tanlamasdan, ilovadagi komponentlar kutubxonasini tekshiring.

SOCKS5 bilan Indy 10

Formada bu komponentlar allaqachon bor deb faraz qilaylik:

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

SMTP ulanishini ochishdan oldin ularni ulang va sozlang:

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 qiymatlari misol. SMTP porti ishlatmoqchi bo'lgan xizmat va TLS rejimiga mos kelishi kerak. SOCKS porti proksiga tegishli.

Ommaviy vositachiga ruxsat berilgan ruxsat etilgan ommaviy SMTP sinovi uchun SOCKS5 proksilar ro'yxati nomzod manzillarni taklif qiladi. Nomzod haqiqiy pochta xosti va portiga ruxsat berishini tasdiqlang va avvalgi proksining hisob ma'lumotlarini saqlamasdan proksi autentifikatsiyasisiz shoxdan foydalaning.

TIdSocksInfo svNoSocks bilan boshlanadi, shuning uchun faqat proksi xost nomini o'rnatish uni faollashtirmaydi. Mos SOCKS versiyasini tanlang. Agar proksi SOCKS5 foydalanuvchi nomi/parol autentifikatsiyasini talab qilsa, autentifikatsiya usuli va hisob ma'lumotlarini sozlang:

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

ProxyUser va ProxyPassword ilova taqdim etadigan qiymatlarni bildiradi. Bu xossalar proksiga autentifikatsiya qiladi. SMTP hisobi va uning autentifikatsiya usulini pochta mijozi-da alohida sozlang.

Mavjud TLS IOHandler ni saqlash

STARTTLS yoki yashirin TLS ishlatadigan pochta mijozi SSL qobiliyatiga ega IOHandler ga muhtoj. Faqat proksi qo'shish uchun bu komponentni oddiy TIdIOHandlerStack bilan almashtirmang.

Indy 10 da SSL IOHandler asosi TIdIOHandlerStack dan kelib chiqadi va uning proksi qo'llab-quvvatlashini meros oladi. MailTLS deb nomlangan mavjud mos SSL IOHandler uchun ulanish quyidagicha bo'ladi:

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

SMTP komponentining UseTLS sozlamasi hanuzgacha pochta xizmatining TLS rejimini tanlaydi. Sertifikat ishonchi va xost nomini tekshirishni smtp.example.net uchun TLS integratsiyasida sozlang, proksi xost nomi uchun emas. Tunnel qo'shish o'z-o'zidan sertifikat tekshiruvini o'rnatmaydi.

Buning o'rniga HTTP CONNECT proksidan foydalanish

Indy 10 uchun TIdConnectThroughHttpProxy komponentidan foydalaning; u IdConnectThroughHttpProxy dan mavjud. Formaga tegishli HttpTunnel deb nomlangan mavjud nusxa bor deb faraz qilib:

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

Agar SMTP MailTLS dan foydalansa, uning o'rniga HttpTunnel ni o'sha ishlovchining TransparentProxy xossasiga tayinlang. Pochta maqsadi Smtp da qoladi.

Bu komponent HTTP CONNECT tunnelini o'rnatadi va Username hamda Password xossalari orqali asosiy proksi autentifikatsiyasini amalga oshiradi. Boshqa autentifikatsiya mexanizmini talab qiladigan proksi mos amalga oshirishni talab qiladi; bu ikki xossa HTTP autentifikatsiyasining barcha sxemalarini taqdim etadi deb o'ylamang.

Proksi pochta serverining haqiqiy portiga CONNECT ga ham ruxsat berishi kerak. 443 dagi veb-serverlarga tunnel ruxsati 587 dagi topshirish xizmatiga yoki 25 dagi SMTP serveriga yetib borish ruxsatini anglatmaydi.

Indy 9 ulanishi

Indy 9 TIdIOHandlerSocket va uning SocksInfo xossasidan foydalanadi. Socket9 va Socks9 deb nomlangan formaga tegishli komponentlar bilan ekvivalent ulash:

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

Uning SOCKS amalga oshirilishi 4, 4a va 5 versiyalarini qo'llab-quvvatlaydi. Indy 10 ning TransparentProxy va HTTP CONNECT komponenti tartibini bu eski interfeysga shunchaki yopishtirib bo'lmaydi.

Boshqa TCP mijozi bilan bajariladigan alohida dastlabki proksi kirishi yo'q. Proksi autentifikatsiyasi, tunnel o'rnatish va SMTP almashinuvi SMTP komponenti haqiqatda ishlatadigan ulanishga tegishli bo'lishi kerak. Bu ulash to'g'ri bo'lsa, nosozlikni proksi muzokaralari, SMTP salomi, TLS yoki pochta autentifikatsiyasida aniqlash mumkin, har bir rad etishni noto'g'ri pochta paroli deb hisoblash o'rniga.

O'xshash maqolalar