Net::SMTP 3.16 मध्ये पूर्व-जोडलेला SOCKS कन्स्ट्रक्टर नाही
Net::SMTP 3.16 पूर्व-जोडलेल्या सॉकेटसाठी कोणताही documented कन्स्ट्रक्टर पर्याय देत नाही. प्रॉक्सी ट्रान्सपोर्ट एकत्रीकरण निवडताना SMTP अभिवादन, EHLO आणि TLS क्रम अक्षत ठेवा.
Net::SMTP 3.16 SOCKS किंवा पूर्व-जोडलेल्या सॉकेटसाठी कन्स्ट्रक्टर पॅरामीटर documented करत नाही. फाइल डिस्क्रिप्टरला वारसाहक्काने मिळालेल्या 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 साठी documented SSL कन्स्ट्रक्टर पर्याय आणि सेवेचा पोर्ट वापरा.
SendHello => 0 स्वयंचलित EHLO/HELO दडपते, अभिवादन वाचणे किंवा ट्रान्सपोर्ट तयार करणे नाही. ओळ वाचक बोलावून नंतर hello() बोलावणेही प्रारंभाचा documented पर्याय नाही: Net::Cmd त्याच्या निम्न-स्तरीय प्रतिसाद वाचकांना संरक्षित उपवर्ग पद्धती म्हणून वर्गीकृत करते.
SOCKS अनिवार्य असल्यास, समर्थित SOCKS इंटरफेस असलेला क्लायंट निवडा किंवा विशिष्ट Net::SMTP आवृत्तीविरुद्ध एकत्रीकरण ठेवा. खाजगी फील्ड कॉपी करण्याऐवजी वरील क्रम त्याचा करार म्हणून वापरा. स्वतंत्र TCP अडॅप्टरलाही जाणीवपूर्वक TLS ओळख हाताळणी आवश्यक आहे: प्रमाणपत्राने खऱ्या मेल सेवेची ओळख करणे आवश्यक आहे आणि प्रॉक्सी क्रेडेन्शियल SMTP लॉगिनपासून वेगळे राहतात.