postfixadminによるバーチャルドメイン環境下で、メール受信時にプログラムを起動するための設定です。メール環境の構築ですが、
に記載している「メール環境構築」手順により設定された環境をもとにした設定になっています。
空メールの受信についての概要ですが、「reg_***@dummy.com」「del_***@dummy.com」のようにユーザー名部分の内容で登録や削除といった制御することを想定しています。いちいちアドレスを用意する必要はなく、受信したメールを実在するdata@dummy.comのような処理用のアドレスに転送した後、プログラムを起動して、プログラム内で宛先のアドレス(to:)により処理を分岐するイメージです。
空メールの受信についての概要ですが、「reg_***@dummy.com」「del_***@dummy.com」のようにユーザー名部分の内容で登録や削除といった制御することを想定しています。いちいちアドレスを用意する必要はなく、受信したメールを実在するdata@dummy.comのような処理用のアドレスに転送した後、プログラムを起動して、プログラム内で宛先のアドレス(to:)により処理を分岐するイメージです。
管理者になる
設定は管理者権限で行いますので権限を取ります。
$sudo su -
main.cfの編集
アドレス転送、プログラム起動のためのファイルを定義します。
#vi /etc/postfix/main.cf
修正
|
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf, regexp:/etc/postfix/virtual
|
処理用の実在アドレスへの転送設定のためのファイルです。赤字部分を追加します。カンマをお忘れなく。
|
追加
|
transport_maps = regexp:/etc/postfix/transport
|
プログラム起動のための記載をするファイルです。
|
virtualの設定
「reg_***@dummy.com」「del_***@dummy.com」といったアドレス宛てのメールを処理用の「data@dummy.com」に転送するための設定です。「data@dummy.com」はpostfixadminであらかじめ作成しておいてください。
#vi /etc/postfix/virtual
追加
|
/^(reg_[^\@]+)\@dummy\.com$/ data@dummy.com
|
ここではreg_のみ記載していますが、必要な分だけ行を追加してください。マッチングには正規表現が利用できます。
|
transportの設定
プログラムを起動するための設定をします。実際のプログラムへのパスは後ほど設定します。
#vi /etc/postfix/transport
追加
|
/^data\@dummy\.com/ email
|
data@dummy.com宛のメールをemailグループとして処理といった意味です。
|
master.cfの設定
プログラムを起動するための設定をします。実際のプログラムへのパスは後ほど設定します。
#vi /etc/postfix/master.cf
追加
|
email
unix - n n - - pipe flags= user=nobody argv=/usr/bin/php
/home/domains/www.dummy.com/email.php
|
先ほど設定したemailグループが実際に起動するプログラムを記載します。
|
設定を反映
postfixに設定を反映します。
/usr/sbin/postmap /etc/postfix/virtual /usr/sbin/postmap /etc/postfix/transport service postfix restart
これで、受信時にプログラムを起動することができます。メールのデータは標準入力に入ってきます。