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 нэвтрэлтээс тусдаа үлддэг.

Холбоотой нийтлэлүүд