የ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 ማረጋገጫ።

ተዛማጅ ጽሑፎች