postfixのバーチャルドメイン環境にて、配送されたメールからPHPを起動させる方法

設定はこんな感じの場合のお話
http://d.hatena.ne.jp/susan-style/20090621/1245596115

virtual_alias_mapsに直接パイプ処理を書いて終わりたいところですが
残念ながらvirtual_alias_mapsではプログラムを起動できません。


■1.一旦架空のユーザにメールを転送します、バーチャルエイリアスに追加
#vi /etc/postfix/virtual_alias

alias@mydomain.com <-TAB-> alias+otherdomain.com


■2.さっきの架空ユーザからプログラムにパイプ
sendmailデフォルトの位置をそのままpostfixで使った場合の場所)

#vi /etc/aliases

alias+otherdomain.com: "| /usr/bin/php /var/www/html/test.php"


■3.aliasはmydestinationに合致したメールアドレスのユーザ名以外見てくれません、mydestinationにotherdomain.comを追加します

#vi /etc/postfix/main.cf

mydestination = otherdomain.com


■4.各変更ファイル再起動

# /usr/sbin/postmap /etc/postfix/virtual_alias

# newaliases

# /etc/init.d/postfix restart


これで、alias@mydomain.comにメールを送ると起動されます


■おまけ
crontabと同じでfopenする場合はルートからの絶対パスが必要です
また、実行はNoBodyが行うのでtest.txtの属性にも注意してください

$filename = "/var/www/html/test.txt";
$handle = fopen($filename, 'w+');

■おまけ2
うまくパイプしない。ユーザーとして認識されてしまう場合は
FQDNを疑ってみて
http://d.hatena.ne.jp/susan-style/20090531/1243766857