CPython 3.14 imaplib gjøgnum SOCKS við váttaðum TLS
Tillaga eina CPython 3.14 IMAP SSL-samband gjøgnum SOCKS uttan at skifta sockets altjóða út ella at missa TLS-sjálvvirði telduposttænarans.
Eitt IMAP SSL-samband kann ferðast gjøgnum SOCKS og varðveita telduposttænaran sum sín TLS-mótpart. Tann nyttigi integratingarpunkturin er har, sum klienturin skapar sín transport, áðrenn vanliga IMAP-heilsingin og hægisleikameðferðin byrjar.
Fyri CPython 3.14 vísir tað fylgjandi ein lítlan adaptara, sum brúkar PySocks. Hann yvirstýrir ein privatan transportkrók, so hald hann bundnan at tí imaplib-versjónini, sum verður hildin við lívi:
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()Nøvnini og porturin eru staðsetningar fyri longu tøkan proxy og IMAP-tænastu. Fyri eitt alment IMAP-mál, sum hevur loyvi at brúka almennar proxyar, bjóðar SOCKS5-proxylistin fram boð; hvør má loyva tí neyðuga teldupósti-vertinum og portinum. PySocks-treytan veitir SOCKS-samráðing; imaplib byrjar framvegis teldupóstsetuna. Eingin altjóða socket.socket-avloysing er við.
Varðveit sjálvvirði telduposttænarans
TLS-vertsnøvnið verður verandi imap.example. Tað er ikki SOCKS-vertsnøvnið. At senda ssl.create_default_context() ger við vilja vanligu skjalprógv- og vertsnøvniskanningarnar virknar; ein bara krypterað socket er ikki nóg mikið at staðfesta tær kanningarnar.
proxy_rdns=True biður SOCKS-leiðina um at viðgera málsvertsnøvnið. Um proxyin krevur eina konto, hoyra tær stuðlaðu skilríkisargumentini til ta transportskipanina. Tær rita ikki inn í teldupóstkassan.
Lat setu-byrjan verða hjá imaplib
Adaptarin letur TLS-streymin aftur til vanliga byggjaran. At endurgera open() frá einum gomlum dømi kann missa tíðarmarkparametrar, buffering og aðrar byrjunarvæntingar. Í CPython 3.14 er enntá tann gamla file-atgongdin ein samsvarandi eginleiki og ikki eitt felt, sum frítt kann endurgerast.
Tá bókasavnið verður dagført, endurskoða henda privata krókin móti tí samsvarandi keldu. Um at halda ein undirflokk við lívi ikki hóskar, vel ein teldupóstklient við einum skjalfestum proxy-transportgrænseflata. Hvør skipan eigur at varðveita somu skifting: proxy-samband, TLS-váttan av málinum, síðani IMAP-autentisering.