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 пријаве.

Повезани чланци