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 लगइनबाट अलग रहन्छन्।