我正在尝试配置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)
)
什么可能会导致这个问题?
就我而言,此问题是由于 msmtp 默认启用 StartTLS 引起的。当启用StartTLS时,msmtp将连接到服务器并等待服务器发送数据(SMTP欢迎消息)。如果服务器不支持 StartTLS,并且希望从一开始就使用 SSL 加密连接,则它不会发送数据,而是等待客户端建立 SSL 连接。
所以你可以尝试tls_starttls off在defaults的部分进行设置~/.msmtprc。还要检查端口是否正确。
(为了解决这个问题,我验证了strace msmtp当 msmtp 挂起时,它正在连接到正确端口上的正确服务器并等待接收数据,而openssl s_client在同一服务器和端口上使用似乎可以工作。)