IMAP SSL کنکشن SOCKS کے ذریعے سفر کر سکتا ہے جبکہ میل سرور اس کا TLS ساتھی رہتا ہے۔ مفید انضمامی نقطہ وہ ہے جہاں کلائنٹ اپنی ترسیل بناتا ہے، معمول کے 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 توثیق۔

متعلقہ مضامین