يمكن لاتصال 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.

مقالات ذات صلة