HOME  WebAp  メール配信時のPHPスクリプト起動(Postfix編)

概要
メールがサーバに配信(受信)された時にPHPスクリプトを起動しメールを自動で処理する方法を紹介しています。
動作環境
RedHat Linux 7.3, postfix 1.1.7とPHP CLI 版を使用しました。
PHP CLI版はコマンドを入力して以下のような表示があればOKです。
php -v
PHP 4.3.11 (cli) (built: Apr 27 2005 16:01:22)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
※Fedora Core 3 など(cgi) がインストールされている場合は php -q のquiet-mode で代用可能だと思います。
設定例1 (運用環境用)
  1. PHPスクリプトを用意する

    FTPなどでスクリプトを転送し /home/someone/php/mailreply.php に用意する。
     
  2. PHPスクリプトへのメール転送をシステム責任者(root)で設定する
    vi /etc/postfix/aliases
    join:       someone,"| /usr/local/bin/php /home/someone/php/mailreply.php"
    newaliases

    メール転送のみを行うメール宛先 join は useradd コマンドでユーザ登録されている必要はありません。

設定例2 (開発環境用)
  1. PHPスクリプトへのメール転送をユーザ(someone)で設定する
    cd ~/
    vi .forward
    someone,"| /usr/local/bin/php /home/someone/php/mailreply.php"
    chmod 644 .forward
  2. PHPスクリプトをユーザ(someone)で設置する

    FTPなどでスクリプトを /home/someone/php/mailreply.php にコピーする
動作確認
宛先の join@ooo.jp や someone@ooo.jp にメールを送って処理されれば設定OKです。
補足
  1. コマンドラインで単体テスト

    PHPスクリプトにメールソースを標準入力で渡して動作確認ができます。
    メールソースはMS-Outlook Express などから「名前を付けて保存(*.eml)」しFTPでアップロードします。
    cat mail.eml | php mailreply.php

    また、スクリプト内で echo, print を使うと標準出力されますのでコマンドラインでもちょっとしたデバッグができます。

△PageTop