我正在尝试配置msmtp
(在 Ubuntu 12.04 上)。当我尝试发送电子邮件时,它会“挂起”(好吧,ctrl-c 会中止它,所以它实际上不是挂起,但它似乎什么也没做)。这是我的.msmtprc
(当然,这里和后面的密码和所有地址都是正确的):
account wmi
host smtp.wmi.amu.edu.pl
port 465
auth on
user mbork
password ***
from from@address
account default : wmi
当我调用时cat mailtest.txt | msmtp -v to@address
,我得到了这个:
ignoring system configuration file /etc/msmtprc: Nie ma takiego pliku ani katalogu
loaded user configuration file /home/marcin/.msmtprc
falling back to default account
using account default from /home/marcin/.msmtprc
host = smtp.wmi.amu.edu.pl
port = 465
timeout = off
protocol = smtp
domain = localhost
auth = choose
user = mbork
password = *
passwordeval = (not set)
ntlmdomain = (not set)
tls = off
tls_starttls = on
tls_trust_file = (not set)
tls_crl_file = (not set)
tls_fingerprint = (not set)
tls_key_file = (not set)
tls_cert_file = (not set)
tls_certcheck = on
tls_force_sslv3 = off
tls_min_dh_prime_bits = (not set)
tls_priorities = (not set)
auto_from = off
maildomain = (not set)
from = from@address
dsn_notify = (not set)
dsn_return = (not set)
keepbcc = off
logfile = (not set)
syslog = (not set)
aliases = (not set)
reading recipients from the command line
什么也没有发生。
(该文件mailtest.txt
如下所示:
To: to@address
From: from@address
Subject: A test
msmtp testing
)
什么可能导致这个问题?
答案1
在我的情况下,这个问题是由于 msmtp 默认启用 StartTLS 造成的。启用 StartTLS 后,msmtp 将连接到服务器并等待服务器发送数据(SMTP 欢迎消息)。如果服务器不支持 StartTLS 并且从一开始就希望使用 SSL 加密连接,它将不会发送数据并等待客户端设置 SSL 连接。
因此,您可以尝试tls_starttls off
在defaults
部分中进行设置~/.msmtprc
。同时检查端口是否正确。
(为了解决这个问题,我验证了strace msmtp
当 msmtp 挂起时它是否连接到正确端口上的正确服务器并等待接收数据,而openssl s_client
在同一服务器和端口上使用似乎有效。)
答案2
注意!“从命令行读取收件人”是 msmtp 在尝试连接服务器之前发出的最后一条信息消息。如果它在此时挂起,则意味着它无法连接。与命令行无关,所以不要像我一样去做徒劳无功的事情。您可以尝试使用 telnet 连接(例如 telnet mail.example.com 587)以查看服务器是否响应。如果没有,请仔细检查其 url 和端口。或者,在我的情况下,服务器上的 fail2ban 在我因用户名错误而多次登录失败后禁止了我。在这种情况下,简单的答案是等待几个小时让禁令到期。
答案3
好的,问题解决了。 msmtp
版本 1.4.26 似乎坏了;安装 v1.4.30 后它开始工作了。
答案4
Scaleway 默认阻止典型的 SMTP 端口 - 25、465、587,这导致了相同的日志结果。
他们的文档展示了如何启用 SMTP 访问,存档自他们的网站 2022-01-06 [0]:
您可以从安全组配置中启用它们。
要求:
- 您有一个帐户并登录到Scaleway控制台
- 您已创建至少一个实例
- 您有一个 Build Level 帐户
- 您已完成身份识别流程(KYC)
单击 Scaleway 控制台侧面菜单上的“实例”。
单击安全组选项卡。
选择要启用 SMTP 端口的安全组。注意:如果您尚未创建任何安全组,则您的实例已分配给默认安全组,因此您应该修改该安全组。
勾选启用 SMTP 复选框。注意:安全组设置将立即在所有虚拟实例上更新。
[0]https://www.scaleway.com/en/docs/console/my-account/how-to/send-emails-from-your-instance/