2012年4月18日水曜日

Amazon EC2 (Amazon Linux) のpostfixadmin環境下で空メール受信処理をする

postfixadminによるバーチャルドメイン環境下で、メール受信時にプログラムを起動するための設定です。メール環境の構築ですが、


に記載している「メール環境構築」手順により設定された環境をもとにした設定になっています。

空メールの受信についての概要ですが、「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


これで、受信時にプログラムを起動することができます。メールのデータは標準入力に入ってきます。
Related Posts Plugin for WordPress, Blogger...