代码之家  ›  专栏  ›  技术社区  ›  Grant Gryczan

节点“smtp服务器”模块无法与TLS一起工作

  •  1
  • Grant Gryczan  · 技术社区  · 6 年前

    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);
    

    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 重定向到8025,我只是通过我的Gmail帐户发送。

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Tom Mettam    6 年前

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

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

    secure: false ,这将

    但是,为了获得最大的兼容性,您应该启动两个smtp服务器实例—一个在端口25上侦听,使用 ,一个监听端口465 安全:正确 .

    编辑:

    安全:正确 你的剧本写得很好。

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

    这是我的结果使用你的脚本与 远离的:

    https://gyazo.com/05a34942d2cc4a2d633e830258b90f88

    如您所见,连接升级到TLS很好,一切都很顺利。这是25号端口。