በ Indy ውስጥ ፕሮክሲውን ከ TIdSMTP ጋር በሚጠቀመው IOHandler ላይ ያያዙት። TIdSMTP.Host እና Port ወደ መልዕክት አገልግሎቱ እንዲያመሩ ያድርጉ። የ IOHandler ፕሮክሲ አካል የመካከለኛውን አድራሻ ያቀርባል እና የፕሮክሲ ማረጋገጫውን በዚያው ግንኙነት ላይ ያከናውናል።

የሚጠቀሙበት ባህሪ በ Indy ስሪት ላይ ይወሰናል፦ Indy 9 SocksInfo ያቀርባል፤ Indy 10 ደግሞ TransparentProxy ይጠቀማል። ምሳሌውን በ Delphi የተለቀቀበት ስም ብቻ መሠረት ከመምረጥ ይልቅ በመተግበሪያው ውስጥ ያለውን የአካል ቤተ-መጽሐፍት ያረጋግጡ።

Indy 10 ከ SOCKS5 ጋር

ቅጹ እነዚህን አካላት አስቀድሞ እንደያዘ ያስቡ፦

  • Smtp፦ TIdSMTP
  • MailSocket፦ TIdIOHandlerStack
  • Socks፦ 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 ወይም በመልዕክት ማረጋገጫ ላይ መፈለግ ይቻላል እንጂ ሁሉንም እምቢታ እንደ መጥፎ የመልዕክት ይለፍ ቃል መቁጠር አይገባም።

ተዛማጅ ጽሑፎች