IMAP SSL konexio bat SOCKS bidez joan daiteke, posta-zerbitzaria bere TLS bikotekide gisa mantenduz. Integrazio-puntu erabilgarria bezeroak bere garraioa sortzen duen tokia da, ohiko IMAP agurra eta gaitasunen kudeaketa hasi aurretik.

CPython 3.14rako, honakoak PySocks erabiltzen duen egokitzaile txiki bat erakusten du. Garraio-aitzindari pribatu bat gainidazten du, beraz, mantentzen ari den imaplib bertsioari lotuta eduki ezazu:

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()

Izenak eta ataka jada erabilgarri dagoen proxy eta IMAP zerbitzu baten ordezkoak dira. Proxy publikoak erabiltzeko baimena duen IMAP helmuga publiko baterako, SOCKS5 proxy zerrendak hautagaiak eskaintzen ditu; bakoitzak behar den posta ostalaria eta ataka baimendu behar ditu. PySocks mendekotasunak SOCKS negoziazioa ematen du; imaplib-ek posta saioa abiarazten jarraitzen du. Ez dago socket.socket ordezkatze globalik tartean.

Mantendu posta-zerbitzariaren identitatea

TLS ostalari-izena imap.example izaten jarraitzen du. Ez da SOCKS ostalari-izena. ssl.create_default_context() pasatzeak nahita gaitzen ditu ohiko ziurtagiri eta ostalari-izen egiaztapenak; socket zifratu bat bakarrik ez da nahikoa egiaztapen horiek ezartzeko.

proxy_rdns=True-ek SOCKS bideak helmugako ostalari-izena kudea dezan eskatzen du. Proxiak kontu bat eskatzen badu, onartzen dituen kredentzial argumentuak garraio-konfigurazio horri dagozkio. Ez dute posta-kutxan saioa hasten.

Utzi saioaren hasieratzea imaplib-i

Egokitzaileak TLS korrontea eraikitzaile arruntari itzultzen dio. Adibide zahar batetik open() berriz ezartzeak denbora-muga parametroak, bufferatzea eta beste hasieratze-itzaropen batzuk gal ditzake. CPython 3.14-n, file sarbide zaharra ere bateragarritasun-propietatea da, ez askatasunez berreraikitzeko eremua.

Liburutegia eguneratzean, berrikusi aitzindari pribatu hau dagokion iturriaren aurka. Azpiklase bat mantentzea egokia ez bada, aukeratu proxy garraio interfaze dokumentatua duen posta bezero bat. Edozein antolamenduk bereizketa bera mantendu behar du: proxy konexioa, helmugaren TLS egiaztapena, eta gero IMAP autentifikazioa.

Erlazionatutako artikuluak