携帯電話のシステムでは、メールを受信した後に、それを元に何かのプログラムを動作させるということがよくあります。
たとえば、ブログでの画像投稿などもその一つです。
このようなシステムをつくるときに、投稿者の認証はどのようにするべきでしょうか?
送信元のメールアドレスを認証に使う方法が使えそうですが、メールアドレスのfromヘッダは簡単に偽装できてしまいます。
友達のメールアドレスでイタズラ投稿・・・なんて事が出来てしまう訳ですね。
なのでfromヘッダのみで判断するのは、セキュリティ的にあまりオススメできません。
それでは、どのようにするかというと
ここでは宛先アドレスも認証に利用する方法を紹介します。
例えば会員登録時に、
あなたはこのメールアドレスに投稿してくださいね~
という形で、ユーザーに専用のメールアカウントを発行します。
ユーザーから投稿があった場合には、メールの
- fromヘッダ
- toヘッダ
のペアで認証をします。会員登録時に発行した宛先アドレスを人に教えないでいてくれれば、一定のセキュリティが確保されるのではないでしょうか。
動的に発行するメールアカウントへ対応するためには、受け取り側にも用意が必要です。
ここでは、Postfixの正規表現を使ったpipe設定を紹介します。
Postfixのmain.cfを編集し以下のようなalias.regというパスをつけます。
alias_maps = hash:/etc/aliases
これを以下のように追記
alias_maps = hash:/etc/aliases,regexp:/etc/postfix/alias.reg
postfix/にalias.regを作成し、そこに次のように記載します。
/^sample[0-9](@domain.jp)?$/ “| /path_to_bin/php /PATH_TO_script/test.php”
こうすることで
sample0@domain.jp~sample9@domain.jpに来たメールがtest.phpをキックすることになります。
正規表現によるpipe処理を使えば、なにかと小回りが利きそうですね。お試しあれ。