smtp.Dial yana buɗe sabon haɗi zuwa adireshinsa. Bayan samun haɗi ta hanyar proxy na HTTP CONNECT, mika wannan rafi da ke akwai ga smtp.NewClient maimakon.

Ga uwar garken SMTP da ke buƙatar STARTTLS a tashar tura saƙo, miƙawa na iya zama kamar haka:

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
}

Fakitin su ne net, net/smtp da crypto/tls. Mai kira yana ba da rami da aka riga ya haɗa da masaukin SMTP da tashar da ake so, tare da kammala musayar CONNECT na proxy. Buɗe TCP kawai zuwa proxy bai isa ba: amsar HTTP ba gaisuwar SMTP ba ce.

mailHost shine sunan masaukin uwar garken SMTP, ba tare da tasha ba. Ka riƙe wannan asalin don tabbatar da SMTP da tabbatar da takardar shaidar. Haɗin TLS zuwa proxy na HTTPS yana kare wani ɓangare na hanyar.

Abokin cinikin da aka dawo yana shirye don tabbatar da SMTP da ma'amalar wasiƙa da ke akwai na aikace-aikacen. Rufe shi idan ka gama. Kayyade bugun kira, CONNECT da ayyukan yarjejeniya na gaba da manufofin ƙayyadadden lokaci na aikace-aikacen.

Proxy dole ne ya ba da izinin CONNECT zuwa tashar wasiƙar da aka zaɓa. Wasu suna iyakance shi ga wuraren HTTPS a tasha 443. Don SMTP mai TLS a fakaice, kafa zaman TLS na wurin da ake nufi kafin kiran NewClient maimakon fitar da STARTTLS.

Labarai masu alaƙa