パイプされた電子メールを処理し、自動応答を送信するスクリプトがあります。このスクリプトは 1 年以上正常に動作していましたが、ホストが 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 ライブラリ アクセス構成に問題があると伝え続けています。
誰か以下について提案をいただけませんか:
制限されたサーバーアクセスでこれを追跡するにはどうすればよいでしょうか。
問題を解決するためのテクニカル サポートへの提案はありますか?
ありがとう!
さらにテストしてみると、この問題は cPanel 電子メール パイプに特有のものであることがわかりました。スクリプトを Apache 経由で直接実行すると、すべて正常に動作します。exec を使用してパイプ経由で実行すると失敗します。どなたか提案していただけるとありがたいです。これは管理スタッフの知識を超えているようです。
答え1
jailshell または noshell の共有システムでこの問題に遭遇した他のユーザー向けの更新:
cPanel 11.38 がリリースされました厳しい規則を強制する2 番目と 3 番目の項目は、パイプされたメール アプリケーションに影響します。
- virtfs 内にマウントされたファイルシステムは、nosuid でマウントされるようになりました。
- CentOS 6、CloudLinux 6、RHEL 6以降では、virtfs内にマウントされたほとんどのファイルシステムが読み取り専用でマウントされるようになりました。
- メール配信システムは jailshell を認識するように更新され、すべてのパイプ配信は jailshell 経由で実行されるようになりました。
- mod_ruid2 のユーザーは、各仮想ホストを virtfs に chroot() する「Jailed apache」サポートを有効にできるようになりました。
- Cron ジョブは jailshell で実行されるようになりました。
この問題は、11.40.1 で修正された cPanel のバグに関連していることが判明しました。
ケース 80437 を修正: jailshell の再帰マウント読み取り専用ファイルシステムの問題を修正
読み取り/書き込み virtfs マウントとして指定されたファイルシステムがシステム上に別のファイルシステムとして存在する場合、そのファイルシステムも再帰マウントとして扱われ、該当するファイルシステムに指定されたマウント フラグに関係なく、親ファイルシステムの ro または rw ステータスを継承することになります。