Mutt 在指定 smtp 服务器时不发送电子邮件

Mutt 在指定 smtp 服务器时不发送电子邮件

我正在尝试用作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_urlset 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 时,它应该可以正常工作,因为它正在使用存储的证书。

相关内容