Net::SMTP 3.16 ma jiddokumentax parametru tal-konstruktur għal SOCKS jew socket prekonness. L-involu ta' deskrittur tal-fajl bil-new_from_fd wirtat ma jħaddimx il-konstruktur SMTP tiegħu. Konnessjoni SOCKS b'suċċess tipprovdi stream, mhux sessjoni tal-posta inizjalizzata.

Għal SMTP sempliċi, inkluż aġġornament STARTTLS aktar tard, is-server jitkellem l-ewwel:

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 ...

Dan huwa skematiku; l-estensjonijiet imħabbra jvarjaw. It-tislima nnifisha tista' testendi fuq bosta linji: kodi ta' tweġiba segwit minn sing ma jkomplix it-tweġiba, filwaqt li l-linja finali tagħha ttemmha. Ikkonsma t-tislima kollha qabel EHLO. Inkella l-klijent jista' jaqra 220 qadima meta jkun qed jistenna l-250 ta' EHLO u joħroġ mit-temp fuq konnessjoni tajba.

TLS impliċitu għandu ordni differenti: konnessjoni SOCKS, handshake TLS, imbagħad tislima SMTP ġewwa TLS. STARTTLS jibda bit-tislima li tinqara u EHLO, jaġġorna l-stream u wara jerġa' jakkwista l-kapaċitajiet.

Il-konstruktur pubbliku normalment jimmaniġġja l-konfigurazzjoni tas-socket, il-parametri tal-konnessjoni salvati u l-informazzjoni tat-tislima, ir-risposta inizjali u EHLO b'riżerva HELO fejn xieraq:

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;

Dan l-eżempju pubbliku juża STARTTLS u ma jikkonfigurax SOCKS. L-isem tas-server jagħżel id-destinazzjoni tal-posta; Hello jipprovdi l-identità SMTP tal-klijent. Għal TLS impliċitu, uża l-għażla tal-konstruktur SSL iddokumentata u l-port tas-servizz.

SendHello => 0 jrażżan EHLO/HELO awtomatiku, mhux il-qari tat-tislima jew il-bini tat-trasport. Ssejjaħ qarrej tal-linji u mbagħad hello() lanqas mhu sostitut iddokumentat għall-inizjalizzazzjoni: Net::Cmd jikklassifika l-qarrejja tar-risposti tiegħu ta' livell baxx bħala metodi protetti tas-sottoklassi.

Jekk SOCKS huwa obbligatorju, agħżel klijent b'interface SOCKS appoġġjat jew żomm integrazzjoni mal-verżjoni speċifika ta' Net::SMTP. Uża s-sekwenza ta' hawn fuq bħala l-kuntratt tagħha minflok ma tikkopja oqsma privati. Adapter TCP separat ukoll jeħtieġ immaniġġjar intenzjonat tal-identità TLS: iċ-ċertifikat irid jidentifika s-servizz tal-posta reali, u l-kredenzjali tal-proxy jibqgħu separati mill-login SMTP.

Artikli relatati