Trosglwyddo'r twnnel CONNECT i glient SMTP Go
Defnyddiwch smtp.NewClient gyda thwnnel sydd eisoes wedi'i sefydlu a chadwch enw gwesteiwr SMTP a'r ysgwyd llaw STARTTLS ar wahân i osodiad y proxy.
smtp.Dial yn agor cysylltiad newydd i'w gyfeiriad. Ar ôl cael cysylltiad trwy ddirprwy HTTP CONNECT, trosglwyddwch y ffrwd bresennol honno i smtp.NewClient yn lle hynny.
Ar gyfer gweinydd SMTP sy'n gofyn am STARTTLS ar ei borth cyflwyno, gall y trosglwyddiad fod fel hyn:
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
}Y pecynnau yw net, net/smtp a crypto/tls. Mae'r galwr yn darparu twnnel sydd eisoes wedi'i gysylltu â gwesteiwr a phorth SMTP y bwriadwyd, gyda chyfnewidiad CONNECT y dirprwy wedi'i gwblhau. Nid yw agor TCP i'r dirprwy ar ei ben yn ddigon: nid yw ymateb HTTP yn gyfarchiad SMTP.
mailHost yw enw gwesteiwr y gweinydd SMTP, heb borth. Cadwch y hunaniaeth honno ar gyfer dilysu SMTP a gwirio tystysgrifau. Mae cysylltiad TLS â dirprwy HTTPS yn amddiffyn rhan arall o'r llwybr.
Mae'r cleient a ddychwelwyd yn barod ar gyfer dilysu SMTP a thrafodiad post presennol y rhaglen. Caewch ef pan fyddwch wedi gorffen. Cyfyngwch ddeialu, CONNECT a gweithrediadau protocol dilynol â pholisi terfynau amser y rhaglen.
Rhaid i'r dirprwy ganiatáu CONNECT i'r porth post a ddewiswyd. Mae rhai yn ei gyfyngu i gyrchfannau HTTPS ar borth 443. Ar gyfer SMTP TLS ymhlyg, sefydlwch sesiwn TLS y gyrchfan cyn galw NewClient yn lle cyhoeddi STARTTLS.