CPython 3.14 imaplib ຜ່ານ SOCKS ກັບ TLS ທີ່ຢືນຢັນແລ້ວ
ປັບການເຊື່ອມຕໍ່ IMAP SSL ຂອງ CPython 3.14 ຜ່ານ SOCKS ໂດຍບໍ່ປ່ຽນຊັອກເກັດທົ່ວໂລກ ຫຼື ບໍ່ສູນເສຍຕົວຕົນ TLS ຂອງເຊີບເວີເມລ.
ການເຊື່ອມຕໍ່ IMAP SSL ສາມາດເດີນທາງຜ່ານ SOCKS ໃນຂະນະທີ່ຮັກສາເຊີບເວີເມລເປັນຄູ່ TLS ຂອງມັນ. ຈຸດເຊື່ອມໂຍງທີ່ເປັນປະໂຫຍດແມ່ນບ່ອນທີ່ລູກຄ້າສ້າງການຂົນສົ່ງຂອງຕົນ ກ່ອນການທັກທາຍ IMAP ປົກກະຕິ ແລະ ການຈັດການຄວາມສາມາດຈະເລີ່ມ.
ສຳລັບ CPython 3.14 ຂ້າງລຸ່ມນີ້ສະແດງອາດາປເຕີນ້ອຍໆທີ່ໃຊ້ PySocks. ມັນຂຽນທັບຕະຂໍການຂົນສົ່ງສ່ວນຕົວ ດັ່ງນັ້ນຈົ່ງຜູກມັນໄວ້ກັບສະບັບ imaplib ທີ່ກຳລັງບຳລຸງຮັກສາ:
import imaplib
import ssl
import socks
class SocksIMAP4SSL(imaplib.IMAP4_SSL):
def _create_socket(self, timeout):
stream = socks.create_connection(
(self.host, self.port),
timeout=timeout,
proxy_type=socks.SOCKS5,
proxy_addr="proxy.example",
proxy_port=1080,
proxy_rdns=True,
)
try:
return self.ssl_context.wrap_socket(
stream, server_hostname=self.host)
except Exception:
stream.close()
raise
context = ssl.create_default_context()
with SocksIMAP4SSL("imap.example", ssl_context=context,
timeout=15) as mailbox:
mailbox.noop()ຊື່ ແລະ ພອດແມ່ນບ່ອນວ່າງສຳລັບພຣັອກຊີ ແລະ ບໍລິການ IMAP ທີ່ມີຢູ່ແລ້ວ. ສຳລັບປາຍທາງ IMAP ສາທາລະນະທີ່ໄດ້ຮັບອະນຸຍາດໃຫ້ໃຊ້ພຣັອກຊີສາທາລະນະ ລາຍຊື່ພຣັອກຊີ SOCKS5 ສະເໜີຜູ້ສະໝັກ; ແຕ່ລະອັນຕ້ອງອະນຸຍາດໂຮສເມລ ແລະ ພອດທີ່ຕ້ອງການ. ການເພິ່ງພາ PySocks ໃຫ້ການເຈລະຈາ SOCKS; imaplib ຍັງເລີ່ມເຊສຊັນເມລ. ບໍ່ມີການປ່ຽນແທນ socket.socket ທົ່ວໂລກໃດໆທີ່ກ່ຽວຂ້ອງ.
ຮັກສາຕົວຕົນຂອງເຊີບເວີເມລ
ຊື່ໂຮສ TLS ຍັງຄົງເປັນ imap.example. ມັນບໍ່ແມ່ນຊື່ໂຮສ SOCKS. ການສົ່ງ ssl.create_default_context() ເປີດໃຊ້ການກວດສອບໃບຮັບຮອງ ແລະ ຊື່ໂຮສປົກກະຕິຢ່າງເຈດຕະນາ; ຊັອກເກັດທີ່ເຂົ້າລະຫັດແລ້ວຢ່າງດຽວບໍ່ພຽງພໍທີ່ຈະສ້າງການກວດສອບເຫຼົ່ານັ້ນ.
proxy_rdns=True ຂໍໃຫ້ ເສັ້ນທາງ SOCKS ຈັດການຊື່ໂຮສປາຍທາງ. ຖ້າພຣັອກຊີຕ້ອງການບັນຊີ ອາກູເມັນຂໍ້ມູນປະຈຳຕົວທີ່ຮອງຮັບເປັນຂອງການຕັ້ງຄ່າການຂົນສົ່ງນັ້ນ. ພວກມັນບໍ່ເຂົ້າສູ່ກ່ອງຈົດໝາຍ.
ປ່ອຍໃຫ້ imaplib ເລີ່ມເຊສຊັນ
ອາດາປເຕີສົ່ງກະແສ TLS ກັບຄືນໃຫ້ຕົວສ້າງປົກກະຕິ. ການຈັດຕັ້ງ open() ຄືນໃໝ່ຈາກຕົວຢ່າງເກົ່າອາດພາດພາລາມິເຕີເວລາ ການບັຟເຟີ ແລະ ຄວາມຄາດຫວັງການເລີ່ມຕົ້ນອື່ນໆ. ໃນ CPython 3.14 ແມ່ນແຕ່ການເຂົ້າເຖິງ file ແບບເກົ່າກໍ່ເປັນຄຸນສົມບັດຄວາມເຂົ້າກັນ ບໍ່ແມ່ນຟິນທີ່ຈະສ້າງຄືນຢ່າງເສລີ.
ເມື່ອອັບເກຣດຫ້ອງສະໝຸດ ຈົ່ງທົບທວນຕະຂໍສ່ວນຕົວນີ້ທຽບກັບແຫຼ່ງທີ່ກົງກັນ. ຖ້າການບຳລຸງຮັກສາຊັ້ນຍ່ອຍບໍ່ເໝາະສົມ ໃຫ້ເລືອກລູກຄ້າເມລທີ່ມີສ່ວນຕິດຕໍ່ການຂົນສົ່ງພຣັອກຊີທີ່ມີເອກະສານ. ການຈັດລຽງໃດໆຄວນຮັກສາການແຍກດຽວກັນ: ການເຊື່ອມຕໍ່ພຣັອກຊີ ການຢືນຢັນ TLS ຂອງປາຍທາງ ແລ້ວຈຶ່ງຢືນຢັນ IMAP.