よくあるやり方
/etc/aliases
でパイプするやり方
# php@example.comにメールが来た場合、mail-exec.phpを起動する
php: "| /usr/bin/php -f /var/www/mail-exec.php > /dev/null 2>&1"
共通してる注意点
おそらくroot権限のプログラムは起動できない(検証するとそんな感じだった)。
上記のよくあるやり方で/rootにあるphpが起動できなかった(パーミッションとか変えても)。
よくあるやり方の問題点
http://www.omakase.org/mail/aliasenobody.html
によると、あまりよろしくないそうです。
また、いちいち変更がある場合に/etc/aliasesを書き換えるのはめんどくさいです。
おすすめのやり方
postfixの設定
/etc/aliases
でプログラムの処理やらが書いてあるファイルを指定できます。
# メールが来たら、rootへ転送と/home/user/postfix_testに書いてあることを実行する
apache: root, :include:/home/user/postfix_test
/etc/aliasesを変更したら
newaliases
を実行してください。
:include:を使用するには
/etc/postfix/main.cf
に
allow_mail_to_commands = alias,forward,include
を追加する必要があります。
追加したらpostfixを再起動してください。
includeするファイルの中身
よくあるやり方で書く内容をそのまま記述してください。
プログラムはクォーテーションでかこってください。
"|/bin/php -f /home/user/mail_test.php > /home/user/test.log"
効果
- 実行ユーザがincludeするファイルのユーザ(/home/user/postfix_testの場合user)になるらしいです。
- 変更がある場合に/etc/aliasesを触る必要がありません。