ਇੱਕ 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 ਪ੍ਰਮਾਣਿਕਤਾ।

ਸੰਬੰਧਿਤ ਲੇਖ