CPython 3.14 imaplib ta SOCKS tare da tabbataccen TLS
Daidaita haɗin IMAP SSL na CPython 3.14 ta SOCKS ba tare da maye gurbin soket a duniya ba ko rasa asalin TLS na sabar wasiƙa ba.
Haɗin IMAP SSL na iya wucewa ta SOCKS yayin da sabar wasiƙa ta kasance abokiyar TLS ɗinsa. Wurin haɗin da ke da amfani shi ne inda abokin ciniki ke ƙirƙirar jigilarsa, kafin gaisuwar IMAP ta yau da kullum da sarrafa iyawa su fara.
Don CPython 3.14, mai zuwa yana nuna ƙaramin adafta da ke amfani da PySocks. Yana wuce ƙugiyar jigila ta sirri, don haka riƙe shi da sigar imaplib da ake kula da ita:
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()Sunayen da tashar jiragen ruwa misalai ne na wakili da sabis ɗin IMAP da suka riga sun wanzu. Don makomar IMAP ta jama'a da aka ba da izinin amfani da wakilai na jama'a, jerin wakilan SOCKS5 yana ba da 'yan takara; kowanne dole ya ba da izinin uwar garken wasiƙa da tashar da ake buƙata. Dogaro da PySocks yana bayar da tattaunawar SOCKS; imaplib har yanzu yana fara zaman wasiƙa. Babu wani maye gurbin socket.socket na duniya da ke ciki.
Kiyaye asalin sabar wasiƙa
Sunan uwar garken TLS ya kasance imap.example. Ba sunan uwar garken SOCKS ba ne. Wucewar ssl.create_default_context() da gangan yana kunna binciken takardar shaida da sunan uwar garken na yau da kullum; soket ɗin da aka ɓoye shi kaɗai bai isa ya kafa waɗannan binciken ba.
proxy_rdns=True yana neman hanyar SOCKS ta sarrafa sunan uwar garken manufa. Idan wakilin yana buƙatar asusu, hujjojin shaidar da yake tallafawa na cikin wannan tsarin jigila ne. Ba sa shiga akwatin wasiƙa.
Bar farawar zaman ga imaplib
Adaftan yana mayar da rafin TLS ga maginin yau da kullum. Sake aiwatar da open() daga tsohon misali na iya rasa sigogin ƙayyadadden lokaci, adanawa da sauran tsammanin farawa. A cikin CPython 3.14, har ma da tsohuwar hanyar file dukiya ce ta dacewa ba filin da za a sake gina shi cikin 'yanci ba.
Lokacin haɓaka ɗakin karatu, sake duba wannan ƙugiya ta sirri da maɓallin da ya dace. Idan kula da wani aji na ƙasa bai dace ba, zaɓi abokin ciniki na wasiƙa mai rubutaccen mu'amalar jigilar wakili. Duk wani tsari ya kamata ya kiyaye irin wannan rabuwa: haɗin wakili, tabbatar da TLS na manufa, sannan tabbatar da IMAP.