Gall cysylltiad IMAP SSL deithio trwy SOCKS wrth gadw'r gweinydd post fel ei gymar TLS. Y man integreiddio defnyddiol yw lle mae'r cleient yn creu ei gludydd, cyn i'r cyfarchiad IMAP arferol a'r trin galluoedd ddechrau.

Ar gyfer CPython 3.14, mae'r canlynol yn dangos addasydd bach sy'n defnyddio PySocks. Mae'n diystyru bachyn cludo preifat, felly cadwch ef ynghlwm wrth y fersiwn imaplib sy'n cael ei chynnal:

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

Mae'r enwau a'r porth yn dalfannau ar gyfer gweinydd dirprwy a gwasanaeth IMAP sydd eisoes ar gael. Ar gyfer cyrchfan IMAP gyhoeddus y caniateir iddi ddefnyddio gweinyddwyr dirprwy cyhoeddus, mae'r rhestr gweinyddwyr dirprwy SOCKS5 yn cynnig ymgeiswyr; rhaid i bob un ganiatáu'r gwesteiwr post a'r porth gofynnol. Mae dibyniaeth PySocks yn darparu trafodaeth SOCKS; mae imaplib yn dal i gychwyn y sesiwn post. Nid oes unrhyw ddisodliad byd-eang o socket.socket yn gysylltiedig.

Cadwch hunaniaeth y gweinydd post

Mae enw gwesteiwr TLS yn parhau i fod imap.example. Nid dyma enw gwesteiwr SOCKS. Mae trosglwyddo ssl.create_default_context() yn bwriadol yn galluogi'r gwiriadau tystysgrif ac enw gwesteiwr arferol; nid yw soced amgryptiedig yn unig yn ddigon i sefydlu'r gwiriadau hynny.

Mae proxy_rdns=True yn gofyn i'r llwybr SOCKS drin enw gwesteiwr y gyrchfan. Os yw'r dirprwy yn gofyn am gyfrif, mae ei ddadleuon cyfrifoldeb a gefnogir yn perthyn i'r ffurfweddiad cludo hwnnw. Nid ydynt yn mewngofnodi i'r blwch post.

Gadewch gychwyn y sesiwn i imaplib

Mae'r addasydd yn dychwelyd y ffrwd TLS i'r adeiladydd arferol. Gall ailosod open() o enghraifft hen fod yn colli paramedrau terfyn amser, byffro a disgwyliadau cychwyn eraill. Yn CPython 3.14, mae hyd yn oed y mynediad file etifeddol yn briodwedd cydnawsedd yn hytrach na maes i'w ailadeiladu'n rhydd.

Wrth uwchraddio'r llyfrgell, adolygwch y bachyn preifat hwn yn erbyn y ffynhonnell gyfatebol. Os nad yw cynnal is-ddosbarth yn addas, dewiswch gleient post â rhyngwyneb cludo dirprwy wedi'i ddogfennu. Dylai unrhyw drefniant gadw'r un gwahanu: cysylltiad dirprwy, gwirio TLS y gyrchfan, yna dilysu IMAP.

Erthyglau cysylltiedig