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

Refers to:

  • Plesk for Linux

Created:

2016-11-16 12:49:00 UTC

Modified:

2017-02-20 14:43:23 UTC

5

Was this article helpful?


Have more questions?

リクエストを送信

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

質問

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

回答

注: 本記事は Postfix を対象にしています。メールサーバに Qmail を使用している場合、以下の記事を参照してください。 1711 : サーバ上の PHP スクリプトから大量のメールメッセージが送信されます。これらのスクリプトがどのようなドメインで実行されているのかを確認するにはどうすればよいですか?

以下の方法で、メールを送信している PHP スクリプトが実行されているディレクトリを確認できます。

注: 使用している OS と Plesk のバージョンによって、以下のパスが少し異なる可能性があります。

  1. 以下の内容で /usr/sbin/sendmail.postfix-wrapper スクリプトを作成します。

    ファイルを作成して、編集用に開きます。

    # touch /usr/sbin/sendmail.postfix-wrapper
    # vi /usr/sbin/sendmail.postfix-wrapper

    以下の内容を追加します。

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

    注: #!/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 /usr/sbin/sendmail.postfix-wrapper
    # mv /usr/sbin/sendmail.postfix /usr/sbin/sendmail.postfix-bin
    # ln -s /usr/sbin/sendmail.postfix-wrapper /usr/sbin/sendmail.postfix
  3. 1 時間待ち、sendmail を元に戻します。

    # rm -f /usr/sbin/sendmail.postfix
    # mv /usr/sbin/sendmail.postfix-bin /usr/sbin/sendmail.postfix

/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() 関数を使用して送信されたメールはありません。

通常、これはいずれかのメールアカウントが悪用されたことを意味します。ログイン試行回数をチェックします。

# zgrep -c 'sasl_method=LOGIN' /usr/local/psa/var/log/maillog*
/usr/local/psa/var/log/maillog:221000
/usr/local/psa/var/log/maillog.processed:362327
/usr/local/psa/var/log/maillog.processed.1.gz:308956

試行回数が異常に多い場合、このアカウントが悪用されている可能性は高いと言えます。以下の方法で、これらのアカウントを特定します。

# zgrep 'sasl_method=LOGIN' /usr/local/psa/var/log/maillog* | awk '{print $9}' | sort | uniq -c | sort -nr | head
891574 sasl_username=admin@example.com

スパムの送信を停止するには、悪用されたアカウントのパスワードを変え、Postfix サービスを再起動します。

Plesk 12 の場合、『 管理者ガイド 』も参照してください。

他にご質問がございましたら、リクエストを送信してください
ログインしてコメントを残してください。