网络解决方案通过nodemailer的SMTP邮件配置

时间:2018-09-11 15:13:51

标签: server openssl smtp nodemailer

当我使用以下邮件配置时:

options = {
     host: 'smtp.XXXX.com',
     port: 2525,
    secure: false,
    ignoreTLS: true,
    authMethods: ['PLAIN', 'LOGIN', 'XOAUTH2'],
    auth: { 
        user: 'no_reply@XXXX.com', 
        pass: 'XXXXX' 
},  

它返回错误,即

enter image description here

以及当我使用以下配置时:

options = {
        host: 'smtp.XXXX.com',
        port: 465,
        secure: true,
        ignoreTLS: true,
        authMethods: ['PLAIN', 'LOGIN', 'XOAUTH2'],
        auth: { 
            user: 'no_reply@XXXX.com', 
            pass: 'XXXXX' 
        },  
    }; 

它给出错误:ECONNREFUSED,错误代码为ECONNECTION 我不知道我应该为网络解决方案SMTP使用哪个端口和配置。

1 个答案:

答案 0 :(得分:0)

如果您使用的是NodeJS v0.9.2或更高版本,那么您会发现该节点正在对TLS和HTTPS进行默认的证书验证。

这是release note

  

tls,https:默认情况下验证服务器证书(Ben Noordhuis)

这很可能是您所遇到问题的主要原因。

您可以通过在拨打电话之前简单添加以下行来避免此问题:

rejectUnauthorized: false

但这可能会带来严重的安全隐患。即使数据被加密,由于此旁路验证规则,中间人实际上也可以窃取您的数据。您将要发送的数据可能不会转移到原始收件人服务器上,而可能会转移到黑客的服务器上。

由于上述原因,这是一种快速解决方案,但不是推荐的解决方案。

理想情况下,您应该通过确保证书由受信任的CA签名来验证收件人服务器。

您可能需要使用smtp提供程序进行进一步调试,以了解验证方面的差距。每个证书都有一个“主题”,而主题有一个“通用名称”。并且可以有多个与之关联的“ subjectAltNames”。 在验证期间,Node实际上会检查端点,并尝试将其与公用名或subjectAltNames之一匹配。如果存在不匹配,则会像您一次一样抛出错误: 主机名/ IP与证书的altname不匹配

很可能,PORT不是问题。证书验证是问题所在。

希望这可以解决问题。