ໃຫ້ການເຊື່ອມຕໍ່ SMTP ຂອງ Indy ມີ proxy IOHandler
ເຊື່ອມ SOCKS ຫຼື HTTP CONNECT ກັບ TIdSMTP ດ້ວຍຄຸນສົມບັດ IOHandler ຂອງ Indy ເວີຊັນທີ່ຖືກຕ້ອງ, ໂດຍແຍກການຕັ້ງຄ່າອີເມວ ແລະ proxy.
ໃນ Indy, ໃຫ້ຕິດ proxy ກັບ IOHandler ທີ່ TIdSMTP ໃຊ້. ຮັກສາ TIdSMTP.Host ແລະ Port ໃຫ້ຊີ້ໄປຫາບໍລິການອີເມວ. ອົງປະກອບ proxy ຂອງ IOHandler ໃຫ້ທີ່ຢູ່ຂອງຕົວກາງ ແລະ ເຮັດ handshake ຂອງ proxy ເທິງການເຊື່ອມຕໍ່ດຽວກັນ.
ຄຸນສົມບັດທີ່ທ່ານໃຊ້ຂຶ້ນກັບເວີຊັນ 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 ເປັນຂອງ proxy.
ສຳລັບການທົດສອບ SMTP ສາທາລະນະທີ່ໄດ້ຮັບອະນຸຍາດ ຊຶ່ງອະນຸຍາດໃຫ້ໃຊ້ຕົວກາງສາທາລະນະ, ລາຍການ proxy SOCKS5 ໃຫ້ທີ່ຢູ່ຜູ້ສະໝັກ. ຢືນຢັນວ່າຜູ້ສະໝັກອະນຸຍາດໂຮສ ແລະ ພອດອີເມວຕົວຈິງ, ແລະ ໃຊ້ສາຂາທີ່ບໍ່ມີການພິສູດຢືນຢັນ proxy ໂດຍບໍ່ເກັບຂໍ້ມູນປະຈຳຕົວຈາກ proxy ກ່ອນໜ້າ.
TIdSocksInfo ເລີ່ມດ້ວຍ svNoSocks, ດັ່ງນັ້ນການຕັ້ງພຽງຊື່ໂຮສ proxy ບໍ່ເຮັດໃຫ້ມັນເຮັດວຽກ. ເລືອກເວີຊັນ SOCKS ທີ່ເໝາະສົມ. ຖ້າ proxy ຕ້ອງການການພິສູດຢືນຢັນ SOCKS5 ດ້ວຍຊື່ຜູ້ໃຊ້/ລະຫັດຜ່ານ, ຕັ້ງຄ່າທັງວິທີການພິສູດຢືນຢັນ ແລະ ຂໍ້ມູນປະຈຳຕົວ:
Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;
ProxyUser ແລະ ProxyPassword ໝາຍເຖິງຄ່າທີ່ແອັບຯໃຫ້. ຄຸນສົມບັດເຫຼົ່ານີ້ພິສູດຢືນຢັນກັບ proxy. ຕັ້ງຄ່າບັນຊີ SMTP ແລະ ວິທີການພິສູດຢືນຢັນຂອງມັນແຍກຕ່າງຫາກໃນໂປຣແກຣມອີເມວ.
ຮັກສາ IOHandler TLS ທີ່ມີຢູ່
ໂປຣແກຣມອີເມວທີ່ໃຊ້ STARTTLS ຫຼື TLS ແບບຊ່ອນ ຕ້ອງການ IOHandler ທີ່ຮອງຮັບ SSL ຂອງມັນ. ຢ່າປ່ຽນອົງປະກອບນັ້ນດ້ວຍ TIdIOHandlerStack ທຳມະດາ ພຽງເພື່ອເພີ່ມ proxy.
ໃນ Indy 10 ພື້ນຖານ IOHandler SSL ມາຈາກ TIdIOHandlerStack ແລະ ຮັບມໍລະດົກການຮອງຮັບ proxy ຂອງມັນ. ສຳລັບ IOHandler SSL ທີ່ເຂົ້າກັນໄດ້ທີ່ມີຢູ່ຊື່ MailTLS, ການເຊື່ອມຕໍ່ຈະເປັນ:
Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;
ການຕັ້ງຄ່າ UseTLS ຂອງອົງປະກອບ SMTP ຍັງເລືອກໂໝດ TLS ຂອງບໍລິການອີເມວ. ຕັ້ງຄ່າຄວາມໄວ້ວາງໃຈໃນໃບຮັບຮອງ ແລະ ການກວດສອບຊື່ໂຮສໃນການລວມ TLS ສຳລັບ smtp.example.net, ບໍ່ແມ່ນສຳລັບຊື່ໂຮສ proxy. ການເພີ່ມອຸໂມງບໍ່ໄດ້ສ້າງການກວດສອບໃບຮັບຮອງດ້ວຍຕົວມັນເອງ.
ໃຊ້ proxy 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 ແລະ ຈັດຕັ້ງການພິສູດຢືນຢັນ proxy ຂັ້ນພື້ນຖານຜ່ານຄຸນສົມບັດ Username ແລະ Password ຂອງມັນ. proxy ທີ່ຕ້ອງການກົນໄກພິສູດຢືນຢັນອື່ນ ຕ້ອງການການຈັດຕັ້ງທີ່ເຂົ້າກັນໄດ້; ຢ່າສົມມຸດວ່າສອງຄຸນສົມບັດນີ້ໃຫ້ທຸກຮູບແບບການພິສູດຢືນຢັນ HTTP.
proxy ຍັງຕ້ອງອະນຸຍາດ 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 ບໍ່ສາມາດວາງທັບລົງໃນອິນເຕີເຟສເກົ່ານີ້ໄດ້ໂດຍກົງ.
ບໍ່ມີການເຂົ້າສູ່ proxy ເບື້ອງຕົ້ນແຍກຕ່າງຫາກທີ່ຕ້ອງເຮັດກັບ TCP client ອື່ນ. ການພິສູດຢືນຢັນ proxy, ການຕັ້ງອຸໂມງ ແລະ ການແລກປ່ຽນ SMTP ຕ້ອງເປັນຂອງການເຊື່ອມຕໍ່ທີ່ອົງປະກອບ SMTP ໃຊ້ຕົວຈິງ. ເມື່ອການເຊື່ອມຕໍ່ນັ້ນຖືກຕ້ອງ, ຄວາມຜິດພາດສາມາດຖືກກຳນົດຢູ່ການເຈລະຈາ proxy, ການທັກທາຍ SMTP, TLS ຫຼືການພິສູດຢືນຢັນອີເມວ, ແທນທີ່ຈະຖືວ່າທຸກການປະຕິເສດເປັນລະຫັດຜ່ານອີເມວຜິດ.