![Mutt 在指定 smtp 服务器时不发送电子邮件](https://linux22.com/image/36171/Mutt%20%E5%9C%A8%E6%8C%87%E5%AE%9A%20smtp%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%97%B6%E4%B8%8D%E5%8F%91%E9%80%81%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6.png)
我正在尝试用作mutt
我的电子邮件客户端,它对于我的 Gmail 帐户运行良好。但是当我使用工作电子邮件时,它不会发送电子邮件。它不会给出任何错误,只是不发送它们。我的.muttrc
文件中导致此问题的行是:
设置 smtp_url = "smtp://mail.my_work_email_server.com:587"
添加 时,该行为不会改变smtp_pass
,更改电子邮件服务器的名称(即使用“虚构”服务器地址)也不会改变该行为。
答案1
我有同样的事情,这对我有用。
set ssl_starttls=yes
set ssl_force_tls=yes
set imap_user = "[email protected]"
set imap_pass = "!HASHEDPASSWORD!"
set folder = imap://mail.example.com/
set spoolfile = imap://mail.example.com/INBOX
# SMTP user auth
# # fill in the right user and pass based on your setup
# # protocols: smtp for TLS (25/587), smtps for SSL (465)
set smtp_url = "smtp://[email protected]:587"
set smtp_pass = "$imap_pass"
# Where to save copies of outgoing mail
set record = '+Sent'
使它对我不起作用的是配置文件中的内容顺序以及文件夹的“设置记录”定义,该文件夹是指向不存在文件夹的链接。
当对创建文件夹的问题回答“否”时,它被挂起,并且没有看到流向 SMTP 服务器的流量。
PS:检查源配置文件,它们可能指定冲突的设置和/或错误的顺序。
华泰
答案2
您是否能够使用该计算机上的另一个邮件客户端通过 SMTP 成功发送邮件?您可以远程登录到您的 SMTP 服务器并建立连接吗?您正在使用 STARTTLS 吗?
在 mutt 中,您使用协议smtps
来表示从一开始就使用 TLS/SSL 保护的连接。如果您的邮件服务器期望如此(现在许多邮件服务器都这样做),那可能是您的问题。
但是,如果您的邮件服务器希望使用,那么您使用中的STARTTLS
常规协议并确保使用。smtp://
smtp_url
set ssl_starttls=yes
下面是一个示例telnet
会话,显示了使用 STARTTLS 的邮件服务器:
$ telnet smtp.example.com 587
Trying 127.0.0.1...
Connected to smtp.example.com.
Escape character is '^]'.
220 smtp.example.com ESMTP Postfix (Debian/GNU)
EHLO test
250-
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
QUIT
221 2.0.0 Bye
Connection closed by foreign host.
答案3
我花了一整天的时间来解决这个问题,并调整了不同 SSL/TLS 和端口配置之间的许多组合,但没有成功,直到今天我终于专门尝试了这个:
set ssl_starttls = no
看来 mutt 的默认行为是尝试 STARTTLS,所以你必须专门告诉它不
smtp_url
除了明显的和之外,不需要其他配置smtp_pass
。我现在可以用这个完美地发送邮件.muttrc
set ssl_starttls = no
set smtp_url = "smtp://[email protected]@mail.example.com:587/"
set smtp_pass = "password"
这与不建议来自我的电子邮件提供商的 SSL 配置。我仍然无法使用 465 端口的推荐配置。
这是我调整过的所有影响发送邮件的配置,如果其他人想尝试的话:
set ssl_starttls = no # apparently yes is default.
set ssl_force_tls = yes
set smtp_authenticators = "login"
set smtp_url = "smtp[s]://..."
set certificate_file = "~/.mutt/certificates" # some recommend creating the file first: mkdir ~/.mutt && touch ~/.mutt/certificates
set ssl_verify_host = no
set ssl_verify_dates = no
答案4
我意识到这是一个旧线程,但昨天我花了两个小时追踪为什么上述配置对我不起作用,我想分享解决方案以节省其他人的时间。
问题是我需要至少接受一次来自 Google SMTP 服务器的证书,这需要在不重定向输入的情况下运行 mutt,否则 mutt 无法提示您接受证书。
顺便说一句,您应该选择 (a) 始终,以便将证书存储在.mutt/certificates
.如果您选择 (o) 一次,它将使用提供的证书,但不会将其存储在 .mutt/certificates
.
因此,运行 mutt 而不重定向输入(这包括管道到标准输入),然后接受提供的证书A总是。之后,下次运行 mutt 时,它应该可以正常工作,因为它正在使用存储的证书。