![奇怪的 Postfix 致命错误](https://linux22.com/image/616208/%E5%A5%87%E6%80%AA%E7%9A%84%20Postfix%20%E8%87%B4%E5%91%BD%E9%94%99%E8%AF%AF.png)
我经营三家 Magento 网上商店。所有订单电子邮件都运行正常,除了 7 封电子邮件甚至没有从网络服务器发送。在调查该问题后,我发现了以下日志:
Magento 日志:
2013-08-08T11:44:59+00:00 ERR (3):
exception 'Zend_Mail_Transport_Exception' with message 'Unable to send mail. ' in /var/www/website.com/lib/Zend/Mail/Transport/Sendmail.php:137
Postifx 日志:
Aug 8 12:44:59 bv-webserver postfix/sendmail[18647]: fatal: [email protected](33): No recipient addresses found in message header
Aug 8 12:44:59 bv-webserver postfix/postdrop[18648]: fatal: uid=33: malformed input
这很奇怪,因为数百封电子邮件都发送正常,只有这 7 封出现此异常。在某些情况下,客户只是从商店再次购买,然后按预期收到了电子邮件。
我以为是资源问题。但我运行了 newrelic 代理,服务器在高峰时段的负载最多为 20%(内存和处理器)。
编辑:忘了提一下,我使用 php-fpm 运行 nginx。
答案1
postdrop[18648]: 致命: uid=33: 格式错误的输入
这说明了一切,您有 7 封电子邮件已损坏。它们可能有换行符/回车符,导致标题结束得太早(可能在收件人:标题之前)。
该换行符可能位于收件人地址的开头(因此 to: 为空)或任何先前的用户输入字符串中。该换行符在许多情况下也可能不可见(剥离、没有滚动条的表单、输出时被空格替换等),因此请仔细搜索。
尝试检查 /var/spool/postfix/maildrop/ 文件夹中是否有坏邮件,它应该是空的,但请尝试一下...
您可能需要将 postdrop 放入调试中,-v
在 master.cf 中的 postdrop 行末尾添加
检查postdrop 手册页了解更多信息
答案2
显然,这七份订单缺少收件人电子邮件地址。检查是否可以在不提供电子邮件的情况下在您的网上商店下订单。