CPython 3.14 imaplib nge-SOCKS ene-TLS eqinisekisiwe
Jwayelanisa ukuxhumana kwe-IMAP SSL kwe-CPython 3.14 nge-SOCKS ngaphandle kokushintsha ama-socket ngokwembulunga noma ukulahlekelwa ubuqiniso be-TLS besiphakeli se-imeyili.
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.