Net::SMTP 3.16 nuk ka konstruktor SOCKS të paralidhur
Net::SMTP 3.16 nuk dokumenton asnjë opsion konstruktori për një socket të paralidhur. Ruani të paprekur sekuencën e përshëndetjes SMTP, EHLO dhe TLS kur zgjidhni një integrim transporti përmes proxy.
Net::SMTP 3.16 nuk dokumenton asnjë parametër konstruktori për SOCKS ose për një socket të paralidhur. Mbështjellja e një përshkruesi skedari me new_from_fd e trashëguar nuk ekzekuton konstruktorin e tij SMTP. Një lidhje e suksesshme SOCKS ofron një rrjedhë, jo një sesion poste të inicializuar.
Për SMTP të thjeshtë, përfshirë një përmirësim STARTTLS të mëvonshëm, serveri flet i pari:
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 ...Kjo është skematike; shtesat e shpallura ndryshojnë. Vetë përshëndetja mund të shtrihet në disa rreshta: një kod përgjigjeje i ndjekur nga një vizë vazhdon përgjigjen, ndërsa rreshti i tij i fundit e përfundon atë. Konsumoni të gjithë përshëndetjen para EHLO. Përndryshe klienti mund të lexojë një 220 të vjetër kur pret 250 të EHLO dhe të dalë nga ritmi në një lidhje të shëndoshë.
TLS implicit ka një rend tjetër: lidhje SOCKS, shtrëngim duarsh TLS, pastaj përshëndetja SMTP brenda TLS. STARTTLS fillon me përshëndetjen e lexueshme dhe EHLO, përmirëson rrjedhën dhe më pas i merr përsëri aftësitë.
Konstruktori publik zakonisht trajton konfigurimin e socketit, parametrat e ruajtur të lidhjes dhe informacionin e përshëndetjes, përgjigjen fillestare dhe EHLO me zëvendësim HELO kur është e përshtatshme:
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;Ky shembull publik përdor STARTTLS dhe nuk konfiguron SOCKS. Emri i serverit zgjedh destinacionin e postës; Hello ofron identitetin SMTP të klientit. Për TLS implicit, përdorni opsionin e dokumentuar të konstruktorit SSL dhe portën e shërbimit.
SendHello => 0 shtyp EHLO/HELO automatike, jo leximin e përshëndetjes ose ndërtimin e transportit. Thirrja e një lexuesi rreshtash dhe më pas hello() nuk është as zëvendësim i dokumentuar i inicializimit: Net::Cmd i klasifikon lexuesit e tij të përgjigjeve të nivelit të ulët si metoda të mbrojtura të nënklasës.
Nëse SOCKS është i detyrueshëm, zgjidhni një klient me ndërfaqe SOCKS të mbështetur ose mbani një integrim kundër versionit specifik të Net::SMTP. Përdorni sekuencën më sipër si kontratën e saj në vend që të kopjoni fusha private. Një përshtatës i veçantë TCP kërkon gjithashtu trajtim të qëllimshëm të identitetit TLS: certifikata duhet të identifikojë shërbimin e vërtetë të postës, dhe kredencialet e proxy mbeten të ndara nga identifikimi SMTP.