cPanel 升级后,通过 php 发送电子邮件会产生 exim 错误

cPanel 升级后,通过 php 发送电子邮件会产生 exim 错误

我有一个脚本,用于处理管道电子邮件并发送自动回复。该脚本已经运行了一年多,但在我的主机升级到 cPanel 11.38.2 后,我的脚本无法发送电子邮件:

该消息是由邮件传递软件自动创建的。

A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:

  pipe to |/home/user/public_html/email_proc.php
    generated by [email protected]

The following text was generated during the delivery attempt:

------ pipe to |/home/user/public_html/email_proc.php
       generated by [email protected] ------

2013-12-24 10:36:27 [6] Cannot open main log file "/var/log/exim_mainlog": Read-only file system: euid=0 egid=32007
2013-12-24 10:36:27 [6] cwd=/home/user/public_html/ 5 args: /usr/sbin/sendmail -t -i -f [email protected]
2013-12-24 10:36:27 [6] Cannot open main log file "/var/log/exim_mainlog": Read-only file system: euid=0 egid=32007
exim: could not open panic log - aborting: see message(s) above

由于我没有 ssh 访问权限,所以我一直与主机提供商反复沟通,无法确切了解发生了什么,但他们坚持认为这是 cPanel 或 php 错误,超出了他们的控制范围。然后他们创建了一个测试电子邮件帐户,发现邮件服务器运行正常,但我一直告诉他们,他们的 php 库访问配置出了问题,而不是邮件服务器本身。

有人可以就以下任一问题提供一些建议吗:

  1. 我如何尝试通过有限的服务器访问来追踪这个问题。

  2. 对技术支持有何建议来尝试解决该问题?

谢谢!


进一步的测试表明,该问题特定于 cPanel 电子邮件管道。如果脚本直接通过 Apache 运行,则一切正常。如果通过带有 exec 的管道运行,则会失败。如果有人能提出建议,我们将不胜感激。这似乎超出了管理人员的知识范围。

答案1

对于在 jailshell 或 noshell 共享系统上遇到此问题的其他用户的更新:

cPanel 11.38 现已推出强制制定严格的规则第二项和第三项影响管道邮件应用程序。

  • virtfs 中挂载的文件系统现在以 nosuid 方式挂载。
  • 在 CentOS 6、CloudLinux 6、RHEL 6 或更高版本上,virtfs 中挂载的大多数文件系统现在都以只读方式挂载
  • 邮件传递系统已更新,可以识别 jailshell,现在所有管道传递都通过 jailshell 进行
  • mod_ruid2 的用户现在可以启用“Jailed apache”支持,它将 chroot() 每个虚拟主机放入他们的 virtfs 中。
  • Cron 作业现在通过 jailshell 运行。

事实证明,该问题与 11.40.1 中修复的 cPanel 错误有关:

修复案例 80437:修复 jailshell 递归挂载只读 fs 问题

如果指定为读/写 virtfs 挂载的文件系统作为单独的文件系统存在于系统中,它也将被视为递归挂载,导致它继承父文件系统的 ro 或 rw 状态,而不考虑为相关文件系统指定的挂载标志。

相关内容