Afhenda CONNECT-göngin SMTP-biðlinum Go
Notaðu smtp.NewClient með þegar uppsettri göng og haltu SMTP-hýslinafni og STARTTLS-handabandi aðskildum frá proxy-uppsetningunni.
smtp.Dial opnar nýja tengingu við heimilisfang sitt. Eftir að hafa fengið tengingu í gegnum HTTP CONNECT-proxy skal afhenda það núverandi straum til smtp.NewClient í staðinn.
Fyrir SMTP-þjón sem krefst STARTTLS á sendingarporti sínu getur afhendingin verið svona:
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
}Pakkarnir eru net, net/smtp og crypto/tls. Kallsaðilinn útvegar göng sem þegar eru tengd við tilætlaða SMTP-vél og port, með CONNECT-skiptum proxysins lokið. Að opna bara TCP að proxynu er ekki nóg: HTTP-svar er ekki SMTP-kveðja.
mailHost er hýslinafn SMTP-þjónsins, án ports. Haltu þeirri auðkennu fyrir SMTP-auðkenningu og vottorðasannprófun. TLS-tenging við HTTPS-proxy verndar annan legg leiðarinnar.
Skilaði biðillinn er tilbúinn fyrir núverandi SMTP-auðkenningu og póstviðskipti forritsins. Lokaðu honum þegar þú ert búinn. Takmarkaðu hringingu, CONNECT og síðari prótókolaðgerðir með frestastefnu forritsins.
Proxyn verður að leyfa CONNECT að völdu póstporti. Sumir takmarka það við HTTPS-áfangastaði á porti 443. Fyrir SMTP með óbeinum TLS skaltu koma á TLS-setu áfangastaðarins áður en NewClient er kallað í stað þess að gefa út STARTTLS.