------------------------------------------------------------------

------------------------------------------------------------------

简短版本:我尝试使用 Mutt 发送邮件。它失败并显示“闹钟”。这是什么意思,我该如何修复它?

长版本:我有一个正在运行的 ubuntu 服务器微小的 RSS。它使用 php 的 mail() 函数发送每日电子邮件摘要。我希望它能正常工作。我有一个带有 Google 应用的域,所以我希望从[电子邮件保护]。我尝试了 postfix 和 sendmail,但未能正确配置它们(而且我认为由于它们是 MTA,所以它们有点大材小用)。我听说(读作:希望)mutt 可用于替代 sendmail 以实现 php 的目的。因此,为了从 mutt 发送邮件,我为自己的 gmail 帐户创建了一个 .muttrc,并且发送工作正常。因此我怀疑 mutt 安装正确。但是,当我将配置更改为适用于我的域名时,它不起作用。这是我的新 .muttrc:

set from = "[email protected]"
set realname = "vassago"
set imap_user = "[email protected]"
set imap_pass = <password>
set smtp_url="smtp://[email protected]:587/"
set smtp_pass=<password>
set folder = "imaps://imap.gmail.com:993"
set spoolfile = "+INBOX"
set postponed ="+[Gmail]/Drafts"
set header_cache = ~/.mutt/cache/headers
set message_cachedir =~/.mutt/cache/bodies
set certificate_file =~/.mutt/certificates
set move = no
set imap_keepalive = 900

如果我只是运行 mutt,我可以看到电子邮件显示出来。我尝试删除 smtp_url 和 smtp_pass 行,但这也不起作用。使用此配置,我运行

echo "hi again" | mutt -s "test03 from mutt" <my email address>

过了一段时间,打印出“闹钟”,程序返回,邮件似乎没有发送。我做错了什么?

答案1

罪魁祸首是 smtp_url。我更改了以下行:

set smtp_url="smtp://[email protected]@smtp.gmail.com:587/"

现在它起作用了。我仍然不知道“闹钟”是什么意思。

答案2

实际上,“闹钟”是一个与超时有关的混合错误信息。

最近,我在尝试调试我的 mutt“.muttrc”文件时,一直被那个可爱的“闹钟”错误提示所困扰。主要问题是“set smtp_url”参数和 msmtp 的 connect_timeout 参数的组合。本地互联网服务充其量也不稳定,因此存在超时问题。

主要问题:当我通过命令行向 mutt 发送一个多行文本文件时:cat report.out | mutt -s "Summary" "[电子邮件保护]“mutt 反复弹出神秘消息闹钟,我浪费了大量时间寻找 mutt 中的问题。确实有一个问题,但罪魁祸首其实是在 .msmtprc 中。先修复它。

MSMTP 背景:但首先,介绍一些背景。我正在运行 msmtp,并且认为它运行良好:例如,cmd 行 cat report.out | msmtp -a default[电子邮件保护] 正如预期的那样,发送了文件的最后一行,没有主题。

这是 .msmtprc 的副本。我已包含启用安全 smtps 的技巧:

------------------------------------------------------------------

account gmail
host smtp.gmail.com          
port 465                  
from "[email protected]"   
tls on                       
#tls_starttls on              
# If you get a "server sent empty reply" error, add the following line:
    tls_starttls off
# This allows msmtp to use SSL/TLS (port 465) in place of STARTTLS (port 587)
tls_trust_file /etc/ssl/certs/ca-certificates.crt
auth on                     
user "myemailacct"       
password "mypassword"       
logfile ~/.msmtp.log

# Set a default account
account default : gmail

------------------------------------------------------------------

输入 msmtp --serverinfo 会显示各种信息,例如(仅显示前两行):SMTP 服务器位于 smtp.gmail.com(qo-in-f109.1e100.net [173.194.66.109]),端口 465:smtp.gmail.com ESMTP w44sm25263807qta.4 - gsmtp 这表明 smtps 配置正确(到目前为止)。如果配置不正确,您将收到以下信息:msmtp:服务器发送了空回复 msmtp:无法发送邮件(帐户默认来自 /home/owner/.msmtprc)

在修改了 msmtp.rc 之后,我恢复了测试,在 msmtp 和 mutt 之间来回切换。程序偶尔能工作,但不能重现。回想起来,这应该表明存在超时问题。(这里我省略了很多悲伤。)让我们直奔主题,将以下行添加到 .msmtprc(解决了该问题):set connect_timeout = 300 在继续之前,请务必使用 msmtp --serverinfo 测试任何更改。在纠正 mutt 之前,msmtp 服务器必须正常工作。

MUTT 问题/解决方案:接下来,我通过将主机名包含在 smtp_url 参数中来更正 .muttrc。我注释掉了:# set hostname=gmail.com 并将主机名插入 url:set smtp_url = "smtps://[电子邮件保护]@smtp.gmail.com:465

结果:我添加了 .msmtprc 超时行并修复了上面提到的 .muttrc host_name 问题后,一切都运行良好,虽然速度很慢,但始终如一。速度慢是由于互联网连接不良造成的。有两家大型医院每天两次进行大量数据转储,占用了主干。此外,由于郊区基础设施糟糕,似乎每次有云飘过,连接就会中断。请写信给您的参议员和众议员,支持网络中立。

相关内容