Indy ၏ SMTP ချိတ်ဆက်မှုကို proxy IOHandler ပေးပါ
မှန်ကန်သော Indy ဗားရှင်း၏ IOHandler ဂုဏ်သတ္တိများဖြင့် SOCKS သို့မဟုတ် HTTP CONNECT ကို TIdSMTP နှင့် ချိတ်ဆက်ပြီး မေးလ်နှင့် proxy ဆက်တင်များကို သီးခြားထားပါ။
Indy တွင် TIdSMTP အသုံးပြုသော IOHandler သို့ proxy ကို တွဲပါ။ TIdSMTP.Host နှင့် Port ကို မေးလ်ဝန်ဆောင်မှုသို့ ဦးတည်ထားပါ။ IOHandler ၏ proxy အစိတ်အပိုင်းက ကြားခံ၏ လိပ်စာကို ပေးပြီး ထိုချိတ်ဆက်မှုပေါ်တွင် proxy လက်ဆွဲနှုတ်ဆက်မှုကို ပြုလုပ်သည်။
အသုံးပြုမည့် ဂုဏ်သတ္တိသည် Indy ဗားရှင်းပေါ် မူတည်သည်။ Indy 9 သည် SocksInfo ကို ပေးသည်။ Indy 10 သည် TransparentProxy ကို အသုံးပြုသည်။ Delphi ထုတ်ဝေမှု အမည်တစ်ခုတည်းဖြင့် နမူနာမရွေးဘဲ အပလီကေးရှင်းရှိ အစိတ်အပိုင်း စာကြည့်တိုက်ကို စစ်ဆေးပါ။
SOCKS5 ဖြင့် Indy 10
ဖောင်တွင် ဤအစိတ်အပိုင်းများ ရှိပြီးသားဟု ဆိုပါစို့။
Smtp: TIdSMTPMailSocket: TIdIOHandlerStackSocks: TIdSocksInfo
SMTP ချိတ်ဆက်မှုကို မဖွင့်မီ ၎င်းတို့ကို ချိတ်ဆက်ပြီး ပြင်ဆင်ပါ။
Smtp.Host := 'smtp.example.net';
Smtp.Port := 587;
Smtp.IOHandler := MailSocket;
Socks.Host := 'proxy.example.net';
Socks.Port := 1080;
Socks.Version := svSocks5;
MailSocket.TransparentProxy := Socks;
ပို့တ်တန်ဖိုးများသည် နမူနာများဖြစ်သည်။ SMTP ပို့တ်သည် အသုံးပြုမည့် ဝန်ဆောင်မှုနှင့် TLS မုဒ်နှင့် ကိုက်ညီရမည်။ SOCKS ပို့တ်သည် proxy ၏ ပိုင်ဆိုင်မှုဖြစ်သည်။
အများပြည်သူ ကြားခံကို ခွင့်ပြုသည့် တရားဝင် အများပြည်သူ SMTP စမ်းသပ်မှုအတွက် SOCKS5 proxy စာရင်းသည် ကိုယ်စားလှယ်လောင်း လိပ်စာများကို ပေးသည်။ ကိုယ်စားလှယ်လောင်းသည် အမှန်တကယ် မေးလ်လက်ခံစက်နှင့် ပို့တ်ကို ခွင့်ပြုကြောင်း အတည်ပြုပြီး ယခင် proxy ၏ အထောက်အထားများကို မသိမ်းဆည်းဘဲ proxy စစ်မှန်ကြောင်းအထောက်အထားမပြုသော အကိုင်းအခက်ကို အသုံးပြုပါ။
TIdSocksInfo သည် svNoSocks ဖြင့် စတင်သည်၊ ထို့ကြောင့် proxy လက်ခံစက်အမည်ကို သတ်မှတ်ရုံဖြင့် ၎င်းကို မသက်ဝင်စေပါ။ သင့်လျော်သော SOCKS ဗားရှင်းကို ရွေးပါ။ proxy သည် SOCKS5 အသုံးပြုသူအမည်/စကားဝှက် စစ်မှန်ကြောင်းအထောက်အထားပြုရန် လိုအပ်ပါက နည်းလမ်းနှင့် အထောက်အထား နှစ်မျိုးလုံးကို ပြင်ဆင်ပါ။
Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;
ProxyUser နှင့် ProxyPassword သည် အပလီကေးရှင်း ပေးသော တန်ဖိုးများကို ကိုယ်စားပြုသည်။ ဤဂုဏ်သတ္တိများသည် proxy ထံ စစ်မှန်ကြောင်းအထောက်အထားပြသည်။ SMTP အကောင့်နှင့် ၎င်း၏ စစ်မှန်ကြောင်းအထောက်အထားပြနည်းကို မေးလ်ကလိုင်းယင့်တွင် သီးခြား ပြင်ဆင်ပါ။
ရှိပြီးသား TLS IOHandler ကို ထိန်းသိမ်းခြင်း
STARTTLS သို့မဟုတ် သွယ်ဝိုက် TLS အသုံးပြုသော မေးလ်ကလိုင်းယင့်သည် SSL စွမ်းရည်ရှိ IOHandler လိုအပ်သည်။ proxy ထည့်ရန်အတွက်သာ ထိုအစိတ်အပိုင်းကို ရိုးရှင်းသော TIdIOHandlerStack ဖြင့် အစားမထိုးပါနှင့်။
Indy 10 တွင် SSL IOHandler ၏ အခြေခံသည် TIdIOHandlerStack မှ ဆင်းသက်ပြီး ၎င်း၏ proxy ပံ့ပိုးမှုကို အမွေဆက်ခံသည်။ MailTLS အမည်ရှိ ရှိပြီးသား ကိုက်ညီသော SSL IOHandler အတွက် ချိတ်ဆက်မှုသည် ဤသို့ဖြစ်လာသည်။
Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;
SMTP အစိတ်အပိုင်း၏ UseTLS ဆက်တင်သည် မေးလ်ဝန်ဆောင်မှု၏ TLS မုဒ်ကို ရွေးနေဆဲဖြစ်သည်။ လက်မှတ်ယုံကြည်မှုနှင့် လက်ခံစက်အမည် အတည်ပြုခြင်းကို smtp.example.net အတွက် TLS ပေါင်းစပ်မှုတွင် ပြင်ဆင်ပါ၊ proxy လက်ခံစက်အမည်အတွက် မဟုတ်ပါ။ ဥမင်ထည့်ခြင်းသည် လက်မှတ်အတည်ပြုခြင်းကို အလိုအလျောက် မတည်ဆောက်ပါ။
အစား HTTP CONNECT proxy အသုံးပြုခြင်း
Indy 10 အတွက် TIdConnectThroughHttpProxy အစိတ်အပိုင်းကို အသုံးပြုပါ။ ၎င်းကို IdConnectThroughHttpProxy မှ ရရှိနိုင်သည်။ ဖောင်�ိုင်ဆိုင်သော HttpTunnel အမည်ရှိ ရှိပြီးသား ဖြစ်စဉ်တစ်ခု ရှိသည်ဟု ဆိုပါစို့။
HttpTunnel.Host := 'proxy.example.net';
HttpTunnel.Port := 8080;
HttpTunnel.Enabled := True;
MailSocket.TransparentProxy := HttpTunnel;
SMTP သည် MailTLS ကို အသုံးပြုပါက ယင်းအစား HttpTunnel ကို ထို ကိုင်တွယ်သူ၏ TransparentProxy သို့ သတ်မှတ်ပါ။ မေးလ်ပစ်မှတ်သည် Smtp ပေါ်တွင် ဆက်ရှိနေသည်။
ဤအစိတ်အပိုင်းသည် HTTP CONNECT ဥမင်ကို တည်ဆောက်ပြီး ၎င်း၏ Username နှင့် Password ဂုဏ်သတ္တိများမှတစ်ဆင့် အခြေခံ proxy စစ်မှန်ကြောင်းအထောက်အထားပြုခြင်းကို အကောင်အထည်ဖော်သည်။ အခြား စစ်မှန်ကြောင်းအထောက်အထားပြ ယန္တရား လိုအပ်သော proxy သည် ကိုက်ညီသော အကောင်အထည်ဖော်မှု လိုအပ်သည်။ ဤဂုဏ်သတ္တိ နှစ်ခုသည် HTTP စစ်မှန်ကြောင်းအထောက်အထားပြ ပုံစံအားလုံးကို ပေးသည်ဟု မယူဆပါနှင့်။
proxy သည် မေးလ်ဆာဗာ၏ အမှန်တကယ် ပို့တ်သို့ CONNECT ကိုလည်း ခွင့်ပြုရမည်။ 443 ရှိ ဝဘ်ဆာဗာများသို့ ဥမင်တူးခွင့်သည် 587 ရှိ ပေးပို့မှုဝန်ဆောင်မှု သို့မဟုတ် 25 ရှိ SMTP ဆာဗာသို့ ရောက်ရှိခွင့်ကို မဆိုလိုပါ။
Indy 9 ချိတ်ဆက်မှု
Indy 9 သည် TIdIOHandlerSocket နှင့် ၎င်း၏ SocksInfo ဂုဏ်သတ္တိကို အသုံးပြုသည်။ Socket9 နှင့် Socks9 အမည်ရှိ ဖောင်ပိုင်ဆိုင်သော အစိတ်အပိုင်းများဖြင့် ညီမျှသော ချိတ်ဆက်မှုမှာ ဤသို့ဖြစ်သည်။
Smtp.IOHandler := Socket9;
Socket9.SocksInfo := Socks9;
Socks9.Host := 'proxy.example.net';
Socks9.Port := 1080;
Socks9.Version := svSocks5;
၎င်း၏ SOCKS အကောင်အထည်ဖော်မှုသည် ဗားရှင်း 4၊ 4a နှင့် 5 ကို ပံ့ပိုးသည်။ Indy 10 ၏ TransparentProxy နှင့် HTTP CONNECT အစိတ်အပိုင်း အစီအစဉ်ကို ဤအဟောင်း အင်တာဖေ့စ်သို့ တိုက်ရိုက် ကပ်လို့မရပါ။
အခြား TCP ကလိုင်းယင့်ဖြင့် လုပ်ရမည့် သီးခြား ကြိုတင် proxy လော့ဂ်အင် မရှိပါ။ proxy စစ်မှန်ကြောင်းအထောက်အထားပြုခြင်း၊ ဥမင်တည်ဆောက်ခြင်းနှင့် SMTP ဖလှယ်ခြင်းသည် SMTP အစိတ်အပိုင်း အမှန်တကယ် အသုံးပြုသော ချိတ်ဆက်မှု၏ ပိုင်ဆိုင်မှု ဖြစ်ရမည်။ ထိုချိတ်ဆက်မှု မှန်ကန်ပါက ချို့ယွင်းမှုကို proxy ညှိနှိုင်းမှု၊ SMTP နှုတ်ဆက်ခြင်း၊ TLS သို့မဟုတ် မေးလ် စစ်မှန်ကြောင်းအထောက်အထားပြုခြင်းတွင် ရှာတွေ့နိုင်သည်၊ ငြင်းပယ်မှုတိုင်းကို မေးလ်စကားဝှက် မှားသည်ဟု သဘောထားမည့်အစား။