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 లాగిన్ నుండి వేరుగా ఉంటాయి.

సంబంధిత వ్యాసాలు