将 postfix 更新至 3.0 后,主题中含有 UTF-8 字符的电子邮件会卡在队列中,并出现以下错误:
SMTPUTF8 是必需的,但主机 mail.example.com 未提供 [1.2.3.4]
接收服务器(此处称为 mail.example.com)是后缀 2.10.1,并且不支持 SMTPUTF8
我如何让 postfix 发送这些电子邮件?我可以更改 postfix 中的一些选项,以便它像更新前一样发送吗?
从我目前的选择来看,有趣的似乎是:
compatibility_level = 2
smtputf8_autodetect_classes = sendmail, verify
smtputf8_enable = ${{$compatibility_level} < {1} ? {no} : {yes}}
strict_smtputf8 = no
我认为所有这些设置在 3.0 中都是默认设置
答案1
根据后缀自述文件:
默认情况下,Postfix 仅在地址验证探测和发件人地址中包含 UTF-8、收件人地址中包含 UTF-8 或邮件标头值中包含 UTF-8 的 Postfix sendmail 提交上设置“SMTPUTF8 请求”标志。
如果您通过 sendmail 命令提交邮件或使用地址验证,您可能需要调整smtputf8_autodetect_classes
选项。
要成功刷新队列,在更正smtputf8_autodetect_classes
选项后,必须使用postsuper -r ALL
命令重新对所有邮件进行排队。smtputf8
可能还需要暂时禁用功能(请参阅评论中的讨论)。
答案2
今天早上我遇到了这个错误。
- 当使用“php”发送电子邮件时,我收到:
X-Postfix; SMTPUTF8 is required, but was not offered by host
mx-aol.mail.gm0.yahoodns.net[67.195.204.80]
- 当使用适当的邮寄程序将电子邮件发送到同一地址时,就会收到邮件。
因此,我没有修复“postfix”,而是修复了 phpmail()
命令。
这对我有用,希望这对某人有帮助。
mail ( // $to =
$row["email"],
// $subject =
"Email subject here",
// $message =
quoted_printable_encode ("Bonjour,\r\n\r\nBlah blah - Sentiments distingués ... etc. "),
// $headers =
'From: ****@example.com' . "\r\n" .
'Reply-To: *******@example.com' . "\r\n" .
'Content-Type: text/plain; charset=UTF-8' . "\r\n" .
'Content-Transfer-Encoding: quoted-printable' . "\r\n" . // <--- this is THE part.
'X-Mailer: PHP/example.com');