ローカル部が動的なアドレスに空メールを送ってもらってmabuhayしたい!
タイトル通り。環境はなんでもいいだろうけど、今回は OS は CentOS5 で Postfix かつ Rails2 かつ ActionMailer を使う感じ。
メールを送ってもらってすぐにアクションを起こす方法は前に書いた。
ただ空メールのfromからアドレスを見るだけならこれだけでいい。でもそれだけじゃなくて、すでに何らかの情報をDBに登録してある状態で、それとメールアドレスを関連づけたい。どうしたもんかと考えたけど、メールアドレスのローカル部を、暗号化したIDとかにしておく、なんてのが割とオーソドックスで良いんじゃないかなと思った。
これだと問題になるのが /etc/postfix/virtual でどうやって割り振るかということ。要するにローカル部が静的でなく、動的になるので正規表現を使いたい。
結論から言うと使える。
ただしPostfixがサポートしてる検索テーブルの種類に正規表現(pcre)があるかどうかを確認する。
# postconf -m btree cidr environ hash ldap nis pcre proxy regexp static unix
ある、いけるみたい。
今まで使っていた(らしい)hash から pcre に変えることで正規表現が使える。
# vi /etc/postfix/main.cf virtual_maps = pcre:/etc/postfix/virtual #前までは↓ #virtual_maps = hash:/etc/postfix/virtual
ものすごくざっくり書くとこんなかんじ。
# vi /etc/postfix/virtual /^[0-9a-z]+@domain/ foobar
適応する。
# postmap /etc/postfix/virtual
あとは前書いたメモの応用になる、モンシェリ!
あと Rails のバージョンを1から2にした場合は以下にも注意。