ការតភ្ជាប់ IMAP SSL អាចធ្វើដំណើរតាម SOCKS ខណៈរក្សាម៉ាស៊ីនមេសំបុត្រជាដៃគូ TLS របស់វា។ ចំណុចសមាហរណកម្មដែលមានប្រយោជន៍គឺកន្លែងដែលអតិថិជនបង្កើតការដឹកជញ្ជូនរបស់ខ្លួន មុនពេលការស្វាគមន៍ 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។

អត្ថបទពាក់ព័ន្ធ