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 時,它應該可以正常工作,因為它正在使用儲存的憑證。

相關內容