Net::SMTP 3.16 میں پہلے سے منسلک SOCKS کنسٹرکٹر نہیں ہے
Net::SMTP 3.16 پہلے سے منسلک ساکٹ کے لیے کوئی دستاویزی کنسٹرکٹر آپشن فراہم نہیں کرتا۔ پراکسی ٹرانسپورٹ انٹیگریشن منتخب کرتے وقت SMTP سلام، EHLO اور TLS ترتیب کو برقرار رکھیں۔
Net::SMTP 3.16 SOCKS یا پہلے سے منسلک ساکٹ کے لیے کنسٹرکٹر پیرامیٹر دستاویز نہیں کرتا۔ فائل ڈسکرپٹر کو وراثت میں ملنے والے new_from_fd سے لپیٹنا اس کا SMTP کنسٹرکٹر نہیں چلاتا۔ کامیاب SOCKS کنکشن اسٹریم فراہم کرتا ہے، شروع شدہ میل سیشن نہیں۔
سادہ SMTP کے لیے، بعد میں STARTTLS اپ گریڈ سمیت، سرور پہلے بولتا ہے:
SOCKS: connection to smtp.example.net:587 succeeds
server: 220 smtp.example.net ready
client: EHLO client.example.net
server: 250-smtp.example.net
server: 250-STARTTLS
server: 250 AUTH ...یہ منصوبہ بند ہے؛ اعلان کردہ ایکسٹینشن مختلف ہوتے ہیں۔ سلام خود کئی سطروں پر پھیل سکتا ہے: جوابی کوڈ کے بعد ہائفن آئے تو جواب جاری رہتا ہے، جبکہ اس کی آخری سطر اسے ختم کرتی ہے۔ EHLO سے پہلے پورا سلام استعمال کریں۔ ورنہ کلائنٹ EHLO کے 250 کا انتظار کرتے ہوئے پرانا 220 پڑھ سکتا ہے اور صحت مند کنکشن پر تال کھو سکتا ہے۔
مضمر TLS کی ترتیب مختلف ہے: SOCKS کنکشن، TLS ہینڈ شیک، پھر TLS کے اندر SMTP سلام۔ STARTTLS پڑھنے کے قابل سلام اور EHLO سے شروع ہوتا ہے، اسٹریم اپ گریڈ کرتا ہے اور پھر بعد میں دوبارہ صلاحیتیں حاصل کرتا ہے۔
عوامی کنسٹرکٹر عام طور پر ساکٹ کنفیگریشن، محفوظ کنکشن پیرامیٹرز اور سلام کی معلومات، ابتدائی جواب اور جہاں مناسب ہو HELO فال بیک کے ساتھ EHLO سنبھالتا ہے:
use Net::SMTP;
my $smtp = Net::SMTP->new(
'smtp.example.net',
Port => 587,
Hello => 'client.example.net',
Timeout => 30,
) or die "SMTP connection failed: $@";
$smtp->starttls()
or die "STARTTLS failed: " . $smtp->message;یہ عوامی مثال STARTTLS استعمال کرتی ہے اور SOCKS کنفیگر نہیں کرتی۔ سرور کا نام میل کی منزل منتخب کرتا ہے؛ Hello کلائنٹ کی SMTP شناخت فراہم کرتا ہے۔ مضمر TLS کے لیے دستاویزی SSL کنسٹرکٹر آپشن اور سروس کا پورٹ استعمال کریں۔
SendHello => 0 خودکار EHLO/HELO کو دباتا ہے، سلام پڑھنے یا ٹرانسپورٹ بنانے کو نہیں۔ لائن ریڈر بلانے اور پھر hello() بلانے بھی ابتدا کا دستاویزی متبادل نہیں: Net::Cmd اپنے نچلی سطح کے جواب پڑھنے والوں کو محفوظ ذیلی طبقاتی طریقوں کے طور پر درجہ بندی کرتا ہے۔
اگر SOCKS لازمی ہو تو معاون SOCKS انٹرفیس والا کلائنٹ منتخب کریں یا مخصوص Net::SMTP ورژن کے خلاف انٹیگریشن برقرار رکھیں۔ نجی فیلڈز نقل کرنے کے بجائے اوپر کی ترتیب کو اس کا معاہدہ سمجھیں۔ الگ TCP اڈاپٹر کو بھی سوچے سمجھے TLS شناختی انتظام کی ضرورت ہے: سرٹیفکیٹ کو حقیقی میل سروس کی شناخت کرنی چاہیے، اور پراکسی اسناد SMTP لاگ ان سے الگ رہتی ہیں۔