smtp.Dial එහි ලිපිනයට නව සම්බන්ධතාවක් විවෘත කරයි. HTTP CONNECT proxy හරහා සම්බන්ධතාවක් ලබා ගැනීමෙන් පසු, එම පවතින stream එක ඒ වෙනුවට smtp.NewClient වෙත භාර දෙන්න.

තම සමර්පණ වරායේ STARTTLS අවශ්‍ය කරන SMTP සේවාදායකයක් සඳහා, භාරදීම මෙසේ විය හැක:

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 සත්කාරකයට සහ වරායට දැනටමත් සම්බන්ධිත උමඟක් සපයයි, proxy හි CONNECT හුවමාරුව අවසන් කර ඇති අතර. proxy වෙත TCP පමණක් විවෘත කිරීම ප්‍රමාණවත් නොවේ: HTTP ප්‍රතිචාරයක් SMTP ආචාරයක් නොවේ.

mailHost යනු SMTP සේවාදායකයේ සත්කාරක නාමයයි, වරායක් රහිතව. SMTP සත්‍යාපනය සහ සහතික සත්‍යාපනය සඳහා එම අනන්‍යතාවය තබා ගන්න. HTTPS proxy වෙත TLS සම්බන්ධතාවක් මාර්ගයේ වෙනත් කොටසක් ආරක්ෂා කරයි.

නැවත ලබා දුන් සේවාදායකය යෙදුමේ පවතින SMTP සත්‍යාපනය සහ තැපැල් ගනුදෙනුව සඳහා සූදානම්ය. අවසන් වූ පසු එය වසන්න. ඇමතීම, CONNECT සහ පසුකාලීන ප්‍රොටොකොල් මෙහෙයුම් යෙදුමේ කාලසීමා ප්‍රතිපත්තියෙන් සීමා කරන්න.

proxy තෝරාගත් තැපැල් වරායට CONNECT අනුමත කළ යුතුය. සමහරක් එය 443 වරායේ HTTPS ගමනාන්තවලට සීමා කරයි. ව්‍යංග TLS සහිත SMTP සඳහා, STARTTLS නිකුත් කිරීම වෙනුවට NewClient ඇමතීමට පෙර ගමනාන්තයේ TLS සැසිය ස්ථාපිත කරන්න.

අදාළ ලිපි