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 සත්‍යාපනය.

අදාළ ලිපි