IMAP SSL-tenging getur ferðast í gegnum SOCKS og haldið póstþjóninum sem TLS-mótaðila sínum. Nothæfur samþættingarpunktur er þar sem biðlarinn býr til flutning sinn, áður en venjulega IMAP-kveðjan og meðferð getu hefst.

Fyrir CPython 3.14 sýnir eftirfarandi lítinn millistykki sem notar PySocks. Hann hnekkir einkarekinni flutningskrók, svo haltu honum tengdum við imaplib-útgáfuna sem er viðhaldið:

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öfnin og gáttin eru staðgenglar fyrir þegar tiltæka umboðsþjónustu og IMAP-þjónustu. Fyrir opinbera IMAP-áfangastað sem hefur leyfi til að nota opinberar umboðsþjónustur býður SOCKS5-umboðslistinn upp á frambjóðendur; hver þeirra verður að leyfa nauðsynlega póstvél og gátt. PySocks-háðin veitir SOCKS-samningaviðræður; imaplib frumstillir samt póstlotuna. Engin alþjóðleg socket.socket-skipti koma við sögu.

Varðveittu identitet póstþjónsins

TLS-vélarheitið helst imap.example. Það er ekki SOCKS-vélarheitið. Að senda ssl.create_default_context() virkjar viljandi venjulegu vottorðs- og vélarheitisathuganirnar; dulkóðuð sokka ein og sér nægir ekki til að koma þeim athugunum á fót.

proxy_rdns=True biður SOCKS-slóðina að annast vélarheiti áfangastaðar. Ef umboðsþjónustan krefst reiknings tilheyra studdu auðkennisrök hennar þeirri flutningsstillingu. Þau skrá sig ekki inn í pósthólfið.

Leyfðu imaplib að frumstilla lotuna

Millistykkið skilar TLS-straumnum til venjulega smiðsins. Að endurútfæra open() úr gamalli sýn getur misst tímannörk, biðminni og aðrar frumstillingarventingar. Í CPython 3.14 er jafnvel gamla file-aðgangurinn samhæfiseiginleiki en ekki svið til að endurbyggja frjálst.

Við uppfærslu bókasafnsins skaltu fara yfir þennan einkakrók gegn samsvarandi frumkóða. Ef viðhald undirklasa hentar ekki, veldu póstbiðlara með skjalfestu flutningsviðmóti fyrir umboð. Hvaða fyrirkomulag sem er ætti að varðveita sömu aðskilnað: umboðstenging, TLS-staðfesting áfangastaðar, þá IMAP-auðkenning.

Tengdir greinar