gpt4 book ai didi

node.js - 从 Nodemailer 到 Postfix 的加密连接失败,出现 "SSL23_GET_SERVER_HELLO:unknown protocol"

转载 作者:太空宇宙 更新时间:2023-11-03 13:22:16 28 4
gpt4 key购买 nike

我使用 Postfix 和 Dovecot 配置了一个 SMTP 邮件服务器。

当我尝试使用外部客户端通过 TLS 发送电子邮件时,出现以下错误:

/var/log/syslog:

Oct 31 19:40:49 designtuner postfix/submission/smtpd[30394]: connect from unknown[185.81.141.117]
Oct 31 19:40:49 designtuner postfix/submission/smtpd[30395]: connect from unknown[185.81.141.117]
Oct 31 19:40:49 designtuner postfix/submission/smtpd[30394]: lost connection after CONNECT from unknown[185.81.141.117]
Oct 31 19:40:49 designtuner postfix/submission/smtpd[30394]: disconnect from unknown[185.81.141.117] commands=0/0
Oct 31 19:40:49 designtuner postfix/submission/smtpd[30395]: lost connection after CONNECT from unknown[185.81.141.117]
Oct 31 19:40:49 designtuner postfix/submission/smtpd[30395]: disconnect from unknown[185.81.141.117] commands=0/0

Node JS 客户端:

{ Error: 1XXXXXXXXXX35275584:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:797:
code: 'ECONNECTION', command: 'CONN' }

Node JS 文件:

let transporter = nodemailer.createTransport({
host: 'mail.designtuner.com',
port: 587,
secure: true, // secure:true for port 465, secure:false for port 587
auth: {
user: 'admin@designtuner.com',
pass: 'XXXXXXX'
},
tls: {
rejectUnauthorized: false
}
});

我错过了什么吗?是因为我的反向 DNS 还没有传播吗?我最近更新了我的反向 DNS,但该网站可以通过 Web 浏览器正常访问,并且 SSL 证书似乎工作正常。

最佳答案

SMTP 和 STARTTLS

加密的SMTP有两种方式:465端口的SMTPs,先建立TLS握手,然后启动SMTP session ;587端口的SMTP with STARTTLS,先启动SMTP session ,后初始化TLS >STARTTLS SMTP 命令(然后以身份验证和所有要保护的内容开始)。

SMTP(首先是 TLS,端口 465)已被弃用;具有 STARTTLS(端口 587)的符合标准的 SMTP 并不意味着在安全或隐私方面有任何缺陷。正确配置的 SMTP 服务器将不允许在 SMTP 提交端口上进行任何不安全的连接。

使用 Nodemailer 强制加密

nodemailer 的secure 标志只是为了在SMTP 之前指示TLS,这一点也由该行后面的注释指示(也明确说明了使用什么设置)。

secure: true, // secure:true for port 465, secure:false for port 587

查看 Nodemailer documentation ,还有一些关于配置选项的进一步信息:

  • options.secure if true the connection will only use TLS. If false (the default), TLS may still be upgraded to if available via the STARTTLS command.

  • [...]

  • options.requireTLS if this is true and secure is false, it forces Nodemailer to use STARTTLS even if the server does not advertise support for it.

换句话说,要按照标准和最佳实践实现加密 session ,请设置 requireTLS 而不是 secure 并在端口 587 上使用 SMTP 提交。

关于node.js - 从 Nodemailer 到 Postfix 的加密连接失败,出现 "SSL23_GET_SERVER_HELLO:unknown protocol",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47042083/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com