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 प्रमाणीकरण।