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 алдында бүт саламды керектеңиз. Болбосо кардар EHLOнун 250син күтүп жатканда эски 220ны окуп, ден соолугу жакшы байланышта ыргактан чыгышы мүмкүн.
Жашыруун TLS башка тартипте: SOCKS байланышы, TLS кол алышуу, анан TLS ичинде SMTP саламы. STARTTLS окула турган салам жана EHLO менен башталат, агымды жаңыртат жана андан кийин кайра мүмкүнчүлүктөрдү алат.
Коомдук конструктор адатта сокет конфигурациясын, сакталган байланыш параметрлерин жана салам маалыматын, баштапкы жоопту жана ылайыктуу жерде HELO камдык варианты менен EHLOну иштетет:
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 кирүүдөн өзүнчө калат.