Indy ର SMTP ସଂଯୋଗକୁ ଏକ ପ୍ରକ୍ସି IOHandler ଦିଅନ୍ତୁ
ଠିକ୍ Indy ସଂସ୍କରଣର IOHandler ଗୁଣ ସହିତ SOCKS କିମ୍ବା HTTP CONNECT କୁ TIdSMTP ସହିତ ସଂଯୋଗ କରନ୍ତୁ, ମେଲ୍ ଏବଂ ପ୍ରକ୍ସି ସେଟିଂ ଅଲଗା ରଖି।
Indy ରେ, TIdSMTP ବ୍ୟବହାର କରୁଥିବା IOHandler ସହିତ ପ୍ରକ୍ସି ସଂଯୋଗ କରନ୍ତୁ। TIdSMTP.Host ଏବଂ Port କୁ ମେଲ୍ ସେବା ଆଡ଼କୁ ରଖନ୍ତୁ। IOHandler ର ପ୍ରକ୍ସି ଉପାଦାନ ମଧ୍ୟସ୍ଥର ଠିକଣା ଦିଏ ଏବଂ ସେହି ସମାନ ସଂଯୋଗରେ ପ୍ରକ୍ସି ହ୍ୟାଣ୍ଡସେକ୍ କରେ।
ଆପଣ ବ୍ୟବହାର କରୁଥିବା ଗୁଣ Indy ସଂସ୍କରଣ ଉପରେ ନିର୍ଭର କରେ: Indy 9 SocksInfo ଦିଏ; Indy 10 TransparentProxy ବ୍ୟବହାର କରେ। କେବଳ Delphi ରିଲିଜ୍ ନାମ ଦେଖି ଉଦାହରଣ ବାଛିବା ପରିବର୍ତ୍ତେ ଆପ୍ରେ ଥିବା ଉପାଦାନ ଲାଇବ୍ରେରୀ ଯାଞ୍ଚ କରନ୍ତୁ।
SOCKS5 ସହିତ Indy 10
ଫର୍ମରେ ଏହି ଉପାଦାନଗୁଡ଼ିକ ପୂର୍ବରୁ ଅଛି ବୋଲି ଭାବନ୍ତୁ:
Smtp: TIdSMTPMailSocket: TIdIOHandlerStackSocks: TIdSocksInfo
SMTP ସଂଯୋଗ ଖୋଲିବା ପୂର୍ବରୁ ସେଗୁଡ଼ିକୁ ସଂଯୋଗ ଏବଂ ବିନ୍ୟାସ କରନ୍ତୁ:
Smtp.Host := 'smtp.example.net';
Smtp.Port := 587;
Smtp.IOHandler := MailSocket;
Socks.Host := 'proxy.example.net';
Socks.Port := 1080;
Socks.Version := svSocks5;
MailSocket.TransparentProxy := Socks;
ପୋର୍ଟ ମୂଲ୍ୟଗୁଡ଼ିକ ଉଦାହରଣ। SMTP ପୋର୍ଟ ଆପଣ ବ୍ୟବହାର କରିବାକୁ ଚାହୁଁଥିବା ସେବା ଏବଂ TLS ମୋଡ୍ ସହିତ ମେଳ ଖାଇବା ଉଚିତ। SOCKS ପୋର୍ଟ ପ୍ରକ୍ସିର।
ସାର୍ବଜନୀନ ମଧ୍ୟସ୍ଥକୁ ଅନୁମତି ଦିଆଯାଇଥିବା ଅନୁମୋଦିତ ସାର୍ବଜନୀନ SMTP ପରୀକ୍ଷା ପାଇଁ SOCKS5 ପ୍ରକ୍ସି ତାଲିକା ପ୍ରାର୍ଥୀ ଠିକଣା ଦିଏ। ପ୍ରାର୍ଥୀ ପ୍ରକୃତ ମେଲ୍ ହୋଷ୍ଟ ଏବଂ ପୋର୍ଟକୁ ଅନୁମତି ଦିଏ ବୋଲି ନିଶ୍ଚିତ କରନ୍ତୁ, ଏବଂ ପୂର୍ବ ପ୍ରକ୍ସିର ପ୍ରମାଣପତ୍ର ରଖି ନ ରଖି ପ୍ରକ୍ସି-ପ୍ରମାଣୀକରଣ-ବିହୀନ ଶାଖା ବ୍ୟବହାର କରନ୍ତୁ।
TIdSocksInfo svNoSocks ସହିତ ଆରମ୍ଭ ହୁଏ, ତେଣୁ କେବଳ ପ୍ରକ୍ସି ହୋଷ୍ଟନାମ ସେଟ୍ କରିବା ଏହାକୁ ସକ୍ରିୟ କରେ ନାହିଁ। ଉପଯୁକ୍ତ SOCKS ସଂସ୍କରଣ ବାଛନ୍ତୁ। ଯଦି ପ୍ରକ୍ସି SOCKS5 ବ୍ୟବହାରକାରୀନାମ/ପାସୱାର୍ଡ ପ୍ରମାଣୀକରଣ ଆବଶ୍ୟକ କରେ, ଉଭୟ ପ୍ରମାଣୀକରଣ ପଦ୍ଧତି ଏବଂ ପ୍ରମାଣପତ୍ର ବିନ୍ୟାସ କରନ୍ତୁ:
Socks.Authentication := saUsernamePassword;
Socks.Username := ProxyUser;
Socks.Password := ProxyPassword;
ProxyUser ଏବଂ ProxyPassword ଆପ୍ ଦେଉଥିବା ମୂଲ୍ୟଗୁଡ଼ିକୁ ଦର୍ଶାଏ। ଏହି ଗୁଣଗୁଡ଼ିକ ପ୍ରକ୍ସି ସହିତ ପ୍ରମାଣୀକରଣ କରେ। ମେଲ୍ କ୍ଲାଏଣ୍ଟରେ SMTP ଖାତା ଏବଂ ଏହାର ପ୍ରମାଣୀକରଣ ପଦ୍ଧତି ଅଲଗା ଭାବରେ ବିନ୍ୟାସ କରନ୍ତୁ।
ବିଦ୍ୟମାନ TLS IOHandler ରଖିବା
STARTTLS କିମ୍ବା ଅନ୍ତର୍ନିହିତ TLS ବ୍ୟବହାର କରୁଥିବା ମେଲ୍ କ୍ଲାଏଣ୍ଟକୁ SSL-ସକ୍ଷମ IOHandler ଆବଶ୍ୟକ। କେବଳ ପ୍ରକ୍ସି ଯୋଡ଼ିବା ପାଇଁ ସେହି ଉପାଦାନକୁ ସାଧାରଣ TIdIOHandlerStack ସହିତ ବଦଳାନ୍ତୁ ନାହିଁ।
Indy 10 ରେ SSL IOHandler ର ଆଧାର TIdIOHandlerStack ରୁ ଆସେ ଏବଂ ଏହାର ପ୍ରକ୍ସି ସମର୍ଥନ ଉତ୍ତରାଧିକାରୀ ଭାବରେ ପାଏ। MailTLS ନାମକ ବିଦ୍ୟମାନ ସୁସଙ୍ଗତ SSL IOHandler ପାଇଁ ସଂଯୋଗ ଏହିପରି ହୁଏ:
Smtp.IOHandler := MailTLS;
MailTLS.TransparentProxy := Socks;
SMTP ଉପାଦାନର UseTLS ସେଟିଂ ଏବେ ମଧ୍ୟ ମେଲ୍ ସେବାର TLS ମୋଡ୍ ବାଛେ। smtp.example.net ପାଇଁ TLS ସଂହତିରେ ପ୍ରମାଣପତ୍ର ବିଶ୍ୱାସ ଏବଂ ହୋଷ୍ଟନାମ ଯାଞ୍ଚ ବିନ୍ୟାସ କରନ୍ତୁ, ପ୍ରକ୍ସି ହୋଷ୍ଟନାମ ପାଇଁ ନୁହେଁ। ଟନେଲ୍ ଯୋଡ଼ିବା ନିଜେ ପ୍ରମାଣପତ୍ର ଯାଞ୍ଚ ପ୍ରତିଷ୍ଠା କରେ ନାହିଁ।
ଏହାର ପରିବର୍ତ୍ତେ HTTP CONNECT ପ୍ରକ୍ସି ବ୍ୟବହାର
Indy 10 ପାଇଁ TIdConnectThroughHttpProxy ଉପାଦାନ ବ୍ୟବହାର କରନ୍ତୁ, ଯାହା IdConnectThroughHttpProxy ରୁ ଉପଲବ୍ଧ। ଫର୍ମ-ମାଲିକାନାର HttpTunnel ନାମକ ଏକ ବିଦ୍ୟମାନ ଉଦାହରଣ ଅଛି ବୋଲି ଧରି:
HttpTunnel.Host := 'proxy.example.net';
HttpTunnel.Port := 8080;
HttpTunnel.Enabled := True;
MailSocket.TransparentProxy := HttpTunnel;
ଯଦି SMTP MailTLS ବ୍ୟବହାର କରେ, ତେବେ ପରିବର୍ତ୍ତେ HttpTunnel କୁ ସେହି ହ୍ୟାଣ୍ଡଲରର TransparentProxy କୁ ନ୍ୟସ୍ତ କରନ୍ତୁ। ମେଲ୍ ଲକ୍ଷ୍ୟ Smtp ଉପରେ ରହେ।
ଏହି ଉପାଦାନ HTTP CONNECT ଟନେଲ୍ ସ୍ଥାପନ କରେ ଏବଂ ଏହାର Username ଏବଂ Password ଗୁଣ ମାଧ୍ୟମରେ ମୌଳିକ ପ୍ରକ୍ସି ପ୍ରମାଣୀକରଣ ଲାଗୁ କରେ। ଅନ୍ୟ ପ୍ରମାଣୀକରଣ ପଦ୍ଧତି ଆବଶ୍ୟକ କରୁଥିବା ପ୍ରକ୍ସିକୁ ସୁସଙ୍ଗତ କାର୍ଯ୍ୟାନ୍ୱୟନ ଦରକାର; ଏହି ଦୁଇ ଗୁଣ ସମସ୍ତ HTTP ପ୍ରମାଣୀକରଣ ଯୋଜନା ଦିଏ ବୋଲି ଭାବନ୍ତୁ ନାହିଁ।
ପ୍ରକ୍ସି ମେଲ୍ ସର୍ଭରର ପ୍ରକୃତ ପୋର୍ଟକୁ CONNECT କୁ ମଧ୍ୟ ଅନୁମତି ଦେବା ଉଚିତ। 443 ରେ ୱେବ୍ ସର୍ଭର ପର୍ଯ୍ୟନ୍ତ ଟନେଲ୍ କରିବା ଅନୁମତିର ଅର୍ଥ 587 ରେ ଦାଖଲ ସେବା କିମ୍ବା 25 ରେ SMTP ସର୍ଭର ପହଞ୍ଚିବା ଅନୁମତି ନୁହେଁ।
Indy 9 ସଂଯୋଗ
Indy 9 TIdIOHandlerSocket ଏବଂ ଏହାର SocksInfo ଗୁଣ ବ୍ୟବହାର କରେ। Socket9 ଏବଂ Socks9 ନାମକ ଫର୍ମ-ମାଲିକାନା ଉପାଦାନ ସହିତ ସମାନ ତାରିଂ:
Smtp.IOHandler := Socket9;
Socket9.SocksInfo := Socks9;
Socks9.Host := 'proxy.example.net';
Socks9.Port := 1080;
Socks9.Version := svSocks5;
ଏହାର SOCKS କାର୍ଯ୍ୟାନ୍ୱୟନ ସଂସ୍କରଣ 4, 4a ଏବଂ 5 କୁ ସମର୍ଥନ କରେ। Indy 10 ର TransparentProxy ଏବଂ HTTP CONNECT ଉପାଦାନ ବିନ୍ୟାସ ଏହି ପୁରୁଣା ଇଣ୍ଟରଫେସରେ ସିଧାସଳଖ ଲଗାଯାଇ ପାରିବ ନାହିଁ।
ଅନ୍ୟ TCP କ୍ଲାଏଣ୍ଟ ସହିତ କରିବାକୁ ଥିବା ଅଲଗା ପ୍ରାରମ୍ଭିକ ପ୍ରକ୍ସି ଲଗଇନ୍ ନାହିଁ। ପ୍ରକ୍ସି ପ୍ରମାଣୀକରଣ, ଟନେଲ୍ ସେଟଅପ୍ ଏବଂ SMTP ଆଦାନପ୍ରଦାନ SMTP ଉପାଦାନ ପ୍ରକୃତରେ ବ୍ୟବହାର କରୁଥିବା ସଂଯୋଗର ହେବା ଉଚିତ। ସେହି ତାରିଂ ଠିକ୍ ହେଲେ, ବିଫଳତା ପ୍ରକ୍ସି ଆଲୋଚନା, SMTP ଅଭିବାଦନ, TLS କିମ୍ବା ମେଲ୍ ପ୍ରମାଣୀକରଣରେ ଚିହ୍ନଟ କରାଯାଇପାରେ, ପ୍ରତ୍ୟେକ ଅସ୍ୱୀକୃତିକୁ ଖରାପ ମେଲ୍ ପାସୱାର୍ଡ ଭାବିବା ପରିବର୍ତ୍ତେ।