SPモードメールの仕組み(妄想)

いろんな記事を読んでの個人的憶測をまとめておく。
ただしまだドコモのソースは読んでない。今度読む。ソース確認しないで、あーでもねーこーでもねーというエントリー。

事実っぽいこと

  • IPアドレスにメールアドレスが紐付けられている
  • メールの送受信は一般的なPOP,SMTP
  • 通信はすべてIPレイヤ上で行われる。
  • 端末識別番号は送受信時には使われない。

こっから妄想

  • POPなんかで送受信するから、送受信するときはメールアカウント情報が端末に設定されてるはず。
  • じゃそのメールアカウント情報はどのタイミングで端末に設定されるのか?何を根拠にセットするのか。
  • IPアドレスにメールアカウントが紐付けしてたっていうんだから、IPアドレスが割り振られたとき?
  • IPアドレスが割り振られるたびにメールアカウント情報が端末に設定されるの?
  • SPモードサーバー側は、IPアドレス割り振るタイミングでメールアカウントとの紐付けを行う?ようだが、端末の何を見てその端末のメールアドレスを特定しているのか。SIM情報、平たく言えば電話番号?だよな。

例えば次のような流れ?

  1. DHCPサーバーによるIP割り付け
  2. 端末からSPモードサーバーへの問い合わせ(電話番号情報込み)
  3. SPモードサーバーからメールアカウント情報交換。このときSPモードサーバーでIPアドレスとメールアカウント情報を紐付け。
  4. 端末は取得したメールアカウント情報を設定。

なんでこんな面倒なことまでしてIPアドレスとの紐付けを行うのか?

  • たぶん、プッシュメール送信をIPレイヤで実現しようとしているからか?
  • POPだけによるメールリアルタイム取得するには、端末側がPOPサーバーを常に監視、ポーリングするしかない。でもこれでは、オーバーヘッドが大きい。端末も大変だし、POPサーバーも悲鳴をあげる。
  • そこで、サーバーにメールが届いたら、そのメールアカウントに紐付いたIPアドレスにパケットを飛ばすようにしたと。このパケットを端末が受信したら、POPでメールを取得しにいくと。
  • まさにIPレイヤでのメールプッシュ配信。

妄想は以上。

でもなんか無駄があるかもな。

IPアドレス割り振るたびにメールアカウントの設定を端末がする必要あるのか?
聞いた話では、おかしな状態になると、本来のメールアカウントとは異なるメールアカウントが端末に設定されるのだそうな。
その端末のSIMの入れ換え、電話番号が変わったタイミングで、最初に一度メールアカウント設定すればいいのになぁ。
もしくはそんな無駄なことはしてなくて、端末のメールアカウント設定は変わらず、ただ単純にSPモードサーバーが混乱したってこと?
そうだと仮定すると、SPモードサーバーでのIPアドレスとメールアカウントの紐付け誤り で、SPモードサーバーからのプッシュパケットが本来の端末とは別の端末に誤って届く、ということになる。
でも結局端末に設定されているメールアカウント設定が正しければ、そんな問題が発生したとしても、誤ってプッシュパケットを受け取った端末は、無駄にPOP見に行って終わりだし、本来届くべき端末にはリアルタイムには届かないってだけの話で、全く別のメールアカウントで送受信するなんて致命的なことには陥らないはず。

つまり

  • なんで、IPアドレス払い出すタイミングで端末側のメールアカウント設定までするのか。
  • 端末のメールアカウント設定はSIM交換のタイミングでやればいいのではないか。
  • そうすれば、仮にSPモードサーバーのメールアカウント紐付けミスがあったとしても、大きな問題にはならないんじゃないか。

とか思った。
SIMの抜き指しのタイミングって、アプリからわからないのかな?電話番号変わるんだしそののタイミングでオンラインサインアップすればいいのに。ウィルコム方式ね。
うーでもなんか俺勘違いしてるような気がする。妄想に妄想を重ねてるから、今度ソース当たってみる。

【追記】妄想じゃないほう

@TakagiHiromitsu先生のツイートの中に、妄想じゃないほうのSPモードメールの仕組みの資料のURLがリツイートされてました。
http://www.nttdocomo.co.jp/binary/pdf/corporate/technology/rd/technical_journal/bn/vol18_3/vol18_3_045jp.pdf
なるほどー。
やはり妄想とソースは違うな。

  • メールプッシュの仕方はSMSトリガーPOP方式。(ウィルコムとほとんど同じ)
  • 端末に設定されるメールアカウント情報は時限有効。
  • IPアドレス払い出し時にメールアカウント情報の交換をする。これは妄想と同じ。
  • 有効期限切れたらまたメールアカウント情報を交換する。
  • POP時にメールアカウント情報とIPアドレスによる認証が行われる。

ここからまた妄想

基本的に「端末側の設定を信用しない」というポリシーに立ってメールアカウントの設定を行っているような印象。
root化された端末のクラックが頻繁に行われるAndroidの脅威のようなものを感じながらシステム設計したよう。
だから、

  • 期限到来→再度メールアカウント情報設定
  • IPアドレス変更のタイミング→再度メールアカウント情報設定

とかしてるのかな?
そうなると図の「認証サーバー」:随時メールアカウント情報を払い出すサーバーの役割はとんでもなく重要だなぁ。

【追記その2】SPモードメールで払い出されるメールアカウント情報

ツイート追いかけただけですが、どうも、IPアドレスが払い出されるときに、一緒に払い出されるメールアカウント情報って、IPアドレスから生成されたハッシュ値みたいなもんらしいですね。
無線APからSPモードメールにアクセスしたログを解析された方がいらっしゃったようで、中身を見ると、無線APからSPモードメールの認証にこのハッシュ値みたいなもの(セッションIDみたいなやつ)とIPアドレスを使うと。
でそこから、POPサーバーにアクセスするんだけど、ID/PWなしでいきなりアクセスするようなかんじだったなぁ。
このハッシュ値でユーザーは特定できるから、ID/PWなしのPOPアクセスしても問題ない、って理屈だな。
今回の問題では、払い出されたハッシュ値みたいなものが、サーバー側で誤って別のユーザーひもづけてしまったということか。
こりゃまずいな。
払い出したセッションIDと他人を誤ってひもづけてしちゃったときの対策がないのか。エラー時の対策が必要だなぁ。