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. وإلا فقد يقرأ العميل 220 قديمًا حين ينتظر 250 الخاصة بـ EHLO ويخرج عن التزامن على اتصال سليم.
لـ TLS الضمني ترتيب آخر: اتصال SOCKS، ثم مصافحة TLS، ثم ترحيب SMTP داخل TLS. يبدأ STARTTLS بالترحيب القابل للقراءة وEHLO، ويرقّي التدفق ويحصل على القدرات مجددًا بعد ذلك.
يتولى الباني العام عادةً إعداد المقبس ومعاملات الاتصال المحفوظة ومعلومات الترحيب والرد الأولي وEHLO مع الرجوع إلى HELO حيث يلزم:
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.