smtp.Dial jiftaħ konnessjoni ġdida lejn l-indirizz tiegħu. Wara li tikseb konnessjoni permezz ta' proxy HTTP CONNECT, għaddi dak il-fluss eżistenti lil smtp.NewClient minflok.

Għal server SMTP li jeħtieġ STARTTLS fuq il-port tas-sottomissjoni tiegħu, il-konsenja tista' tkun hekk:

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
}

Il-pakketti huma net, net/smtp u crypto/tls. Is-sejjieħ jipprovdi tunnel diġà konness mal-host u l-port SMTP mixtieqa, bil-bidla CONNECT tal-proxy kompluta. Li tiftaħ biss TCP lejn il-proxy mhijiex biżżejjed: risposta HTTP mhijiex tislima SMTP.

mailHost huwa l-isem tal-host tas-server SMTP, mingħajr port. Żomm dik l-identità għall-awtentikazzjoni SMTP u l-verifika taċ-ċertifikat. Konnessjoni TLS ma' proxy HTTPS tipproteġi parti oħra tar-rotta.

Il-klijent irritornat huwa lest għall-awtentikazzjoni SMTP u t-tranżazzjoni tal-posta eżistenti tal-applikazzjoni. Agħlqu meta tispiċċa. Illimita d-djal, il-CONNECT u l-operazzjonijiet tal-protokoll sussegwenti bil-politika tal-iskadenzi tal-applikazzjoni.

Il-proxy għandu jippermetti CONNECT lejn il-port tal-posta magħżul. Xi wħud jillimitawh għal destinazzjonijiet HTTPS fuq il-port 443. Għal SMTP b'TLS impliċitu, stabbilixxi s-sessjoni TLS tad-destinazzjoni qabel ma ssejjaħ NewClient minflok toħroġ STARTTLS.

Artikli relatati