我在看这个例子。 http://golang.org/pkg/net/smtp/#example_PlainAuth

package main

import (
    "log"
    "net/smtp"
)

func main() {
    // Set up authentication information.
    auth := smtp.PlainAuth("", "[email protected]", "password", "mail.example.com")

    to := []string{"[email protected]"}
    mesg := []byte("This is the email body.")

    err := smtp.SendMail("mail.example.com:25", auth, "[email protected]", to, mesg)
    if err != nil {
        log.Fatal(err)
    }
}
smtp.PlainAuth是否以纯文本格式将凭据发送到邮件服务器?在野外使用net/smtp安全吗?

最佳答案

PlainAuth使用RFC 4616中的Plain身份验证机制,它是纯明文形式的用户名/密码。通常,在使用此功能时,加密将在较低级别进行,例如,您将创建TLS连接。然后在其上使用PlainAuth。如果您不是通过加密连接进行通信,则使用PlainAuth可能会带来危险,就像流量被拦截一样,用户/通行证很容易获得。

但是如果您阅读了该书,就会看到SendMail函数显示以下内容:



因此,它将在可能的情况下尝试自动升级到TLS。因此,只要您使用支持TLS的服务器,就应该相对安全。另一个Auth选择是CramMD5,但是服务器对这种方法的支持通常比大多数支持的PlainAuth少。

10-06 14:21