Net::SMTP 3.16-l puudub eelühendatud SOCKS-konstruktor
Net::SMTP 3.16 ei dokumenteeri eelühendatud pesa konstruktori valikut. Proksiedastuse integreerimisel hoidke SMTP-tervitus, EHLO ja TLS-i järjekord muutumatuna.
Net::SMTP 3.16 ei dokumenteeri SOCKS-i ega eelühendatud pesa konstruktori parameetrit. Failideskriptori mähkimine päritud new_from_fd-ga ei käivita selle SMTP-konstruktorit. Õnnestunud SOCKS-ühendus annab voo, mitte initsialiseeritud postiseansi.
Lihtsa SMTP-i puhul, sealhulgas hilisema STARTTLS-i uuenduse korral, räägib server esimesena:
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 ...See on skemaatiline; teatatud laiendused erinevad. Tervitus võib ise hõlmata mitut rida: vastusekood, millele järgneb sidekriips, jätkab vastust, samas kui selle viimane rida lõpetab selle. Enne EHLO-d tarbige kogu tervitus. Vastasel juhul võib klient lugeda vana 220, kui ta ootab EHLO 250-t, ja tervel ühendusel rütmist välja minna.
Implitsiitsel TLS-il on teine järjekord: SOCKS-ühendus, TLS-kätlus, seejärel SMTP-tervitus TLS-i sees. STARTTLS algab loetava tervituse ja EHLO-ga, uuendab voogu ja hangib seejärel uuesti võimalused.
Avalik konstruktor käsitleb tavaliselt pesa konfiguratsiooni, salvestatud ühenduse parameetreid ja tervitusteavet, esialgset vastust ning EHLO-d koos HELO varuvariandiga, kus asjakohane:
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;See avalik näide kasutab STARTTLS-i ega seadista SOCKS-i. Serveri nimi valib postisihtkoha; Hello annab kliendi SMTP identiteedi. Implitsiitse TLS-i jaoks kasutage dokumenteeritud konstruktori valikut SSL ja teenuse porti.
SendHello => 0 summutab automaatse EHLO/HELO, mitte tervituse lugemise ega transpordi ehitamise. Ka reaLugeja kutsumine ja seejärel hello() ei ole dokumenteeritud initsialiseerimise asendus: Net::Cmd liigitab oma madala taseme vastuselugejad kaitstud alamklassi meetoditeks.
Kui SOCKS on kohustuslik, valige toetatud SOCKS-liidesega klient või hoidke integreerimist konkreetse Net::SMTP versiooni vastu. Kasutage ülaltoodud järjekorda selle lepinguna, mitte ärge kopeerige privaatvälju. Eraldi TCP-adapter nõuab samuti teadlikku TLS-identiteedi käsitlemist: sertifikaat peab tuvastama tegeliku postiteenuse ja proksimandaadid jäävad SMTP-sisselogimisest eraldi.