Walang preconnected SOCKS constructor ang Net::SMTP 3.16
Hindi dokumentado ng Net::SMTP 3.16 ang anumang opsyon ng constructor para sa preconnected socket. Panatilihing buo ang SMTP greeting, EHLO at pagkakasunod-sunod ng TLS kapag pumipili ng proxy transport integration.
Hindi dokumentado ng Net::SMTP 3.16 ang parameter ng constructor para sa SOCKS o preconnected socket. Ang pagbabalot ng file descriptor gamit ang minanang new_from_fd ay hindi nagpapatakbo ng SMTP constructor nito. Ang matagumpay na koneksyon sa SOCKS ay nagbibigay ng stream, hindi ng nasimulang mail session.
Para sa plain SMTP, kasama ang mamaya pang STARTTLS upgrade, ang server ang unang nagsasalita:
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 ...Ito ay eskematiko; nag-iiba ang mga inaanunsyong extension. Ang greeting mismo ay maaaring sumaklaw ng maraming linya: ang response code na sinusundan ng gitling ay nagpapatuloy ng tugon, habang ang huling linya nito ay nagtatapos dito. Ubosin ang buong greeting bago ang EHLO. Kung hindi, maaaring magbasa ang client ng lumang 220 habang hinihintay ang 250 ng EHLO at mawala sa takbo sa isang malusog na koneksyon.
Ang implicit TLS ay may ibang pagkakasunod-sunod: koneksyon sa SOCKS, TLS handshake, pagkatapos ay SMTP greeting sa loob ng TLS. Ang STARTTLS ay nagsisimula sa nababasang greeting at EHLO, ina-upgrade ang stream at muling nakakakuha ng mga kakayahan pagkatapos.
Karaniwang hinahawakan ng pampublikong constructor ang socket configuration, mga naka-save na parameter ng koneksyon at impormasyon ng greeting, ang unang tugon at EHLO na may HELO fallback kung angkop:
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;Gumagamit ang pampublikong halimbawang ito ng STARTTLS at hindi nagko-configure ng SOCKS. Pinipili ng pangalan ng server ang destinasyon ng mail; ibinibigay ng Hello ang SMTP identity ng client. Para sa implicit TLS, gamitin ang dokumentadong opsyon ng constructor na SSL at ang port ng serbisyo.
Pinipigilan ng SendHello => 0 ang awtomatikong EHLO/HELO, hindi ang pagbasa ng greeting o pagbuo ng transport. Ang pagtawag sa line reader at pagkatapos ay hello() ay hindi rin dokumentadong kapalit ng initialization: inuuri ng Net::Cmd ang mga low-level response reader nito bilang protektadong pamamaraan ng subclass.
Kung mandatory ang SOCKS, pumili ng client na may sinusuportahang SOCKS interface o panatilihin ang integration laban sa partikular na bersyon ng Net::SMTP. Gamitin ang pagkakasunod-sunod sa itaas bilang kontrata nito sa halip na kopyahin ang mga pribadong field. Ang hiwalay na TCP adapter ay nangangailangan din ng sadyang paghawak ng TLS identity: dapat tukuyin ng certificate ang tunay na serbisyo ng mail, at nananatiling hiwalay ang proxy credentials sa SMTP login.