我正在运行 CentOS7、PHP 8.0.30、postfix 2.10.1-9.el7 有时我们尝试通过 php mail() 函数发送的电子邮件不会发送,并且在启用 postfix 的 pickup、cleanup、qmgr、smtp 的详细日志记录后,我们注意到没有任何东西被拾取。
pickup unix n - n 60 1 pickup -v
电子邮件在 mail()(该调用记录在 syslog 中)和 postfix 之间丢失。
Sendmail 在 php.ini 中正确定义
sendmail_path = /usr/sbin/sendmail -t -i
我们的代码完全相同,在池中的另一台服务器上可以完美运行,但在这台服务器上却不行。有什么想法吗?
以下是一些故障排除步骤 -
检查系统日志中的 PHP 邮件:
验证 sendmail_path:
sendmail_path
检查php.ini
:比较配置:
权限:
/usr/sbin/sendmail
。Postfix 日志:
检查邮件队列:
mailq
检查邮件是否滞留在队列中。SELinux / AppArmor:
sendmail
执行。防火墙/网络:
重启服务:
测试直接 Sendmail:
通过系统地检查这些区域,您应该能够识别并解决问题。
事实证明,通过禁用(看起来完全不相关的) grpc 选项,问题不再发生。