Article ID: 1711, created on Feb 18, 2010, last review on Oct 31, 2014

  • Applies to:
  • Plesk for Linux/Unix

解決策

注意:本記事は Qmail が対象です。Postfix メールサーバをお使いの場合、以下の記事を参照してください。

114845 多くの電子メールメッセージがサーバで PHP スクリプトから送られます。Postfix を使用している場合、これらのスクリプトを実行しているドメインをどうやって確認できますか。

警告:この方法を使用すると、ローカルメールサーバに送信される各メッセージの処理に追加ステップが発生し、サーバの負荷が増加する可能性があります。ステップ 2 を適用した後で、サーバの負荷が過剰になり問題が発生した場合、ステップ 3 の手順に従って元に戻してください。

メールを送信する PHP スクリプトが実行されているフォルダは、次の方法で確認できます。

注意:OS および Parallels Plesk のバージョンに応じて、以下とは違うパスになる可能性があります。

1) /var/qmail/bin/sendmail-wrapper スクリプトを作成し、次のような内容にします。

#!/bin/sh
(echo X-Additional-Header: $PWD ;cat) | tee -a /var/tmp/mail.send|/var/qmail/bin/sendmail-qmail "$@"

注:このスクリプトは、#!/bin/sh を含む 2 行です。

2) ログファイル /var/tmp/mail.send を作成し、"a+rw" 権限を付与します。ラッパを実行可能にして古い sendmail の名前を変更し、新しいラッパにリンクします。

~# touch /var/tmp/mail.send
~# chmod a+rw /var/tmp/mail.send
~# chmod a+x /var/qmail/bin/sendmail-wrapper
~# mv /var/qmail/bin/sendmail /var/qmail/bin/sendmail-qmail
~# ln -s /var/qmail/bin/sendmail-wrapper /var/qmail/bin/sendmail

3) 少なくとも 2 時間待ち、sendmail を元に戻します。

~# rm -f /var/qmail/bin/sendmail
~# mv /var/qmail/bin/sendmail-qmail /var/qmail/bin/sendmail

/var/tmp/mail.send ファイルを確認します。"X-Additional-Header:" で始まる行に、メールを送信したスクリプトのドメインフォルダが記述されています。

以下のコマンドで、メール PHP スクリプトが実行されたすべてのフォルダを確認します。

~# grep X-Additional /var/tmp/mail.send | grep `cat /etc/psa/psa.conf | grep HTTPD_VHOSTS_D | sed -e 's/HTTPD_VHOSTS_D//' `

上記コマンドの結果が出力されない場合、Plesk 仮想ホストディレクトリから PHP mail() 関数を使用して送信されたメールはありません。

/var/tmp/mail.send ファイルに、以下のみが含まれており、

X-Additional-Header: /var/www

特定のドメインフォルダをポイントしていない場合、Perl バイナリのパーミッションを変更します。

~# chmod 700 /usr/bin/perl

a914db3fdc7a53ddcfd1b2db8f5a1b9c 56797cefb1efc9130f7c48a7d1db0f0c 29d1e90fd304f01e6420fbe60f66f838

Email subscription for changes to this article