د Indy SMTP اړیکې ته یو پروکسي IOHandler ورکړئ
SOCKS یا HTTP CONNECT د TIdSMTP سره د سم Indy نسخې د IOHandler ځانګړنو په کارولو سره ونښلئ، د بریښنالیک او پروکسي تنظیماتو په جلا توګه.
په Indy کې، پروکسي هغه IOHandler ته ونښلوئ چې TIdSMTP یې کاروي. 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 یا بریښنالیک تصدیق کې موندل کېدای شي، پرځای د دې چې هر رد د ناسم بریښنالیک پټنوم وګڼل شي.