ഒരു 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 പ്രാമാണീകരണം.

അനുബന്ധ ലേഖനങ്ങൾ