IMAP IDLE は IMAP プロトコルの拡張仕様で、クライアント側からの継続的な問い合わせ(ポーリング)なしにリアルタイムのメール通知を可能にする機能です。有効にすると、メールクライアントはサーバーとの接続を維持し、新しいメッセージが届いた瞬間にプッシュ通知を受け取ることができます。これにより手動の更新や定期的な確認が不要になり、サーバー負荷とバッテリー消費を抑えながら即座にメールの着信を把握できます。
IMAP IDLE は、メールシステムを「プル型(自分から取りに行く)」から「プッシュ型(届けてもらう)」へと転換させます。IDLE がない場合、クライアントは一定間隔(5〜15分ごとなど)でサーバーを確認しに行く必要があり、無駄なネットワークトラフィックとサーバー負荷が発生します。IDLE を使用すれば、チャットアプリのようにメールを即座に受信できるため、レスポンスタイムとユーザー体験が向上します。特にモバイルデバイスでは、頻繁なポーリングに比べてバッテリー消費を大幅に削減できるため、現代のメールアプリには不可欠な機能です。
メールクライアントが IMAP IDLE をサポートしている場合、メールボックスを選択した後にサーバーへ IDLE コマンドを送信します。サーバーは接続を開いたまま維持し、新しいメッセージの到着、削除、フラグの変更などの変更が発生すると即座にクライアントへ通知します。クライアントが他の操作を行う際は、一旦 DONE コマンドを送って IDLE モードを終了させる必要があります。RFC 2177 ではサーバーが少なくとも30分間のアイドル時間を許可することを推奨しているため、多くの実装ではタイムアウトを防ぐために29分ごとに接続を更新します。
通常のポーリングは、新着メールの有無にかかわらず一定間隔(例:5分ごと)で確認を行います。IMAP IDLE は接続を維持し、変化があった時のみ通知を受け取ります。これにより、受信が速くなり、リソース消費も抑えられます。
Gmail、Outlook、Yahoo、および Dovecot や Cyrus などの主要な自社運用ソリューションを含む、ほとんどの現代的なサーバーがサポートしています。サーバーの応答(CAPABILITY)に IDLE が含まれているかで確認できます。
ネットワークの不安定さ、モバイル回線の NAT タイムアウトによる切断、サーバー側のレート制限、またはクライアントが切断後に適切に再接続できていないことが原因として考えられます。
標準の IMAP IDLE は1接続につき1フォルダのみ監視可能です。複数のフォルダを監視するには複数の同時接続が必要です。プロバイダーによっては同時接続数に制限を設けているため、重要なフォルダを優先しましょう。