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.

Povezani članci