Postfix

配置 Postfix 和 Dovecot-LMTP 以通過 SMTPUTF8 接收郵件?

  • November 29, 2018

我正在執行使用 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。

這讓我想到了幾個問題:

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**並按原樣快樂就可以了。

高溫高壓

引用自:https://unix.stackexchange.com/questions/320091