TOP > プログラマ2.0日報 > そのメールアドレスって実在するの?

あすなろBlogger

facebookに投稿 このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク このエントリーをはてなブックマークに追加 この記事をクリップ! livedoorclip ユーザー数 BuzzurlにブックマークBuzzurlにブックマーク この記事をtweetする

そのメールアドレスって実在するの?

2007.09.11

今回は特にスパム対策にも少し関連する話です。

メールアドレスについて、以前「形式的チェックはしようがない...」という話をしましたが、今回は形式的ではなくて実質的なアドレスチェックの話です。まあ、いわゆるスパムフィルターとも少し関連があるわけですけども、ここで扱うのはどっちか言えば Webアプリの入力フィールドで、入力される「メールアドレス」の正当性チェックの話題です。

普通 Web アプリを書いていると、単純に入力されたメールアドレスを RFC822 あたりでチェックして、(古いタイプの)形式的違反によってハネる、くらいの validation をかける、というケースもありますが、これは現状では「擬陽性」判定でユーザの意図に反してハネてしまう可能性がないわけではない、という結論でした。だったら、これは逆に、うまく Ajax でも使って、「実質判定」をした方がいいのでは?とも思えます。

ごく単純に「入力されたメールアドレスが正当かどうか」を判定する手段としては、

1. ドメイン名が正当かどうか。これはドメイン名から MX レコードを引いて、引ければOK。まあ、これに引っかかる入力は、入力ミスの可能性が高いでしょう。

2. MXレコードから引かれたそのドメインに対して、SMTP を発行して RCPT TO: が500番台のエラー(特に550 mailbox unavailable)を返さない。SMTP サーバによっては、存在しないアカウントについても受理することはありますが、送信可能なアドレスについてエラーを返すことは本質的にはない(スパム対策でややこしいことをしている場合は別ですが...たとえばグレーリスト処理とかSMTP遅延処理とか)ので、擬陽性判定は一般に大丈夫でしょう。念のためにトライする時の HELO するホスト名とか MAIL FROM: とかは、送信ドメインに関するチェックでハネられないように、ダミーではなくてなるべく「正当な」ものを使うべきでしょうね。

このくらいの処理ならば、そう処理も重くもならないので Ajax による回答待ちをして(まあ Action のServlet で正当性をチェックしてもいいけども)、正当性をチェックしても良いようにも思います。

Ajax でやった方がユニットとしての保守性・再利用性もありますから、そっちの方がいいのかな、という気もします。また、特に携帯アドレスで受信ドメインにまだ入っていないアドレスが入力されたときに、事前に「まだ受信が許可されてませんよ」とお知らせできる、というメリットもあるように思います。

ちょっとしたアイデアに過ぎませんが...意外にメリットが多くていいかも。

とはいえ、あまり一般的とは言えないSMTP遅延処理をしているケースは、このチェックが無意味に遅くなるので、困るのですけどね....

投稿者 : 杉浦 こずえ | 投稿日時 : 2007.09.11 13:51

あすなろBLOGのトラックバック・コメントは承認制になっています。
すぐにブログに反映されませんので、ご了承ください。

トラックバックURL


コメントの送信








カレンダー

<< 2007年09月 >>

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

最新のエントリー

最新のトラックバック

最新のコメント

Tag

バックナンバー