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