Ipe muunganisho wa SMTP wa Indy IOHandler ya proksi
Unganisha SOCKS au HTTP CONNECT na TIdSMTP kwa kutumia sifa za IOHandler za toleo sahihi la Indy, na mipangilio tofauti ya barua pepe na proksi.
Katika Indy, ambatanisha proksi kwenye IOHandler inayotumiwa na TIdSMTP. Weka TIdSMTP.Host na Port zikielekea huduma ya barua pepe. Sehemu ya proksi ya IOHandler hutoa anwani ya mpatanishi na hufanya makubaliano ya proksi kwenye muunganisho huo huo.
Sifa unayotumia inategemea toleo la Indy: Indy 9 hutoa SocksInfo; Indy 10 hutumia TransparentProxy. Kagua maktaba ya vipengele katika programu badala ya kuchagua mfano kwa jina la toleo la Delphi pekee.
Indy 10 pamoja na SOCKS5
Fikiria fomu tayari inamiliki vipengele hivi:
Smtp: TIdSMTPMailSocket: TIdIOHandlerStackSocks: TIdSocksInfo
Viunganishe na uvisanidi kabla ya kufungua muunganisho wa 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;
Thamani za lango ni mifano. Lango la SMTP lazima lilingane na huduma na hali ya TLS unayokusudia kutumia. Lango la SOCKS ni la proksi.
Kwa jaribio la SMTP la umma linaloruhusiwa ambapo mpatanishi wa umma anaruhusiwa, orodha ya proksi za SOCKS5 hutoa anwani za wagombea. Thibitisha kwamba mgombea anaruhusu mwenyeji na lango halisi la barua pepe, na tumia tawi lisilo na uthibitishaji wa proksi bila kuhifadhi vitambulisho vya proksi ya awali.
TIdSocksInfo huanza na svNoSocks, kwa hiyo kuweka jina la mwenyeji wa proksi pekee hakiifanyi ifanye kazi. Chagua toleo linalofaa la SOCKS. Ikiwa proksi inahitaji uthibitishaji wa SOCKS5 wa jina la mtumiaji/nenosiri, sanidi mbinu ya uthibitishaji pamoja na vitambulisho:
Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;
ProxyUser na ProxyPassword huwakilisha thamani zinazotolewa na programu. Sifa hizi huthibitisha kwa proksi. Sanidi akaunti ya SMTP na mbinu yake ya uthibitishaji kwa tofauti katika mteja wa barua pepe.
Kuhifadhi IOHandler ya TLS iliyopo
Mteja wa barua pepe anayetumia STARTTLS au TLS isiyo ya wazi anahitaji IOHandler yake yenye uwezo wa SSL. Usibadilishe sehemu hiyo na TIdIOHandlerStack ya kawaida kwa ajili ya kuongeza proksi pekee.
Katika Indy 10 msingi wa IOHandler wa SSL unatokana na TIdIOHandlerStack na hurithi msaada wake wa proksi. Kwa IOHandler ya SSL inayolingana iliyopo inayoitwa MailTLS, muunganisho unakuwa:
Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;
Mpangilio UseTLS wa kipengele cha SMTP bado huchagua hali ya TLS ya huduma ya barua pepe. Sanidi uaminifu wa cheti na uthibitishaji wa jina la mwenyeji katika muunganisho wa TLS kwa smtp.example.net, si kwa jina la mwenyeji wa proksi. Kuongeza handaki hakuweki uthibitishaji wa cheti chenyewe.
Kutumia proksi ya HTTP CONNECT badala yake
Kwa Indy 10, tumia kipengele cha TIdConnectThroughHttpProxy, kinachopatikana kutoka IdConnectThroughHttpProxy. Kwa kudhani kuna kipengele kilichopo kinachomilikiwa na fomu kiitwacho HttpTunnel:
HttpTunnel.Host := 'proxy.example.net';
HttpTunnel.Port := 8080;
HttpTunnel.Enabled := True;
MailSocket.TransparentProxy := HttpTunnel;
Ikiwa SMTP inatumia MailTLS, weka HttpTunnel kwenye TransparentProxy ya kidhibiti hicho badala yake. Lengo la barua pepe linabaki kwenye Smtp.
Kipengele hiki huweka handaki la HTTP CONNECT na kutekeleza uthibitishaji wa msingi wa proksi kupitia sifa zake za Username na Password. Proksi inayohitaji utaratibu mwingine wa uthibitishaji inahitaji utekelezaji unaolingana; usidhani kwamba sifa hizi mbili hutoa mifumo yote ya uthibitishaji ya HTTP.
Proksi pia lazima iruhusu CONNECT kwenye lango halisi la seva ya barua pepe. Ruhusa ya kufanya handaki kwa seva za wavuti kwenye 443 haimaanishi ruhusa ya kufikia huduma ya kuwasilisha kwenye 587 au seva ya SMTP kwenye 25.
Muunganisho wa Indy 9
Indy 9 hutumia TIdIOHandlerSocket na sifa yake SocksInfo. Ukiwa na vipengele vinavyomilikiwa na fomu vinavyoitwa Socket9 na Socks9, muunganisho sawa ni:
Smtp.IOHandler := Socket9;
Socket9.SocksInfo := Socks9;
Socks9.Host := 'proxy.example.net';
Socks9.Port := 1080;
Socks9.Version := svSocks5;
Utekelezaji wake wa SOCKS unasaidia matoleo 4, 4a na 5. Mpangilio wa TransparentProxy na kipengele cha HTTP CONNECT cha Indy 10 hauwezi kubandikwa moja kwa moja kwenye kiolesura hiki cha zamani.
Hakuna kuingia kwa awali kwa proksi kunakopaswa kufanywa na mteja mwingine wa TCP. Uthibitishaji wa proksi, usanidi wa handaki na mabadilishano ya SMTP lazima yawe ya muunganisho ambao kipengele cha SMTP kinatumia kwa hakika. Ukiwa muunganisho huo ni sahihi, hitilafu inaweza kubainishwa kwenye majadiliano ya proksi, salamu ya SMTP, TLS au uthibitishaji wa barua pepe, badala ya kuchukulia kila kukataliwa kama nenosiri baya la barua pepe.