【问题标题】:Getting SSL error while sending email, can't connect to Postfix发送电子邮件时出现 SSL 错误,无法连接到 Postfix
【发布时间】:2014-11-07 07:22:19
【问题描述】:
var nodemailer = require('nodemailer');
var smtpTransport = require('nodemailer-smtp-transport');

var transport = nodemailer.createTransport(smtpTransport({
  host: 'mail.mydomain.com',
  port: 587,
  secure: true,
  auth: {
    user: 'hello',
    pass: 'thepassword'
  }
}));

var mailOptions = {
  from: 'Tester <test@mydomain.com>', // sender address
  to: 'someemail@gmail.com', // list of receivers
  subject: 'Hello', // Subject line
  text: 'hey', // plaintext body
  html: 'hey' // html body
};

transport.sendMail(mailOptions, function (error, info) {
  if (error) {
    console.log(error);
  } else {
    console.log('Message sent: ' + info.response);
  }
});

我正在尝试连接到我自己的 postfix 服务器以通过 SMTP 发送电子邮件。但是,当我运行它时,我得到:

[Error: 139969407567744:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:787: ]

我确定我的 SMTP 端口是 587。我确定我的 Postfix 服务器上启用了 SSL。我从 Mac 上的邮件应用程序通过 SSL 连接。

这是我的后缀配置:

myhostname = mail.mydomain.com
myorigin = mail.mydomain.com
mydestination = mail.mydomain.com, mydomain.com, localhost, localhost.localdomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

alias_maps = hash:/etc/aliases, regexp:/etc/aliases_regex
#alias_database = hash:/etc/aliases

smtpd_tls_CAfile=/etc/postfix/tls/startssl-ca-bundle.pem
smtpd_tls_cert_file=/etc/postfix/tls/mail.mydomain.crt
smtpd_tls_key_file=/etc/postfix/tls/mail.mydomain.key
smtpd_use_tls=yes


smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_security_level=may
smtpd_tls_protocols = !SSLv2, !SSLv3

#local_recipient_maps = proxy:unix:passwd.byname $alias_maps

milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = inet:127.0.0.1:8891

virtual_alias_domains =mydomain.com
virtual_alias_maps = hash:/etc/postfix/virtual

我正在为我的 Postfix 服务器使用 StartSSL。在我的 Node.js 服务器上,我看到了这个:

StartCom_Certification_Authority_2.pem
StartCom_Certification_Authority_G2.pem
StartCom_Certification_Authority.pem

/etc/ssl。所以,我假设我的 Node.js 服务器已经安装了根证书。

当我运行上面的 Node.js 代码时,我在 mail.log 上得到了这个:

Sep 13 04:08:30 d-mail postfix/submission/smtpd[724]: connect from unknown[107.170.206.11]
Sep 13 04:08:30 d-mail postfix/submission/smtpd[724]: lost connection after UNKNOWN from unknown[107.170.206.11]
Sep 13 04:08:30 d-mail postfix/submission/smtpd[724]: disconnect from unknown[107.170.206.11]

我不确定为什么我无法从我的 Node.js 应用程序连接,但我可以在我自己的 Macbook 上完美连接。

我需要在我的 Node.js 服务器上安装一些证书吗?

【问题讨论】:

    标签: javascript node.js ssl postfix-mta nodemailer


    【解决方案1】:

    使用端口 587,您不会直接使用 SSL,而是从纯文本开始,然后使用 STARTTLS 命令升级到 SSL。这意味着secure 必须为假。见https://github.com/andris9/nodemailer-smtp-transport

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-08
      • 1970-01-01
      • 2017-06-08
      • 1970-01-01
      • 2021-12-01
      • 2013-11-24
      • 2011-04-08
      • 1970-01-01
      相关资源
      最近更新 更多