postfix 受信時 php スクリプト実行
※一部、ドメイン名が隠れてなかったので再度投稿しました。
【環境】
os: freebsd 8.4
php: 5.4.13
postfix:2.9.5
メールの送受信はエラーなくできています。
【やりたいこと】
メール受信時にPHPスクリプトを実行したい!(メールでブログ上げたい!!!!)
【困っていること】
メールログみると、PHPが実行されずに”転送”しようとしている。
<maillog>
Jan 22 23:42:31 postfix/qmgr[36840]: from=<送信元>, size=38495, nrcpt=1 (queue active)
Jan 22 23:42:31 postfix/virtual[36877]: to=<|php /usr/home/ユーザー名/htdocs/実行したい.php@ドメイン>, orig_to=<送信先>, relay=virtual, delay=0.32, delays=0.31/0/0/0, dsn=5.1.1, status=bounced (unknown user: "|php /usr/home/ユーザー名/htdocs/実行したい.php@ドメイン")
※なぜか PHP 実行したいのに、PHPのパスのあとに@ドメインが!
このアドレスはあるわけないので送信元にエラーメールが戻ってきたのでした。
<エラーメール>
Undelivered Mail Returned to Sender
中略
<"|php /usr/home/ユーザー名/htdocs/実行したい.php"@ドメイン>
(expanded from <送信先>): unknown user: "|php
/usr/home/ユーザー名/htdocs/実行したい.php@ドメイン"
【試したこと】
バーチャルメールボックスなので
virtual_alias_maps(ファイル名:/usr/local/etc/postfix/virtual_alias) に 下記を記述しました。
blog@ドメイン | "/usr/local/bin/php /usr/home/ユーザー名/htdocs/実行したい.php"
そして、
postmap /usr/local/etc/postfix/virtual_alias
として、postfix stop → postfix start してメールを送信すると、上記エラーに…。
※blog@ドメイン までをバーチャルなユーザー名にしています。
(バーチャルドメインで現在2ドメイン運用しています。今回の「blog@ドメイン」というのはサーバのユーザーにはいなくてvirtual_mailbox_mapsに登録しているバーチャルなユーザーです。)
バーチャルなユーザーは ユーザーID:グループID を 5000:5000 としています。
実行したい.php は 持ち主 5000:5000 で、 パーミッション 744 です。
また、このPHPはファイルの書き込みをします。
書きこみ対象のフォルダのパーミッションは777にしてあります。
(持ち主はwww:www になっています)
あとで調べてみたらmain.cf の default_privs という項目が気になったので
サーバーのユーザーを指定してPHPもそのユーザーのものにしましたが
結果、なんらかわらなかったので元に戻しました…。