Nikeza i-CONNECT tunnel ku-SMTP client ye-Go
Sebenzisa i-smtp.NewClient ne-tunnel esivele isungulwe futhi uhlukanise igama le-SMTP host ne-STARTTLS handshake kusukela kukuhlelwa kwe-proxy.
smtp.Dial ivula ukuxhumana okusha kukheli lwayo. Ngemva kokuthola ukuxhumana nge-HTTP CONNECT proxy, dlulisela lowo mfula okhona ku-smtp.NewClient esikhundleni salokho.
Kuseva ye-SMTP edinga i-STARTTLS kupoti yayo yokuthumela, ukudluliselwa kungaba njengalokhu:
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
}Amaphakethe yi-net, net/smtp ne-crypto/tls. Umuntu oshayayo unikeza i-tunnel esivele ixhunywe ku-SMTP host nepoti okuhlosiwe, kanti ukushintshana kwe-CONNECT kwe-proxy sekuqediwe. Ukuvula i-TCP kuphela ku-proxy akwanele: impendulo ye-HTTP ayiyona indumiso ye-SMTP.
mailHost igama le-SMTP host yeserver, ngaphandle kwepoti. Gcina lobo bunjalo bokuqinisekisa i-SMTP nokuqinisekisa isitifiketi. Ukuxhumana kwe-TLS ku-proxy ye-HTTPS kuvikela enye ingxenye yomzila.
Iklayenti elibuyisiwe likulungele ukuqinisekisa i-SMTP nomsebenzi weposi okhona wohlelo lokusebenza. Vala uma usuqedile. Khawulela ukushaya, i-CONNECT nemisebenzi elandelayo yephrothokholi ngomgomo wesikhathi sokugcina wohlelo.
I-proxy kufanele ivumele i-CONNECT kupoti yeposi ekhethiwe. Amanye ayinciphisa ezinhlosweni ze-HTTPS kupoti 443. Kwi-SMTP ene-TLS ecashile, sungula iseshini ye-TLS yendawo okuhlosiwe ngaphambi kokushaya i-NewClient esikhundleni sokukhipha i-STARTTLS.