CPython 3.14 imaplib ကို SOCKS မှတစ်ဆင့် အတည်ပြုပြီး TLS ဖြင့်
socket များကို ကမ္ဘာ့အဆင့်တွင် မလဲလှယ်ဘဲ သို့မဟုတ် မေးလ်ဆာဗာ၏ 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() ကို ပေးပို့ခြင်းသည် ပုံမှန် လက်မှတ်နှင့် ဟိုစ့်အမည် စစ်ဆေးမှုများကို တမင်ဖွင့်ပေးသည်။ ကုဒ်ဝှက်ထားသော socket တစ်ခုတည်းဖြင့် ထိုစစ်ဆေးမှုများကို တည်ထောင်ရန် မလုံလောက်ပါ။
proxy_rdns=True သည် SOCKS လမ်းကြောင်းက ဦးတည်ချက် ဟိုစ့်အမည်ကို ကိုင်တွယ်ရန် တောင်းဆိုသည်။ ပရောက်စီက အကောင့်လိုအပ်ပါက ၎င်း၏ ပံ့ပိုးထားသော အထောက်အထား အငြင်းပွားချက်များသည် ထို သယ်ယူပို့ဆောင်မှု ဖွဲ့စည်းမှုတွင် ပါဝင်သည်။ ၎င်းတို့သည် မေးလ်ဘောက်စ်သို့ လော့ဂ်အင်မဝင်ပါ။
ဆက်ရှင် စတင်မှုကို imaplib ထံ ထားခဲ့ပါ
အဒက်တာသည် TLS စီးကြောင်းကို ပုံမှန် တည်ဆောက်သူထံ ပြန်ပေးသည်။ ရှေးဟောင်း ဥပမာမှ open() ကို ပြန်လည်အကောင်အထည်ဖော်ခြင်းသည် အချိန်ကုန်ဆုံးမှု ပါရာမီတာများ၊ ဘူဖာလုပ်ခြင်းနှင့် အခြား စတင်မှု မျှော်လင့်ချက်များကို လွတ်သွားနိုင်သည်။ CPython 3.14 တွင် ရှေးဟောင်း file အသုံးပြုခွင့်ပင် လွတ်လပ်စွာ ပြန်လည်တည်ဆောက်နိုင်သော နယ်ပယ်မဟုတ်ဘဲ လိုက်လျောညီထွေမှု ဂုဏ်သတ္တိဖြစ်သည်။
စာကြည့်တိုက်ကို အဆင့်မြှင့်သောအခါ ဤသီးသန့် ချိတ်ကို သက်ဆိုင်ရာ ရင်းမြစ်နှင့် နှိုင်းယှဉ်သုံးသပ်ပါ။ ခွဲထွက်အတန်းကို ထိန်းသိမ်းခြင်း မသင့်လျော်ပါက မှတ်တမ်းတင်ထားသော ပရောက်စီ သယ်ယူပို့ဆောင်မှု အင်တာဖေ့စ်ရှိသော မေးလ်ကလိုင်းယင့်ကို ရွေးပါ။ မည်သည့် အစီအစဉ်မဆို တူညီသော ခွဲခြားမှုကို ထိန်းသိမ်းသင့်သည်။ ပရောက်စီ ချိတ်ဆက်မှု၊ ဦးတည်ချက်၏ TLS အတည်ပြုမှု၊ ထို့နောက် IMAP စစ်မှန်ကြောင်း အတည်ပြုမှု။