Fi ọ̀nà abẹ́lẹ̀ CONNECT lé ẹ̀rọ SMTP ti Go lọ́wọ́
Lo smtp.NewClient pẹ̀lú ọ̀nà abẹ́lẹ̀ tí a ti gbé kalẹ̀, kí o sì ya orúkọ agbàlejò SMTP àti ìfọwọ́kàn STARTTLS sọ́tọ̀ kúrò nínú ètò proxy.
smtp.Dial ṣí ìsopọ̀ tuntun sí àdírẹ́sì rẹ̀. Lẹ́yìn tí o bá gba ìsopọ̀ nípasẹ̀ proxy HTTP CONNECT, fi agbára tí ó wà tẹ́lẹ̀ náà lé smtp.NewClient lọ́wọ́ dípò.
Fún ẹ̀rọ SMTP tí ó béèrè STARTTLS ní ibùdókọ̀ ìfiránṣẹ́ rẹ̀, ìfàlọ́wọ́ lè rí bẹ́ẹ̀:
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
}Àwọn àkójọpọ̀ ni net, net/smtp àti crypto/tls. Olùpè náà pèsè ọ̀nà abẹ́lẹ̀ tí ó ti so pẹ̀lú agbàlejò àti ibùdókọ̀ SMTP tí a fẹ́, pẹ̀lú ìparọ́rọ́ CONNECT ti proxy ti parí. Ṣíṣí TCP nìkan sí proxy kò tó: ìdáhùn HTTP kìí ṣe ìkíni SMTP.
mailHost ni orúkọ agbàlejò ẹ̀rọ SMTP, láìsí ibùdókọ̀. Pa orúkọ yẹn mọ́ fún ìjẹ́rìí SMTP àti ìjẹ́rìí ìwé-ẹ̀rí. Ìsopọ̀ TLS sí proxy HTTPS ń dáàbò bo apá mìíràn ti ipa ọ̀nà.
Ẹ̀rọ tí a dá padà ti ṣetán fún ìjẹ́rìí SMTP àti ìgbékalẹ̀ mail tí ó wà tẹ́lẹ̀ ti ohun èlò náà. Pa á nígbà tí o bá parí. Fi ìpè, CONNECT àti àwọn iṣẹ́ ìlànà tó tẹ̀le sílẹ̀ pẹ̀lú ìlànà àkókò ipari ti ohun èlò náà.
Proxy gbọdọ̀ gba CONNECT sí ibùdókọ̀ mail tí a yàn. Àwọn kan fi í mọ́ àwọn ibi HTTPS ní ibùdókọ̀ 443. Fún SMTP pẹ̀lú TLS àṣírí, gbé ìpàdé TLS ti ibi tí a ń lọ kalẹ̀ kí o tó pe NewClient dípò fífi STARTTLS jáde.