- PR -

特定のメールアドレスを用いた登録処理について

1
投稿者投稿内容
knock
会議室デビュー日: 2003/09/02
投稿数: 17
投稿日時: 2003-11-17 15:02
こんにちは。
現在会員制のウェブサイトを作成しております。考えている会員登録のフローとして
以下のようなものにしようと思っております。対象ユーザは携帯電話ユーザです。

1. 基本的な会員情報(名前、住所など)をフォームで入力
--> この時にシステム側でセッションをスタートさせる
2. 次に特定のメールアドレス(例えば regist-XXXX@hoge.com)に空メールを送ってもらう
--> "XXXX" は 1. のセッションから生成されるそのユーザ固有の一時 ID です。
--> これにより確実に携帯ユーザのメールアドレスを取れます。
3. システム側から 2. で取れたユーザのメールアドレスに、セッションを付けた URL を
含めたメールを送り、アクセスしてもらう
4. アクセスした URL は 1. でのセッションを引き継げるためさらに続けて会員登録を
続けて終了する。

このような形になっております。このフローの一番の目的は携帯ユーザのメールアドレスを
確実に取ることです。(携帯でフォーム入力は打ち間違えなどのリスクがあるため)

そこで質問なのですが、2. でシステム側から生成されるメールアドレス(regist-XXXX@hoge.com)は
実際には存在しないメールアドレスで一時的に使われるものです。
この時単純に考えると、ユーザが送った瞬間に"Returned mail: User unknown"が
ユーザに届いてしまうと思うのですが、これをどのようにシステムに処理させたら
よいのかがわからない状況です。

現在用いている SMTP サーバは Postfix です。
そこで考えたのは procmail に一端全てのメールを渡して特定のメールアドレス(regist-XXXX)に
来た場合には perl script に渡してユーザのメールアドレスを取り出すことだったのですが、
どうも procmail はシステム側に実際に存在するメールアドレス(root@hoge.com とか)で
ないと処理を行ってくれないようです。

なにかうまい方法がありましたらご教授よろしくお願いします。
Gordie
ベテラン
会議室デビュー日: 2003/10/14
投稿数: 64
投稿日時: 2003-11-17 16:33
Gordieです。

ほかの多くのシステムだと、

1.ユーザーにメールアドレスを入力してもらう。
2.そのメールアドレス宛にメールを送る。中身はセッションを付けた URL。
3.アクセスした URL は 1. でのセッションを引き継げるためさらに続けて会員登録を続けて終了する。

という具合になっているようです。
この方法だと、相手からメールを送ってもらう必要がないのでメールサーバ側に特別な処理はいらないし、メールアドレスが間違っていれば2のメールが届かないので実在しないアドレスで登録されることもありません。

knockさんの方法だとユーザーは一度もメールアドレスを入力しなくていいというのが利点ですね。
やるとすればregist-XXXX@をすべて特定のアドレスに転送してしまって、その後でToヘッダを頼りに処理をするということになるでしょうか。
といってどうやればいいのかは、すみません。知りません。

#メールの配送が遅延した場合にはアクセスしてみたらセッションがタイムアウトしていたなどということにならないのだろうか
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-11-17 17:30
ほむらです。
よくあるメーリングリストみたいなことをしたいのでしょうか?
やってみたこととか試したことないですけど
こんなやり方って可能でしょうか?>諸氏
--------
0.システム側でメールの着信をタイマーでチェックしておく
1.ユーザーから指定したメールアドレスへメールを送信してもらう
2.とどいたメールにユーザー固有のIDやデータを特定するためのデータを登録用フォームにリクエストするようなリンクをはり、アクセスしてもらう
  (ユーザー固有のID1つでは不安なため)
3.ユーザーに登録してsubmitしてもらう。
4.リクエストにより個人を特定してデータの仮登録
5.仮登録したデータをユーザーに送り承認用の返信を再度送ってもらう(いたずら防止のため)
6.登録完了。

Gordie氏のいうようにセッションに頼るのはやめたほうが
よいかなとシロート考えにもあります。
樋口/@IT
@ITスタッフ
会議室デビュー日: 2001/07/26
投稿数: 293
お住まい・勤務地: 東京都
投稿日時: 2003-11-17 17:43
通りがかりの@ITの樋口です。

引用:

knockさんの書き込み (2003-11-17 15:02) より:
実際には存在しないメールアドレスで一時的に使われるものです。
この時単純に考えると、ユーザが送った瞬間に"Returned mail: User unknown"が
ユーザに届いてしまうと思うのですが、これをどのようにシステムに処理させたら
よいのかがわからない状況です。


Postfixをお使いならば、拡張アドレスの機能がまさにそれかと。
registというアカウントだけ実在させておいて、regist-xxxx(あるいはregist+xxxx)というローカルパート宛てのメールは全部regist宛てに送るという機能です。
「Postfix 拡張アドレス」でGoogle様にお伺いをたててみてください。
_________________
樋口 理
株式会社アットマーク・アイティ
knock
会議室デビュー日: 2003/09/02
投稿数: 17
投稿日時: 2003-11-17 19:08
Gordie 様、ほむら様、樋口/@IT 様
ご返信ありがとうございます。

皆様のご指摘がまさにドンピシャリで正直びっくりしておりますが、
まず、regist-xxxx@hoge.com に送った場合の処理は樋口/@IT 様が
おっしゃるように Postfix の拡張アドレス機能によって無事解決できました。
きちんと To フィールドで xxxx の部分も取り出せました。
regist-xxxx を regist 宛にするだけでなく、他にも色々とできそうです。

また Gordie 様、ほむら様がご指摘くださったようにセッションだけに
頼ってこの手の流れを行うのは危険ですね...
ユーザに送るメールに含まれる URL にはセッション以外に仮会員情報のための
仮会員 ID やその他のユーザを特定できる ID を付加するのがベストだと思いました。

本当に貴重なご指摘、アドバイスありがとうございました。
失礼します。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2003-11-19 12:41
ども。ガルと申します。
なんかもう解決されているっぽいのですが、一応。
引用:

2. でシステム側から生成されるメールアドレス(regist-XXXX@hoge.com)は
実際には存在しないメールアドレスで一時的に使われるものです。
この時単純に考えると、ユーザが送った瞬間に"Returned mail: User unknown"が
ユーザに届いてしまうと思うのですが、これをどのようにシステムに処理させたら
よいのかがわからない状況です。


んと、sendmailでもqmailでも、おっしゃってる話と同等の機能があります。
他に見られた方へをちと意識して、簡単にですがコメントを残しておきます。

# 最近、この手の要求はわりと増えてきたので、他にも悩んでる方が出てきそうなので一応。
1

スキルアップ/キャリアアップ(JOB@IT)