配置 Postfix 和 Dovecot-LMTP 通过 SMTPUTF8 接收邮件?

配置 Postfix 和 Dovecot-LMTP 通过 SMTPUTF8 接收邮件?

我正在运行一个 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。

这让我想到几个问题:

答案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 中禁用并保持原样的快乐。

华泰

相关内容