smtp.Dial ଏହାର ଠିକଣାକୁ ଏକ ନୂଆ ସଂଯୋଗ ଖୋଲେ। HTTP CONNECT ପ୍ରକ୍ସି ମାଧ୍ୟମରେ ସଂଯୋଗ ପାଇବା ପରେ, ସେହି ବିଦ୍ୟମାନ ସ୍ଟ୍ରିମକୁ ଏହାର ପରିବର୍ତ୍ତେ smtp.NewClient କୁ ଦିଅନ୍ତୁ।

ଯେଉଁ SMTP ସର୍ଭର ଏହାର ସବମିଶନ ପୋର୍ଟରେ STARTTLS ଆବଶ୍ୟକ କରେ, ସେଥିପାଇଁ ହସ୍ତାନ୍ତର ଏହିପରି ହୋଇପାରେ:

func smtpOverTunnel(conn net.Conn, mailHost string) (*smtp.Client, error) {
    client, err := smtp.NewClient(conn, mailHost)
    if err != nil {
        conn.Close()
        return nil, err
    }
    err = client.StartTLS(&tls.Config{
        ServerName: mailHost,
        MinVersion: tls.VersionTLS12,
    })
    if err != nil {
        client.Close()
        return nil, err
    }
    return client, nil
}

ପ୍ୟାକେଜଗୁଡ଼ିକ net, net/smtp ଏବଂ crypto/tls। କଲର ଇଚ୍ଛିତ SMTP ହୋଷ୍ଟ ଓ ପୋର୍ଟ ସହିତ ପୂର୍ବରୁ ସଂଯୁକ୍ତ ସୁଡଙ୍ଗ ଯୋଗାଏ, ପ୍ରକ୍ସିର CONNECT ବିନିମୟ ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଥାଏ। ପ୍ରକ୍ସି ପାଖକୁ କେବଳ TCP ଖୋଲିବା ଯଥେଷ୍ଟ ନୁହେଁ: HTTP ପ୍ରତିକ୍ରିୟା SMTP ଅଭିବାଦନ ନୁହେଁ।

mailHost ହେଉଛି SMTP ସର୍ଭରର ହୋଷ୍ଟନାମ, ପୋର୍ଟ ବିନା। SMTP ପ୍ରମାଣୀକରଣ ଏବଂ ସାର୍ଟିଫିକେଟ ଯାଞ୍ଚ ପାଇଁ ସେହି ପରିଚୟ ରଖନ୍ତୁ। HTTPS ପ୍ରକ୍ସି ପାଖକୁ TLS ସଂଯୋଗ ମାର୍ଗର ଅନ୍ୟ ଅଂଶକୁ ସୁରକ୍ଷିତ ରଖେ।

ଫେରାଇଥିବା କ୍ଲାଏଣ୍ଟ ଆପ୍ଲିକେସନର ବିଦ୍ୟମାନ SMTP ପ୍ରମାଣୀକରଣ ଓ ମେଲ କାରବାର ପାଇଁ ପ୍ରସ୍ତୁତ। ସମ୍ପୂର୍ଣ୍ଣ ହେଲେ ଏହାକୁ ବନ୍ଦ କରନ୍ତୁ। ଡାଏଲିଂ, CONNECT ଏବଂ ପରବର୍ତ୍ତୀ ପ୍ରୋଟୋକଲ କାର୍ଯ୍ୟକୁ ଆପ୍ଲିକେସନର ସମୟସୀମା ନୀତିରେ ସୀମିତ କରନ୍ତୁ।

ପ୍ରକ୍ସି ନିର୍ବାଚିତ ମେଲ ପୋର୍ଟକୁ CONNECT ଅନୁମତି ଦେବା ଆବଶ୍ୟକ। କେତେକ ଏହାକୁ ପୋର୍ଟ 443 ର HTTPS ଗନ୍ତବ୍ୟକୁ ସୀମିତ ରଖନ୍ତି। ଅନ୍ତର୍ନିହିତ TLS ଥିବା SMTP ପାଇଁ, STARTTLS ଜାରି ନକରି NewClient କଲ କରିବା ପୂର୍ବରୁ ଗନ୍ତବ୍ୟର TLS ସେସନ ସ୍ଥାପନ କରନ୍ତୁ।

ସମ୍ପର୍କିତ ପ୍ରବନ୍ଧ