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.

Izihloko ezihlobene