Ukuxhumana kwe-IMAP SSL kungahamba nge-SOCKS kuyilapho isiphakeli se-imeyili sihlala singumlingani waso we-TLS. Iphuzu lokuhlanganisa eliwusizo yilapho iklayenti lakha khona ezokuthutha, ngaphambi kokuba kuqale ukubingelela kwe-IMAP okuvamile nokuphathwa kwamakhono.

Kwe-CPython 3.14, okulandelayo kubonisa i-adaptha encane esebenzisa i-PySocks. Ijikisa ihuku lezokuthutha eliyimfihlo, ngakho liyibophe ekubeni ihambisane nenguqulo ye-imaplib enakekelwayo:

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

Amagama kanye ne-port kuyizindawo zokubambela ze-proxy kanye nensizakalo ye-IMAP esivele ikhona. Ukuze kufinyelelwe endaweni yomphakathi ye-IMAP evunyelwe ukusebenzisa ama-proxy omphakathi, uhlu lwama-proxy e-SOCKS5 lunikeza abazobekwa; ngayinye kufanele ivumele umsingathi we-imeyili kanye ne-port edingekayo. Ukuncika kwe-PySocks kunikeza ukuxoxisana kwe-SOCKS; i-imaplib isaqala isikhathi se-imeyili. Akukho ukushintshwa kwe-socket.socket komhlaba wonke okuhilekile.

Gcina ubuqiniso besiphakeli se-imeyili

Igama lomsingathi we-TLS lihlala liyi-imap.example. Akulona igama lomsingathi we-SOCKS. Ukudlulisa i-ssl.create_default_context() kwenza ngamabomu ukuthi kusebenze ukuhlolwa okuvamile kwesitifiketi negama lomsingathi; i-socket ebetshwe kuphela ayanele ukusungula lokho kuhlolwa.

proxy_rdns=True icela indlela ye-SOCKS ukuthi iphathe igama lomsingathi wendawo. Uma i-proxy idinga i-akhawunti, izingxoxo zayo zobufakazi ezisekelwayo ziyingxenye yalokho kulungiselelwa kwezokuthutha. Azingeni ebhokisini le-imeyili.

Shiya ukuqalisa kwesikhathi ku-imaplib

I-adaptha ibuyisela umsinga we-TLS kumakhi ojwayelekile. Ukuphinda kusetshenziswe i-open() kusukela esibonelweni esidala kungase kudlule amapharamitha wesikhathi, ukugcinwa kwesikhashana kanye nokunye okulindelwe kokuqalisa. Ku-CPython 3.14, ngisho nokufinyelela kwakudala kwe-file kuyisici sokuhambisana, hhayi inkambu engakhiwa kabusha ngokukhululeka.

Lapho uthuthukisa umtapo wolwazi, buyekeza le huku eyimfihlo ngokuqhathanisa nomthombo ohambisana nawo. Uma ukunakekela isigaba esingaphansi kungafaneleki, khetha iklayenti le-imeyili elinekhompiyutha yezokuthutha ye-proxy ebhaliwe. Noma yiliphi ilungiselelo kufanele ligcine ukuhlukaniswa okufanayo: ukuxhumana kwe-proxy, ukuqinisekiswa kwe-TLS kwendawo, bese kuba ukuqinisekiswa kwe-IMAP.

Izihloko ezihlobene