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 લોગિનથી અલગ રહે છે.

સંબંધિત લેખો