msmtp 挂起,无法传送邮件

msmtp 挂起,无法传送邮件

我正在尝试配置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 offdefaults部分中进行设置~/.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)
  1. 单击 Scaleway 控制台侧面菜单上的“实例”。

  2. 单击安全组选项卡。

  3. 选择要启用 SMTP 端口的安全组。注意:如果您尚未创建任何安全组,则您的实例已分配给默认安全组,因此您应该修改该安全组。

  4. 勾选启用 SMTP 复选框。注意:安全组设置将立即在所有虚拟实例上更新。

[0]https://www.scaleway.com/en/docs/console/my-account/how-to/send-emails-from-your-instance/

相关内容