ለ Indy SMTP ግንኙነት የፕሮክሲ IOHandler ይስጡ
SOCKS ወይም HTTP CONNECT ን ከ TIdSMTP ጋር በትክክለኛው የ Indy ስሪት IOHandler ባህሪያት ያገኙ፣ የመልዕክት እና የፕሮክሲ ቅንብሮች ለየብቻ ሆነው።
በ Indy ውስጥ ፕሮክሲውን ከ TIdSMTP ጋር በሚጠቀመው IOHandler ላይ ያያዙት። TIdSMTP.Host እና Port ወደ መልዕክት አገልግሎቱ እንዲያመሩ ያድርጉ። የ IOHandler ፕሮክሲ አካል የመካከለኛውን አድራሻ ያቀርባል እና የፕሮክሲ ማረጋገጫውን በዚያው ግንኙነት ላይ ያከናውናል።
የሚጠቀሙበት ባህሪ በ Indy ስሪት ላይ ይወሰናል፦ Indy 9 SocksInfo ያቀርባል፤ Indy 10 ደግሞ TransparentProxy ይጠቀማል። ምሳሌውን በ Delphi የተለቀቀበት ስም ብቻ መሠረት ከመምረጥ ይልቅ በመተግበሪያው ውስጥ ያለውን የአካል ቤተ-መጽሐፍት ያረጋግጡ።
Indy 10 ከ SOCKS5 ጋር
ቅጹ እነዚህን አካላት አስቀድሞ እንደያዘ ያስቡ፦
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 ፖርት የፕሮክሲው ነው።
የህዝብ መካከለኛ በሚፈቀድበት የተፈቀደ የህዝብ SMTP ሙከራ ላይ የ SOCKS5 ፕሮክሲ ዝርዝር እጩ አድራሻዎችን ያቀርባል። እጩው ትክክለኛውን የመልዕክት አስተናጋጅና ፖርት እንደሚፈቅድ ያረጋግጡ፣ እና ከቀድሞ ፕሮክሲ የተገኙ መታወቂያዎችን ሳታስቀምጡ የፕሮክሲ-ማረጋገጫ-የለሽ ቅርንጫፉን ይጠቀሙ።
TIdSocksInfo በ svNoSocks ይጀምራል፣ ስለዚህ የፕሮክሲ አስተናጋጅ ስም ብቻ ማስቀመጥ አያነቃውም። ተገቢውን የ SOCKS ስሪት ይምረጡ። ፕሮክሲው የ SOCKS5 የተጠቃሚ ስም/የይለፍ ቃል ማረጋገጫ ከፈለገ፣ የማረጋገጫ ዘዴውን እንዲሁም መታወቂያዎቹን ያዘጋጁ፦
Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;
ProxyUser እና ProxyPassword በመተግበሪያው የሚቀርቡ እሴቶችን ይወክላሉ። እነዚህ ባህሪያት በፕሮክሲው ላይ ያረጋግጣሉ። የ SMTP መለያውንና የማረጋገጫ ዘዴውን በመልዕክት ደንበኛው ላይ ለየብቻ ያዘጋጁ።
ነባር የ TLS IOHandler ን ማቆየት
STARTTLS ወይም ራሱን የሚያካትት TLS የሚጠቀም የመልዕክት ደንበኛ SSL የሚደግፈውን IOHandler ይፈልጋል። ፕሮክሲውን ለመጨመር ብቻ ያንን አካል በተራ TIdIOHandlerStack አይተኩ።
በ Indy 10 የ SSL IOHandler መሠረት ከ TIdIOHandlerStack የሚወርድ ሲሆን የፕሮክሲ ድጋፉን ይወርሳል። MailTLS ለሚባል ነባር ተኳኋኝ የ SSL IOHandler፣ ግንኙነቱ እንዲህ ይሆናል፦
Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;
የ SMTP አካሉ UseTLS ቅንብር አሁንም የመልዕክት አገልግሎቱን የ TLS ሁነታ ይመርጣል። የምስክር ወረቀት መታመንንና የአስተናጋጅ ስም ማረጋገጫን በ smtp.example.net ለሚደረገው የ TLS ውህደት ያዘጋጁ፣ ለፕሮክሲው አስተናጋጅ ስም አይደለም። መሿለኪያ መጨመር በራሱ የምስክር ወረቀት ማረጋገጫን አይመሠርትም።
በምትኩ የ HTTP CONNECT ፕሮክሲ መጠቀም
ለ 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 ባህሪያቱ ይተገብራል። ሌላ የማረጋገጫ ዘዴ የሚፈልግ ፕሮክሲ ተኳኋኝ ትግበራ ይፈልጋል፤ እነዚህ ሁለት ባህሪያት ሁሉንም የ HTTP ማረጋገጫ ዘዴዎች ያቀርባሉ ብለው አያስቡ።
ፕሮክሲው እንዲሁም 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 ደንበኛ የሚከናወን የተለየ የቅድመ-ፕሮክሲ መግቢያ የለም። የፕሮክሲ ማረጋገጫ፣ የመሿለኪያ ዝግጅትና የ SMTP ልውውጥ የ SMTP አካሉ በትክክል ከሚጠቀመው ግንኙነት ጋር መሆን አለባቸው። ያ አገናኝ ሲስተካከል፣ ውድቀትን በፕሮክሲ ድርድር፣ በ SMTP ሰላምታ፣ በ TLS ወይም በመልዕክት ማረጋገጫ ላይ መፈለግ ይቻላል እንጂ ሁሉንም እምቢታ እንደ መጥፎ የመልዕክት ይለፍ ቃል መቁጠር አይገባም።