6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

postfixでメール受信時にパイプしてプログラムを動かす

Last updated at Posted at 2019-11-11

よくあるやり方

/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を触る必要がありません。
6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?