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

सम्बन्धित लेखहरू