Net::SMTP 3.16 ບໍ່ມີຕົວສ້າງ SOCKS ທີ່ເຊື່ອມຕໍ່ກ່ອນ
Net::SMTP 3.16 ບໍ່ໄດ້ເອກະສານທາງເລືອກຕົວສ້າງສຳລັບຊອກເກັດທີ່ເຊື່ອມຕໍ່ກ່ອນ. ຮັກສາຄຳທັກທາຍ SMTP, EHLO ແລະລຳດັບ TLS ໄວ້ຄືເກົ່າເມື່ອເລືອກການເຊື່ອມໂຍງການຂົນສົ່ງຜ່ານພຣັອກຊີ.
Net::SMTP 3.16 ບໍ່ໄດ້ເອກະສານພາລາມິເຕີຕົວສ້າງຂອງ SOCKS ຫຼືຊອກເກັດທີ່ເຊື່ອມຕໍ່ກ່ອນ. ການຫໍ່ຕົວພັນລະນາໄຟລ໌ດ້ວຍ new_from_fd ທີ່ສືບທອດມາບໍ່ໄດ້ເຮັດໃຫ້ຕົວສ້າງ SMTP ຂອງມັນເຮັດວຽກ. ການເຊື່ອມຕໍ່ SOCKS ທີ່ສຳເລັດໃຫ້ສະຕຣີມ ບໍ່ແມ່ນເຊສຊັນອີເມວທີ່ເລີ່ມຕົ້ນແລ້ວ.
ສຳລັບ SMTP ທຳມະດາ, ລວມທັງການຍົກລະດັບ STARTTLS ພາຍຫຼັງ, ເຊີບເວີເປັນຝ່າຍເວົ້າກ່ອນ:
SOCKS: connection to smtp.example.net:587 succeeds
server: 220 smtp.example.net ready
client: EHLO client.example.net
server: 250-smtp.example.net
server: 250-STARTTLS
server: 250 AUTH ...ນີ້ເປັນພຽງແຜນວາດ; ສ່ວນຂະຫຍາຍທີ່ປະກາດແຕກຕ່າງກັນ. ຄຳທັກທາຍເອງອາດກວມຫຼາຍແຖວ: ລະຫັດຕອບທີ່ຕາມດ້ວຍເຄື່ອງໝາຍຂີດຈະສືບຕໍ່ຄຳຕອບ, ສ່ວນແຖວສຸດທ້າຍຈະປິດມັນ. ບໍລິໂພກຄຳທັກທາຍທັງໝົດກ່ອນ EHLO. ຖ້າບໍ່ດັ່ງນັ້ນ ລູກຄ້າອາດອ່ານ 220 ເກົ່າໃນຂະນະທີ່ລໍຖ້າ 250 ຂອງ EHLO ແລະອອກຈາກຈັງຫວະໃນການເຊື່ອມຕໍ່ທີ່ດີ.
TLS ແບບຊຸມຊ້ອນມີລຳດັບອື່ນ: ການເຊື່ອມຕໍ່ SOCKS, ການຈັບມື TLS, ແລ້ວຄຳທັກທາຍ SMTP ພາຍໃນ TLS. STARTTLS ເລີ່ມດ້ວຍຄຳທັກທາຍທີ່ອ່ານໄດ້ແລະ EHLO, ຍົກລະດັບສະຕຣີມ ແລະໄດ້ຄວາມສາມາດຄືນໃໝ່ຫຼັງຈາກນັ້ນ.
ຕົວສ້າງສາທາລະນະໂດຍປົກກະຕິຈັດການການຕັ້ງຄ່າຊອກເກັດ, ພາລາມິເຕີການເຊື່ອມຕໍ່ທີ່ເກັບໄວ້ ແລະຂໍ້ມູນຄຳທັກທາຍ, ຄຳຕອບເບື້ອງຕົ້ນ ແລະ EHLO ພ້ອມການຖອຍຫຼັງໄປ HELO ເມື່ອເໝາະສົມ:
use Net::SMTP;
my $smtp = Net::SMTP->new(
'smtp.example.net',
Port => 587,
Hello => 'client.example.net',
Timeout => 30,
) or die "SMTP connection failed: $@";
$smtp->starttls()
or die "STARTTLS failed: " . $smtp->message;ຕົວຢ່າງສາທາລະນະນີ້ໃຊ້ STARTTLS ແລະບໍ່ໄດ້ຕັ້ງຄ່າ SOCKS. ຊື່ເຊີບເວີເລືອກປາຍທາງອີເມວ; Hello ໃຫ້ຕົວຕົນ SMTP ຂອງລູກຄ້າ. ສຳລັບ TLS ແບບຊຸມຊ້ອນ ໃຫ້ໃຊ້ທາງເລືອກຕົວສ້າງ SSL ທີ່ມີເອກະສານ ແລະພອດຂອງບໍລິການ.
SendHello => 0 ຍັບຍັ້ງ EHLO/HELO ອັດຕະໂນມັດ ບໍ່ແມ່ນການອ່ານຄຳທັກທາຍ ຫຼືການສ້າງການຂົນສົ່ງ. ການເອີ້ນຕົວອ່ານແຖວແລ້ວ hello() ກໍບໍ່ແມ່ນການທົດແທນການເລີ່ມຕົ້ນທີ່ມີເອກະສານ: Net::Cmd ຈັດປະເພດຕົວອ່ານຄຳຕອບລະດັບຕ່ຳຂອງມັນເປັນວິທີການຊັ້ນຍ່ອຍທີ່ຖືກປ້ອງກັນ.
ຖ້າ SOCKS ເປັນພາກບັງຄັບ ໃຫ້ເລືອກລູກຄ້າທີ່ມີສ່ວນຕໍ່ປະສານ SOCKS ທີ່ຮອງຮັບ ຫຼືຮັກສາການເຊື່ອມໂຍງກັບ Net::SMTP ສະບັບສະເພາະ. ໃຫ້ໃຊ້ລຳດັບຂ້າງເທິງເປັນສັນຍາຂອງມັນ ແທນທີ່ຈະສຳເນົາຟິວສ່ວນຕົວ. ອະແດັບເຕີ TCP ແຍກຕ່າງຫາກກໍຕ້ອງມີການຈັດການຕົວຕົນ TLS ຢ່າງຕັ້ງໃຈ: ໃບຮັບຮອງຕ້ອງລະບຸບໍລິການອີເມວທີ່ແທ້ຈິງ ແລະຂໍ້ມູນປະກອບພຣັອກຊີຍັງແຍກຈາກການເຂົ້າສູ່ລະບົບ SMTP.