Net::SMTP 3.16 nema konstruktor za unaprijed povezani SOCKS
Net::SMTP 3.16 ne dokumentuje opciju konstruktora za unaprijed povezani socket. Očuvajte SMTP pozdrav, EHLO i TLS redoslijed pri odabiru proxy transportne integracije.
Net::SMTP 3.16 ne dokumentuje parametar konstruktora za SOCKS ili unaprijed povezani socket. Umotavanje datotečnog deskriptora naslijeđenim new_from_fd ne pokreće njegov SMTP konstruktor. Uspješna SOCKS veza daje tok, a ne inicijaliziranu mail sesiju.
Za običan SMTP, uključujući kasniju STARTTLS nadogradnju, server govori prvi:
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 ...Ovo je shematski; oglašene ekstenzije variraju. Sam pozdrav može obuhvatati više redova: kod odgovora praćen crticom nastavlja odgovor, a završni red ga završava. Potrošite cijeli pozdrav prije EHLO. Inače klijent može pročitati stari 220 kada očekuje EHLO 250 i izaći iz koraka na zdravoj vezi.
Implicitni TLS ima drugi redoslijed: SOCKS veza, TLS rukovanje, zatim SMTP pozdrav unutar TLS-a. STARTTLS počinje čitljivim pozdravom i EHLO, nadograđuje tok i nakon toga ponovo dobija mogućnosti.
Javni konstruktor obično rukuje konfiguracijom socketa, sačuvanim parametrima veze i informacijama pozdrava, početnim odgovorom i EHLO s HELO rezervom gdje je prikladno:
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;Ovaj javni primjer koristi STARTTLS i ne konfiguriše SOCKS. Ime servera odabire mail odredište; Hello daje SMTP identitet klijenta. Za implicitni TLS koristite dokumentovanu opciju konstruktora SSL i port usluge.
SendHello => 0 potiskuje automatski EHLO/HELO, ne čitanje pozdrava ili izgradnju transporta. Pozivanje čitača redova pa hello() također nije dokumentovana zamjena za inicijalizaciju: Net::Cmd klasifikuje svoje niskorazinske čitače odgovora kao zaštićene metode potklase.
Ako je SOCKS obavezan, odaberite klijent s podržanim SOCKS interfejsom ili održavajte integraciju prema konkretnoj verziji Net::SMTP. Koristite gornji redoslijed kao njegov ugovor umjesto kopiranja privatnih polja. Zaseban TCP adapter također zahtijeva svjesno upravljanje TLS identitetom: certifikat mora identificirati stvarnu mail uslugu, a proxy akreditivi ostaju odvojeni od SMTP prijave.