我正在運行一個 Postfix 伺服器,它使用 Dovecot LMTP 進行郵件傳遞。我這樣做是因為它與篩子配合得很好。
然而,我最近收到了一些主題行中帶有 Unicode 的電子郵件。
Postfix 可以正常接收此郵件,它顯然支援 SMTPUTF8 - 但是,當它到達 LMTP 時它就會終止:
<me@myhost> (expanded from <meother@mhost>): SMTPUTF8 is required, but was not offered by host myhost[public/lmtp]
我在 Postfix SMTPUTF8 文件中讀到,
當收到包含 SMTPUTF8 請求的郵件時,Postfix 僅在下列情況下才會將該郵件傳送至非 SMTPUTF8 SMTP 或 LMTP 伺服器:
沒有訊息標頭值包含 UTF-8。
信封寄件者地址不包含 UTF-8,
該特定 SMTP/LMTP 傳送事務的信封收件者位址不包含 UTF-8。
注意:同一郵件的其他電子郵件傳送交易中的收件者可能仍包含 UTF-8。
否則,Postfix 會將該電子郵件傳送交易的收件者視為無法傳送。傳送狀態通知訊息將是 SMTPUTF8 訊息。因此,它將受到與透過 SMTPUTF8 請求接收的電子郵件相同的限制。
--http://www.postfix.org/SMTPUTF8_README.html#detecting
相關部分是「只有當... [訊息中沒有 UTF8] 時,Postfix 才會將 ... 傳遞到非 SMTPUTF8 ... LMTP 伺服器」。
這雖然措辭笨拙,但其含義是,如果 Postfix 支援 UTF8,則它只會將 UTF8 郵件傳遞到下游伺服器。
因為我收到 UTF8 郵件,Postfix 拒絕將其傳送到 Dovecot LMTP。
這讓我想到幾個問題:
- Dovecot LMTP 支援 SMTPUTF8 嗎? (看來不是: http://www.dovecot.org/list/dovecot/2013-January/thread.html#87756)
- Postfix 是否有一個「軟失敗」模式,它可以將郵件排隊以供稍後發送,繞過 LMTP,或者做一些比失敗更聰明的事情?
答案1
長話短說:參見Summing up
!
我也經常收到UTF-8
帶有字元的電子郵件Subject:
。到目前為止,從未在其他標頭中出現任何情況。
雖然我不知道 postfix 中的「軟失敗」模式,但您可以設定另一個 smtp 傳輸並過濾通過它的反彈作為故障安全模式。但是,我自己還沒有完成這個設定。截至目前,退回郵件一直在佇列中,因為在到期之前無法投遞。至少它們不只是返回給發件人,而且我還關注隊列中的黏性成員。另一方面,我不願意在這條路上走得更遠,因為下面的方法對我有用(tm):
UTF-8
工作解決方案(僅在字元的情況下Subject:
)就是停用後綴'smtputf8_enable
現在預設為「yes」的功能(即使用最新的 debian)。在main.cf中新增:
smtputf8_enable = no
擺弄也smtputf8_autodetect_classes
沒有結果。
包含該行的電子郵件訊息UTF-8
Subject:
現在正在由 postfix 處理並由 dovecot 保存,沒有任何問題。
這個解決方案可能看起來違反直覺,特別是對於措辭稍微尷尬的後綴文件(正如您已經提到的)。
關於 dovecot 支援的最新更新SMTPUTF8
似乎就是您所引用的更新。我記得在其他地方看到一篇文章,SMTPUTF8
如果有的話,鴿捨不會很快實施[需要引用]。不知道這是否是一個權威的說法。
關於 dovecot 的另一條評論SMTPUTF8
可以在這裡找到(包括您的參考資料和這個 SE 問題):https://dovecot.org/list/dovecot/2016-November/106029.html
連同下一篇文章,這個主題似乎在 2016 年底左右就陷入了停滯:https://dovecot.org/list/dovecot/2016-September/105474.html
截至 2022 年 10 月,仍然沒有跡象表明 dovecot LDA/LMTP 會很快支援 SMTPUTF8。但是,現在正在使用 dovecot bug 追蹤器 ID“DOP-1045”(參見 https://dovecot.org/list/dovecot/2019-4月/115430.html)。
加起來:今天,如果您不需要SMTPUTF8
標頭以外的標頭支持Subject:
,您可能只需smtputf8_enable
在 postfix' main.cf 中停用並保持原樣的快樂。
華泰