Nokia E61 IMAP IDLE

Nokia E61で新着メール受信の通知をリアルタイムで受けるため、「IMAP IDLEコマンド」をテストしてみました。

E61のIMAP4

E61端末搭載のメーラーはIMAP IDLEコマンドに対応しています。IMAP IDLEコマンドはIMAPの接続を維持した状態でクライアントがIDLE状態になり、メール受信など、Mailboxの変更を検知するとサーバー側からクライアントに通知する仕組みです。これを利用すると他のサービスを利用しなくてもほぼリアルタイムに新着メール受信の通知を受けることができます。

IMAP IDLE対応のサーバー

dovecotCourier-IMAPなど、主要なIMAPサーバーはIMAP IDLEコマンドに対応しています。

お使いの環境でIMAP IDLEコマンドが利用できるかは「CAPABILITY」に「IDLE」が含まれるかで確認できます。telnetで以下のように確認できます。

$ telnet localhost 143
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.
* OK Dovecot ready.
1 capability
* CAPABILITY IMAP4rev1 ... IDLE ...
1 OK Capability completed.

実際の通信量

1時間接続して通信量を確認しました。IMAPはdovecot、アクセスポイントは mopera Uです。この間にメール受信はしていません。以下はスクリーンショットです。

スクリーンショット

メール受信がない状態でも1時間で約10KBの通信が発生しています。これは、dovecot側から120秒周期でkeepalive(NOOP)が送信され、E61がその応答を行っているためです。

テストした環境ではSSLを使用しませんでしたが、使用する場合は上記より通信量が多くなります。

リアルタイム性

メール送信後、数秒でE61では「新着E-Mail」となり、非常に良い感じです。ただし、使用するサーバーや回線によって遅延が起こる可能性はあります。

Direct Pushとの比較

Direct PushはMicrosoft(Exchange)の(擬似?)Pushメール技術です。仕組み的には

  1. クライアントがHTTPまたはHTTPSによってサーバーにリクエストを発行。
  2. クライアントはスリープ。
  3. サーバーは即座にレスポンスを返さず、事前に設定された時間(15分など)応答を保留する。ただし、その間にMailboxに変化があるとその時点でレスポンスを返す。
  4. クライアントは変化があった旨のレスポンスを受け取ると、メールを受信する。
  5. クライアントは再度リクエストを発行する。

のようになっています。不正確な部分があるかも知れませんので、詳細はこちらをご確認ください。

これらの仕組み上、やはり定期的にクライアント-サーバー間で通信が発生します。Web上の情報によると、おおよそ15~20KB/時だそうです。IMAP IDLEコマンドを利用した場合と大差なさそうです。

その他

IMAP IDLEコマンドが利用できる環境をお持ちの方は、追加サービスの契約やアプリケーションのインストールが不要ですので試してみる価値はありそうです。ただ、やはり120秒周期のkeepaliveによる通信がネックになります。 特にバッテリーの消費量はかなり問題です。 使い方によると思いますが、24時間はもたない感じです。この周期を調整すれば、通信量やバッテリー消費も改善できそうです。

また、IMAP IDLEが利用できるプロバイダはあまりないようです。mopera UではIMAPが提供されていますが、capabilityで確認したところ、IMAP IDLEコマンドは提供されていないようでした(2007/01現在)。

$ telnet mail.mopera.ne.jp 143

(略)

1 capability
* CAPABILITY IMAP4rev1 UIDPLUS NAMESPACE QUOTA STARTTLS
1 OK CAPABILITY completed



NOTE:
  • IMAP4 IDLEコマンドによる新着通知は厳密にはプッシュメールとは言えません。
  • IMAP4 IDLEPush-IMAP(P-IMAP)は異なる技術です。