我将nodemailer配置为发送到hostgator(正如我在这里学习的那样:https://stackoverflow.com/a/56291143/954986):
const transporter = nodemailer.createTransport(smtpTransport({
name: "hostgator",
host: "mail.mysite.com",
port: 465,
secure: true,
auth: {
user: "test@mysite.com",
pass: $password,
}
}));
然而,当我发送消息时,我得到:Error [ERR_TLS_CERT_ALTNAME_INVALID]: Hostname/IP does not match certificate's altnames: Host: mail.mysite.com. is not in the cert's altnames: DNS:*.hostgator.com, DNS:hostgator.com
它只在我添加tls: { rejectUnauthorized: false}
时才起作用,我想避免这样做。
奇怪的是,当我使用任何在线SSL检查器查找“mail.mysite.com”时,它显示SSL配置正确,并且我的站点域显示在证书中。
**似乎不知何故hostgator正在为我提供的主机提供不同的证书?**任何想法可能会发生什么,或者我如何深入挖掘这一点?
***有趣的更新:***我做了一些更多的挖掘,并找到了域名“cloud64.hostgator.com”。我用这个作为传输主机,而不是mail.mysite.com,它可以在启用TLS的情况下工作!电子邮件甚至发送得更快。
但我想弄明白。这是一个稳定的主机,我可以继续使用?在SMTP层是否发生了某种重定向?这是怎么回事?
2条答案
按热度按时间9fkzdhlc1#
从我看到的你连接到:
1.在第一种情况下,您正在获取**.hostgator.com* TSL证书,该证书对您的域无效,因此您的TSL验证失败。
1.在第二种情况下,您使用的是 * cloud64.hostgator.com *,它可能有一些通用的MX记录,因此您的域将工作。这有点奇怪,但我可以想象它的黑客了某种方式。
在我看来,你有不正确的DNS MX record(s)设置为您的域。您必须正确添加MX记录,以便在通过TLS SMTP连接时证书与您的域匹配。
对于hostgator,您可以设置MX records like this。
当然,如果你愿意的话,你也可以阅读RFC974 - the mail routing with domain system和RFC 8314- on TLS安全性,它给了你它应该如何工作的细节。
**注意:**支持哪个版本的TLS取决于服务端和客户端之间的协商。他们都同意最高的共同标准。最新版本是TLSv1.3。
zy1mlcev2#
或者你可以在auth下面添加tls。