Indy میں، proxy کو اُس IOHandler سے جوڑیں جو TIdSMTP استعمال کرتا ہے۔ TIdSMTP.Host اور Port کو میل سروس کی طرف رکھیں۔ IOHandler کا proxy جزو درمیانی سرور کا پتہ فراہم کرتا ہے اور اسی کنکشن پر proxy مصافحہ انجام دیتا ہے۔

آپ جو خصوصیت استعمال کرتے ہیں وہ Indy ورژن پر منحصر ہے: Indy 9 SocksInfo پیش کرتا ہے؛ Indy 10 TransparentProxy استعمال کرتا ہے۔ صرف Delphi ریلیز کے نام پر مثال منتخب کرنے کی بجائے ایپلیکیشن کی جزو لائبریری چیک کریں۔

SOCKS5 کے ساتھ Indy 10

فرض کریں کہ فارم کے پاس پہلے سے یہ اجزا موجود ہیں:

  • 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 پورٹ 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 یا میل توثیق میں شناخت کی جا سکتی ہے، بجائے اس کے کہ ہر انکار کو غلط میل پاس ورڈ سمجھا جائے۔

متعلقہ مضامین