gpt4 book ai didi

node.js - Node `smtp-server` 模块无法使用 TLS

转载 作者:太空宇宙 更新时间:2023-11-04 00:05:06 25 4
gpt4 key购买 nike

这个运行 SMTP 服务器的最少代码可以正常工作。当我向服务器发送电子邮件时,所有内容(由于 logger 选项)都会按预期记录,并且会收到电子邮件数据。

const {SMTPServer} = require("smtp-server");
const {simpleParser} = require("mailparser");
const server = new SMTPServer({
authOptional: true,
onData: async (stream, session, callback) => {
const parsed = await simpleParser(stream);
callback();
console.log(parsed);
},
logger: true
});
server.listen(8025);

但是,当我启用 TLS 选项时,向我的服务器发送电子邮件将不再记录任何内容。根据日志,我什至没有收到连接。

const fs = require("fs");
const {SMTPServer} = require("smtp-server");
const {simpleParser} = require("mailparser");
const server = new SMTPServer({
secure: true,
authOptional: true,
onData: async (stream, session, callback) => {
const parsed = await simpleParser(stream);
callback();
console.log(parsed);
},
key: fs.readFileSync("privkey.pem"),
cert: fs.readFileSync("cert.pem"),
ca: fs.readFileSync("chain.pem"),
logger: true
});
server.listen(8025);

我认为证书文件是正确的,因为我将它们用于我的 Web 服务器以及我的 Postfix 配置,在同一域上,并且 HTTP/SMTP 输出工作正常且安全。由于此问题,我无法安全地接收电子邮件。

顺便说一句,我正在监听端口 8025,并通过 iptables 从 25 重定向到 8025,并且只是通过我的 Gmail 帐户发送。

这是怎么回事?我做错了什么吗?

最佳答案

By the way, I'm listening to port 8025 with an iptables redirect from 25 to 8025, and I'm just sending via my Gmail account.

因为您使用的是 secure: true,所以您正在强制 TLS 加密。为此,您必须接受端口 465NOT 25 上到服务器的连接。

您可以设置 secure: false,这将仍然允许在端口 25 上通过 STARTTLS 进行加密

但是,为了获得最大兼容性,您应该启动两个 smtp-server 实例 - 一个使用 secure: false 监听端口 25,另一个使用 secure: true 监听端口 465。

编辑:

我刚刚做了一些测试,我可以确认只需从脚本中删除 secure: true 就可以正常工作。

您可以通过 https://www.checktls.com/TestReceiver 进行测试它将检查连接、TLS 升级、您的证书以及其他所有内容。

以下是我使用删除了 secure: true 的脚本得到的结果:

https://gyazo.com/05a34942d2cc4a2d633e830258b90f88

如您所见,连接已升级到 TLS,一切顺利。这是在端口 25 上。

关于node.js - Node `smtp-server` 模块无法使用 TLS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52686092/

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