CPython 3.14 imaplib SOCKS ద్వారా ధృవీకరించిన TLSతో
సాకెట్లను ప్రపంచవ్యాప్తంగా భర్తీ చేయకుండా లేదా మెయిల్ సర్వర్ TLS గుర్తింపును కోల్పోకుండా CPython 3.14 IMAP SSL కనెక్షన్ను SOCKS ద్వారా స్వీకరించండి.
IMAP SSL కనెక్షన్ మెయిల్ సర్వర్ను దాని TLS భాగస్వామిగా ఉంచుతూ SOCKS ద్వారా ప్రయాణించగలదు. ఉపయోగకరమైన ఇంటిగ్రేషన్ పాయింట్, సాధారణ IMAP పలకరింపు మరియు సామర్థ్యాల నిర్వహణ ప్రారంభం కాకముందు క్లయింట్ తన రవాణాను సృష్టించే స్థలం.
CPython 3.14 కోసం, క్రింద PySocks ఉపయోగించే చిన్న అడాప్టర్ను చూపిస్తుంది. ఇది ప్రైవేట్ రవాణా హుక్ను భర్తీ చేస్తుంది, కాబట్టి దాన్ని నిర్వహించే imaplib సంస్కరణకు కట్టివేయండి:
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()పేర్లు మరియు పోర్ట్ ఇప్పటికే అందుబాటులో ఉన్న ప్రాక్సీ మరియు IMAP సేవకు ప్లేస్హోల్డర్లు. పబ్లిక్ ప్రాక్సీలను ఉపయోగించడానికి అనుమతి ఉన్న పబ్లిక్ IMAP గమ్యానికి, SOCKS5 ప్రాక్సీ జాబితా అభ్యర్థులను అందిస్తుంది; ప్రతిదీ అవసరమైన మెయిల్ హోస్ట్ మరియు పోర్ట్ను అనుమతించాలి. PySocks ఆధారత SOCKS చర్చలను అందిస్తుంది; imaplib ఇప్పటికీ మెయిల్ సెషన్ను ప్రారంభిస్తుంది. socket.socket యొక్క ప్రపంచవ్యాప్త భర్తీ ఏదీ ఇందులో లేదు.
మెయిల్ సర్వర్ గుర్తింపును కాపాడండి
TLS హోస్ట్నేమ్ imap.example గానే ఉంటుంది. అది SOCKS హోస్ట్నేమ్ కాదు. ssl.create_default_context() ను పంపడం సాధారణ ధృవపత్రం మరియు హోస్ట్నేమ్ తనిఖీలను ఉద్దేశపూర్వకంగా ప్రారంభిస్తుంది; ఒక ఎన్క్రిప్టెడ్ సాకెట్ మాత్రమే ఆ తనిఖీలను స్థాపించడానికి సరిపోదు.
proxy_rdns=True SOCKS మార్గం గమ్య హోస్ట్నేమ్ను నిర్వహించాలని కోరుతుంది. ప్రాక్సీకి ఖాతా అవసరమైతే, దాని మద్దతు ఉన్న ఆధారాల ఆర్గ్యుమెంట్లు ఆ రవాణా కాన్ఫిగరేషన్కు చెందుతాయి. అవి మెయిల్బాక్స్లోకి లాగిన్ కావు.
సెషన్ ప్రారంభాన్ని imaplib కే వదిలేయండి
అడాప్టర్ TLS స్ట్రీమ్ను సాధారణ కన్స్ట్రక్టర్కు తిరిగి ఇస్తుంది. పాత ఉదాహరణ నుండి open() ను తిరిగి అమలు చేయడం సమయ పరిమితి పారామితులు, బఫరింగ్ మరియు ఇతర ప్రారంభ అంచనాలను కోల్పోవచ్చు. CPython 3.14లో, పాత file యాక్సెస్ కూడా స్వేచ్ఛగా పునర్నిర్మించగల ఫీల్డ్ కాదు, బదులుగా అనుకూలత లక్షణం.
లైబ్రరీని అప్గ్రేడ్ చేసినప్పుడు ఈ ప్రైవేట్ హుక్ను సంబంధిత మూలంతో పోల్చి సమీక్షించండి. ఉపవర్గాన్ని నిర్వహించడం సరిపోకపోతే, డాక్యుమెంట్ చేసిన ప్రాక్సీ రవాణా ఇంటర్ఫేస్ ఉన్న మెయిల్ క్లయింట్ను ఎంచుకోండి. ఏదైనా ఏర్పాటు అదే విభజనను కాపాడాలి: ప్రాక్సీ కనెక్షన్, గమ్యం యొక్క TLS ధృవీకరణ, ఆపై IMAP ప్రామాణీకరణ.