我正在尝试在我的树莓派上设置自动电子邮件,但它不会协商 STARTTLS 会话。
ssmtp.conf 如下 -
root=postmaster
mailhub={mailserver}:587
AuthUser={username}
AuthPass={password}
UseTLS=TES
UseSTARTTLS=YES
hostname={hostname}
FromLineOverride=YES
DEBUG=YES
没有重新别名。我在 mail.err 中收到的错误如下 -
sSMTP[13572]: Cannot open {mailserver}:587
在系统日志中我得到以下几行 -
sSMTP[13119]: Creating SSL connection to host
sSMTP[13119]: 220 {mailserver} ESMTP Postfix
sSMTP[13119]: EHLO {hostname}
sSMTP[13119]: 250 DSN
sSMTP[13119]: STARTTLS
sSMTP[13119]: 220 2.0.0 Ready to start TLS
sSMTP[13119]: SSL connection using (null)
sSMTP[13119]: Cannot open {mailserver}:587
然后它就挂了。我尝试调整主机名参数、UseTLS 和 UseSTARTTLS 参数,但没有效果。我还尝试设置类似(但很旧)论坛帖子中宣传的 TLS_CA_File 和 TLS_CA_Dir 参数,但这些参数似乎根本不起作用 -
sSMTP[13572]: Unable to set TLS_CA_Dir="/etc/ssl/certs/"
和
sSMTP[12962]: Unable to set TLS_CA_FILE="/etc/ssl/certs/ca-certificates.crt"
服务器端我得到了这个-
postfix/submission/smtpd[7557]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
postfix/submission/smtpd[7557]: connect from unknown[{ip}]
postfix/submission/smtpd[7557]: SSL_accept error from unknown[{ip}]: -1
postfix/submission/smtpd[7557]: warning: TLS library problem: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol:s23_srvr.c:649:
postfix/submission/smtpd[7557]: lost connection after STARTTLS from unknown[{ip}]
postfix/submission/smtpd[7557]: disconnect from unknown[{ip}]
但是,当我在 Ubuntu 18.04 机器上或从 Thunderbird 等桌面电子邮件客户端尝试相同配置时,一切都正常。有什么想法可以解释为什么它无法从 Pi 连接到服务器?
答案1
ssmtp 是无人维护的软件,并且存在已知的 TLS 相关问题。Debian完全移除ssmtp 几个月前从存储库中删除,Ubuntu 将会跟进。
它在 Ubuntu/Debian 中运行的唯一原因是Debian 曾经打过补丁(出于许可原因,将 ssmtp 移植到 GnuTLS,并偶然解决了原始代码中的错误)。
(对于你的情况,我会猜测该错误是由于客户端发送了过时的“SSLv2 兼容”ClientHello 消息而导致的,该消息已远远超过了其有效日期,并且 Postfix 服务器上的 OpenSSL 不再识别该消息。)
使用参数的能力TLS_CA_*
是 Debian 添加的另一个补丁——原始的 ssmtp 软件没有这些选项,因为它执行无证书验证一点儿也不。
改用 msmtp。