msmtp 挂起而不是传递消息

mbo*_*ork 2 email

我正在尝试配置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
Run Code Online (Sandbox Code Playgroud)

当我调用 时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
Run Code Online (Sandbox Code Playgroud)

但什么也没发生。

(该文件mailtest.txt如下所示:

To: to@address
From: from@address
Subject: A test

msmtp testing
Run Code Online (Sandbox Code Playgroud)

什么可能会导致这个问题?

a3n*_*3nm 6

就我而言,此问题是由于 msmtp 默认启用 StartTLS 引起的。当启用StartTLS时,msmtp将连接到服务器并等待服务器发送数据(SMTP欢迎消息)。如果服务器不支持 StartTLS,并且希望从一开始就使用 SSL 加密连接,则它不会发送数据,而是等待客户端建立 SSL 连接。

所以你可以尝试tls_starttls offdefaults的部分进行设置~/.msmtprc。还要检查端口是否正确。

(为了解决这个问题,我验证了strace msmtp当 msmtp 挂起时,它正在连接到正确端口上的正确服务器并等待接收数据,而openssl s_client在同一服务器和端口上使用似乎可以工作。)