空メールからの会員登録でパラメータを渡す方法(Postfix)

携帯サイトで、空メールから会員登録するときに、あて先のメールアドレスを「reg+12345@example.com」などとしてパラメータを渡すことができます。

宛先メールアドレスの"+"以降をパラメータとして扱う

まず、"reg+123@"宛てに送っても"reg+foo@"宛てに送っても、"reg@"にメールが届くようにします。
Gmailで使われているテクニックですね。

main.cfを編集する
Postfixの/etc/postfix/main.cfの"recipient_delimiterという項目がコメントアウトされているので、 #を削除して有効にします。
# recipient_delimiter = +
recipient_delimiter = +
(Ubuntu9.04ではデフォルトで有効になっていました。)

変更を反映させる
変更したらPostfixを再起動します。
/etc/init.d/postfix restart

スクリプトでパラメータを抜き出す
あとは、PHPなどスクリプト側で、宛先メールアドレスを正規表現で解析します。

/**
 *  "reg+12345@example.com"から"12345"部分を抜き出す
 */
function getParam($mailaddress)
{    
        if(preg_match('/reg\+(.+)/i', $mailaddress, $matched )) {
            return $matched[1];
        } else {
            return false;
        }
}

参考

ケータイサイトでメール送受信をする際のポイントをご紹介 : Media Technology Labs (MTL) : メディアテクノロジーラボ ブログ
カテゴリ: