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。
  • 大多數安裝在 virtfs 中的檔案系統現在在 CentOS 6、CloudLinux 6、RHEL 6 或更高版本上以唯讀方式安裝
  • 郵件投遞系統已更新為能夠識別出jailshell,並且現在透過jailshell運行所有管道投遞
  • mod_ruid2 的使用者現在可以啟用「Jailed apache」支持,該支援會將每個虛擬主機 chroot() 到其 virtfs 中。
  • Cron 作業現在使用 Jailshell 運行。

事實證明這個問題與 11.40.1 中修復的 cPanel bug 有關:

修復案例80437:修復jailshell遞歸掛載只讀fs問題

如果指定為讀取/寫入virtfs 掛載的檔案系統作為單獨的檔案系統存在於系統上,則它也會被視為遞歸掛載,導致它繼承父檔案系統的ro 或rw 狀態,而不考慮為文件系統指定的掛載標誌有問題。

相關內容