Net::SMTP 3.16:ssa ei ole esikytkettyä SOCKS-konstruktoria
Net::SMTP 3.16 ei dokumentoi esikytketyn pistokkeen konstruktiovaihtoehtoa. Säilytä SMTP-tervehdys, EHLO ja TLS-järjestys ennallaan valitessasi välityspalvelintransportin integraatiota.
Net::SMTP 3.16 ei dokumentoi SOCKS- tai esikytketyn pistokkeen konstruktoriparametria. Tiedostokuvaajan kääriminen perityllä new_from_fd:lla ei suorita sen SMTP-konstruktoria. Onnistunut SOCKS-yhteys tarjoaa virran, ei alustettua posti-istuntoa.
Tavallisessa SMTP:ssä, mukaan lukien myöhempi STARTTLS-päivitys, palvelin puhuu ensin:
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 ...Tämä on kaavamainen; ilmoitetut laajennukset vaihtelevat. Tervehdys voi itsessään ulottua usealle riville: vastauskoodi, jota seuraa yhdysmerkki, jatkaa vastausta, kun taas sen viimeinen rivi päättää sen. Kuluta koko tervehdys ennen EHLO:ta. Muuten asiakas voi lukea vanhan 220:n odottaessaan EHLO:n 250:tä ja pudota tahdista terveellä yhteydellä.
Implisiittisellä TLS:llä on toinen järjestys: SOCKS-yhteys, TLS-kättely ja sitten SMTP-tervehdys TLS:n sisällä. STARTTLS alkaa luettavalla tervehdyksellä ja EHLO:lla, päivittää virran ja hankkii sen jälkeen ominaisuudet uudelleen.
Julkinen konstruktori hoitaa yleensä pistokkeen määrityksen, tallennetut yhteysparametrit ja tervehdystiedot, alkuvastauksen ja EHLO:n HELO-varamenettelyineen tarpeen mukaan:
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;Tämä julkinen esimerkki käyttää STARTTLS:ää eikä määritä SOCKS:aa. Palvelimen nimi valitsee postikohteen; Hello tarjoaa asiakkaan SMTP-identiteetin. Implisiittiselle TLS:lle käytä dokumentoitua SSL-konstruktiovaihtoehtoa ja palvelun porttia.
SendHello => 0 vaimentaa automaattisen EHLO/HELO:n, ei tervehdyksen lukemista tai transportin rakentamista. Rivinlukijan kutsuminen ja sitten hello() ei sekään ole dokumentoitu alustuksen korvaaja: Net::Cmd luokittelee matalan tason vastauslukijansa suojatuiksi aliluokan menetelmiksi.
Jos SOCKS on pakollinen, valitse asiakas, jossa on tuettu SOCKS-rajapinta, tai ylläpidä integraatiota tiettyä Net::SMTP-versiota vastaan. Käytä yllä olevaa järjestystä sen sopimuksena sen sijaan, että kopioisit yksityisiä kenttiä. Erillinen TCP-sovitin vaatii myös tietoista TLS-identiteetin käsittelyä: varmenteen on yksilöitävä todellinen postipalvelu, ja välityspalvelimen tunnukset pysyvät erillään SMTP-kirjautumisesta.