Nid yw Net::SMTP 3.16 yn dogfennu paramedr consdrwythwr SOCKS nac ar gyfer soced wedi'i rag-gysylltu. Nid yw lapio disgrifydd ffeil â'r new_from_fd a etifeddwyd yn rhedeg ei gonsdrwythwr SMTP. Mae cysylltiad SOCKS llwyddiannus yn darparu ffrwd, nid sesiwn post wedi'i threfnu.

Ar gyfer SMTP plaen, gan gynnwys uwchraddiad STARTTLS diweddarach, y gweinydd sy'n siarad gyntaf:

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 ...

Mae hyn yn sgematig; mae'r estyniadau a hysbysebir yn amrywio. Gall y gyfarchiad ei hun ymestyn dros sawl llinell: mae cod ateb wedi'i ddilyn gan gysylltnod yn parhau'r ateb, tra bod ei linell olaf yn ei derfynu. Defnyddiwch y gyfarchiad gyfan cyn EHLO. Fel arall gall y cleient ddarllen 220 hen pan mae'n disgwyl 250 EHLO a mynd allan o gam ar gysylltiad iach.

Mae gan TLS ymhlyg drefn arall: cysylltiad SOCKS, ysgwyd llaw TLS, yna cyfarchiad SMTP o fewn TLS. Mae STARTTLS yn dechrau gyda'r gyfarchiad darllenadwy ac EHLO, yn uwchraddio'r ffrwd ac yn cael galluoedd eto wedyn.

Mae'r consdrwythwr cyhoeddus fel arfer yn trin ffurfweddiad soced, paramedrau cysylltiad a gadwyd a gwybodaeth gyfarch, yr ateb cychwynnol ac EHLO gyda chwymp yn ôl i HELO lle bo'n briodol:

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;

Mae'r enghraifft gyhoeddus hon yn defnyddio STARTTLS ac nid yw'n ffurfweddu SOCKS. Mae enw'r gweinydd yn dewis cyrchfan y post; mae Hello yn darparu hunaniaeth SMTP y cleient. Ar gyfer TLS ymhlyg, defnyddiwch yr opsiwn consdrwythwr SSL dogfenedig a phorth y gwasanaeth.

Mae SendHello => 0 yn atal EHLO/HELO awtomatig, nid darllen y gyfarchiad na chodiad y trafnidiaeth. Nid yw galw darllenydd llinell ac yna hello() yn ddisodliad dogfenedig am gychwyn ychwaith: mae Net::Cmd yn dosbarthu ei ddarllenwyr ateb lefel isel fel dulliau is-ddosbarth gwarchodedig.

Os yw SOCKS yn orfodol, dewiswch gleient â rhyngwyneb SOCKS a gefnogir neu gynnal integreiddiad yn erbyn y fersiwn Net::SMTP penodol. Defnyddiwch y dilyniant uchod fel ei gontract yn lle copïo meysydd preifat. Mae angen trin diogelwch hunaniaeth TLS yn fwriadol ar addasydd TCP ar wahân hefyd: rhaid i'r dystysgrif nodi'r gwasanaeth post go iawn, ac mae manylion mewngofnodi'r procsi yn parhau ar wahân i fewngofnodi SMTP.

Erthyglau cysylltiedig