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 ଲଗଇନରୁ ଅଲଗା ରହିବ।