配置 Postfix 和 Dovecot-LMTP 以通過 SMTPUTF8 接收郵件?
我正在執行使用 Dovecot LMTP 進行郵件傳遞的 Postfix 伺服器。我這樣做是因為它與篩子配合得很好。
但是,我最近收到了一些主題行中包含 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
相關部分是“Postfix 將傳遞 … 到非 SMTPUTF8 … LMTP 伺服器僅當 …
$$ there is no UTF8 in the message $$”。 這措辭很尷尬,但暗示 Postfix 僅在支持 UTF8 的情況下才會將 UTF8 郵件傳遞給下游伺服器。
因為我收到的是 UTF8 郵件,所以 Postfix 拒絕將它發送到 Dovecot LMTP。
這讓我想到了幾個問題:
- Dovecot LMTP 是否支持 SMTPUTF8?(看來不是: http: //www.dovecot.org/list/dovecot/2013-January/thread.html#87756)
- Postfix 是否為此提供了“軟失敗”模式,它可以將郵件排隊等待稍後傳遞,繞過 LMTP,或者做一些比摔倒更智能的事情?
TL;DR:看**
Summing up
**!我還經常收到帶有
UTF-8
字元的電子郵件Subject:
。到目前為止,其他標題中從未出現過任何內容。雖然我不知道後綴中的“軟故障”模式,但您可以設置另一個 smtp 傳輸並通過它過濾反彈作為一種故障安全模式。但是,我自己還沒有完成這個設置。截至目前,退回郵件一直在排隊等待到期,無法投遞。至少他們不只是返回給發件人,而且我已經註意到隊列中的粘性成員。另一方面,我不願意走得更遠,因為下面的方法對我有用(tm):
有效的解決方案(僅在
UTF-8
字元的情況下Subject:
)只是**禁用後綴smtputf8_enable
**功能,該功能現在預設為“是”(即使用最新的 debian)。在 main.cf 中添加:smtputf8_enable = no
擺弄
smtputf8_autodetect_classes
是沒有結果的。帶有該
UTF-8
Subject:
行的電子郵件消息現在正在由 postfix 處理並由 dovecot 保存,沒有任何問題。該解決方案可能看起來違反直覺,尤其是對於措辭略顯笨拙的後綴文件(正如您已經提到的)。
關於 dovecot 支持的最新更新
SMTPUTF8
似乎是您正在引用的更新。我記得在其他地方看到過一個文章,SMTPUTF8
如果有的話,鴿捨不會很快實施$$ citation needed $$. 不確定這是否是權威聲明。 關於 dovecot 的另一條評論,
SMTPUTF8
可以在這裡找到(包括您的參考資料和這個 SE 問題):https ://dovecot.org/list/dovecot/2016-November/106029.html 連同下一篇文章,似乎該主題大致停滯在2016 年底:https ://dovecot.org/list/dovecot/2016-September/105474.html**總結:今天,如果除了標題之外您不需要
SMTPUTF8
對標題的支持Subject:
,您可能只需在 postfix 的 main.cf 中****禁用smtputf8_enable
**並按原樣快樂就可以了。高溫高壓