Postfixで空メールを受け付ける

ウェブサイトの懸賞に応募するときや、ネットサービスに加入する際に、空メールを利用することがあります。
その際のPostfixでの設定方法を説明します。

●空メール設定の仕様
空メールの宛先は、次の2タイプとし、それぞれ別々のプログラムを実行する。
アドレス書式 実行プログラム
url-*****@example.com
(***** は任意の英数5文字)
/opt/scripts/bin/kara1_mail.php
url@example.com
(アカウント部分は固定)
/opt/scripts/bin/kara2_mail.php


空メールの設定

Postfixの設定ファイルmain.cfの編集

# vi /etc/postfix/mai.cf
================================================================
#alias_mapsの指定
alias_maps = hash:/etc/aliases, regexp:/etc/postfix/alias.reg
#Postfixが動作するユーザ。
#受信したメッセージは標準出力経由でプログラム / スクリプトに突っ込むのだが、
#ここで動作するユーザを明示しておかないとnobodyで動作されてしまい面倒なことになる(場合がある)。
default_privs = apache
#Postfixは受信したメッセージが「ローカルに存在するユーザ宛かどうか」をチェックし、
#存在しない場合はrejectする。そのリストがlocal_recipient_mapsに記述してある。
#意図せずrejectされてしまう場合はここをチェックし、明示的にblankを設定しよう。
local_recipient_maps =



アドレスと実行プログラムの指定

# vi /etc/postfix/alias.reg
================================================================
/^url-[0-9a-z]{5}(@example\.com)?$/ "|/usr/bin/php /opt/scripts/bin/kara1_mail.php"
/^url(@example\.com)?$/ "|/usr/bin/php /opt/scripts/bin/kara2_mail.php"



※注意事項
local_recipient_mapsでのユーザの存在確認の際、正規表現テーブルではドメイン付きで検索しているようです。
それに対してlocalがalias_mapsとして検索する時にはローカルパートのみで検索しています。


Google+