Għaddi t-Tunnel CONNECT lill-klijent SMTP ta' Go
Uża smtp.NewClient ma' tunnel diġà stabbilit u żomm l-isem tal-host SMTP u l-handshake STARTTLS separati mill-konfigurazzjoni tal-proxy.
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.