Net::SMTP 3.16 нема конструктор за унапред повезан SOCKS
Net::SMTP 3.16 не документује опцију конструктора за унапред повезан сокет. Сачувајте поздрав SMTP, EHLO и TLS редослед при избору прокси транспортне интеграције.
Net::SMTP 3.16 не документује параметар конструктора за SOCKS или унапред повезан сокет. Омотавање датотечног дескриптора наследним new_from_fd не покреће његов SMTP конструктор. Успешна SOCKS веза даје ток, а не иницијализовану поштанску сесију.
За обичан SMTP, укључујући каснију STARTTLS надоградњу, сервер први говори:
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 ...Ово је шематски; објављене екстензије се разликују. Сам поздрав може обухватити више редова: код одговора праћен цртицом наставља одговор, а завршни ред га завршава. Потрошите цео поздрав пре EHLO. Иначе клијент може прочитати стари 220 када очекује EHLO 250 и изаћи из корака на здравој вези.
Имплицитни TLS има други редослед: SOCKS веза, TLS руковање, затим SMTP поздрав унутар TLS-а. STARTTLS почиње читљивим поздравом и EHLO, надограђује ток и након тога поново добија могућности.
Јавни конструктор обично обрађује конфигурацију сокета, сачуване параметре везе и информације поздрава, почетни одговор и EHLO са резервним HELO где је прикладно:
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;Овај јавни пример користи STARTTLS и не конфигурише SOCKS. Име сервера бира поштанску дестинацију; Hello даје SMTP идентитет клијента. За имплицитни TLS користите документовану опцију конструктора SSL и порт услуге.
SendHello => 0 потискује аутоматски EHLO/HELO, не читање поздрава или изградњу транспорта. Позивање читача редова и затим hello() такође није документована замена за иницијализацију: Net::Cmd класификује своје нисконске читаче одговора као заштићене методе поткласе.
Ако је SOCKS обавезан, изаберите клијента са подржаним SOCKS интерфејсом или одржавајте интеграцију за конкретну верзију Net::SMTP. Користите горњи редослед као његов уговор уместо да копирате приватна поља. Посебан TCP адаптер такође захтева свесно управљање TLS идентитетом: сертификат мора да идентификује праву поштанску услугу, а прокси акредитиви остају одвојени од SMTP пријаве.