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