IMAP4-Push

Übersicht über andere Push Systeme siehe Pushdienste

Bei der Auflistung all der Möglichkeiten, eine Mail auf einen mobilen Client aktiv zu senden wird oft eine Erweiterung des IMAP4 Protokolls übersehen. Klassisch ist IMAP4 ähnlich zu POP3 primär ein Protokoll, mit dem Client ihre Mails im Postfach abrufen bzw. bearbeiten können. Normalerweise initiiert der Client dabei die Verbindung und prüft regelmäßig auf neue Nachrichten ab.

Da diese zyklischen Prüfungen aus Rücksicht auf Netzwerkbelastung, Serverbelastung und Kosten nicht jede Sekunde durchgeführt werden, entsteht zwangsläufig eine Verzögerung zwischen der Zustellen der Mail in das Postfach und der Anzeige dieser neuen Nachricht auf dem Client. Die meisten Clients fragen alle 5 Minuten nach neuen Nachrichten ab.

Wenn nun ein mobiles Endgerät ins Spiel kommt, dann sind aber auch diese 5 Minuten zu häufig, wenn die einzig übertragene Information ein "nichts neues" ist. Selbst wenn hierbei nur wenige Bytes übertragen werden, so bedeuten 100 Byte alle 5 Minuten ein zu bezahlendes Volumen von 1 Megabyte im Monat.

Aber es gibt für IMAP4 schon seit 1997 die IDLE-Erweiterung (http://www.faqs.org/rfcs/rfc2177.html) IMAP4. Die Funktion ist dabei ähnlich von Always Up-to-date.

So funktioniert IDLE

Der Client stellt eine Anfrage und der Server antwortet worauf der Client nun ein "IDLE" sendet und auf die Antwort des Servers wartet. Die TCP/IP-Verbindung bleibt dabei geöffnet. Der Server kann nun immer weiter Meldungen an den Client senden, bis der Client die Verbindung mit einem "DONE" abschließt.

Über diesen Weg kann der Server den Client über neue Nachrichten sofort informieren, ohne dass der Client eine erneute Abfrage stellen muss. Der Client erkennt diese Information, beendet den IDLE-Mode und holt ganz normal die neue Nachricht ab. IMAP4 sendet also nicht nicht selbständig die neue Nachricht sondern informiert nur den Client über die neue Mail. Der Client ist dann wieder gefordert, die Nachrichten in der gewünschten Weise (z.B.: nur eine kurze Vorschau) zu übertragen.

So funktioniert IDLE im Detail

Die prinzipielle Funktionsweise von IMAP4 ist auf IMAP4Hardwcore beschrieben und ist ein wenig aufwändiger als POP3 (Siehe POP3-Telnet). Aber IMAP4 ist dennoch so einfach, dass wir mit einem einfachen TELNET die Funktion demonstrieren können. Das folgende Fenster zeigt folgende (Jede Transaktion wird mit einer Nummer (hier a1,  a2, a3 und a,4) eingeleitet):

Hier die Ausgaben von Telnet.

Insofern ist es auch mit IMAP4 sehr einfach, eine quasi PUSH-Funktion zu implementieren, bei der Client sehr schnell ein Update über neue Nachrichten erhält.

Entsprechend der RFC2060 kann ein IMAP4 Server einen Timeout für eine Verbindung einführen. Um die RFC nicht zu verletzen, darf der Timeout aber nicht unter 30 Minuten sein.

5.4.    Autologout Timer
If a server has an inactivity autologout timer, that timer MUST be of at least 30 minutes' duration.  The receipt of ANY command from the client during that interval SHOULD suffice to reset the autologout timer

Beachten Sie bitte, dass auch hierbei das Kennwort per Klartext über die Leitung geht. Wenn Sie diese Funktion daher aus dem Internet oder andere unsichere  nutzen möchten, dann ist SSL aus meiner Sicht zwingend erforderlich. Zudem sollten Sie natürlich eine passable Firewall haben, die Angriffe auf den IMAP4-Server erschwert.

Produkte mit IDLE-Unterstützung.

Damit die IDLE-Funktion genutzt werden kann, müssen natürlich sowohl der Server als auch der Client diesen Befehl unterstützen. Auch Firewall und Proxies sind mögliche Störfaktoren bei einer Kommunikation. Folgende Produkte unterstützen den IDLE-Befehl. Ich habe die Interoperabilität jedoch nicht für alle Kombinationen geprüft, sondern verlasse mich auf Aussagen der Hersteller.

IDLE im Server

Produkt Version Betriebssystem
Exchange 5.5 Windows
Exchange 2000 Windows
Exchange 2003 Windows
Cyrus IMAP Server ? Unix

Ob ihr Server den IDLE-Befehl unterstützt, können Sie einfach durch eine Verbindung per IMAP4 feststellen. Verbinden Sie sicih einfach per TELNET mit ihrem IMAP4 Server (port 143)

TELNET ihr.imap4.server 143

Geben Sie dann nach der Willkommensmeldung ein

A001 CAPABILITY

Der Server antwortet mit einer Auflistung der verfügbaren Befehle

Zum sauberen Abbau der Verbindung geben Sie einfach folgendes ein

A002 LOGOUT

Clients mit IDLE Support

Ob ein Client den IDLE-Befehl unterstützt, sollten Sie am besten den Hersteller fragen. Einige Clients erlauben bei der Konfiguration explizit die Aktivierung oder Deaktivierung der IDLE-Option während andere Client IDLE  einfach nutzen, wenn es verfügbar ist.

Produkt Betriebssystem
Outlook Windows
Outlook Express Windows
Eudora Windows, Mac, Unix
Chattermail Palm TREO
Nokia 6630 Nokia
http://www.nokia.de/de/mobiltelefone/technologie/mobile_emailfunktionen/so_funktionierts/145554.html

Interessant wird es, wenn immer mehr Clients nicht nur eine Internetverbindung per GRPS oder UMTS nach Volumen abrechnen, sondern diese auch das IDLE-Kommando unterstützen.

Ohne Hinweise können Sie die Funktion von IDLE nur experimentell feststellen. Stellen Sie ihren Client so ein, dass er z.B. nur alle 10 Minuten auf neue Mails prüft und lassen Sie sich intern eine neue Mail senden. Wenn der Client diese sofort signalisiert, liegt der Verdacht nahe, dass dazu der IDLE-Befehl genutzt wird.

IMAP4 im Vergleich zu ActiveSync

So schön das mimt IMAP4 aussieht und auch die "Pushfunktion" (Was ja eigentlich keine ist, da die Verbindung wie bei Always Up-to-date vom Client aufgebaut und gehalten wird) vorhanden ist, so stellt sich die Frage, wo die Stolperfallen bei IMAP4 im Vergleich zu ActiveSync sind.:

Vorteile

Fangen wir mit den Vorteilen an.

Nachteile

Aber wo Licht ist, ist auch Schatten und wenn man jedes einzelne BIT extra bezahlen muss, dann sollte man schon genau hinschauen: Im Vergleich zu Exchange 2003 ActiveSync schneidet IMAP4 schon schlechter ab.

So interessant der Ansatz ist, mit IMAP4 und "IDLE" einen Art Pushdienst mit Exchange 2000 und älteren Windows Mobile Geräten oder Fremdprodukten aufzusetzen, so schnell werden Sie aber merken, dass viele Dinge nicht gehen oder erhebliche Kompromisse einzugehen sind.

Was ich mir aber interessant vorstellen könnte ist ein kleines Pocket Windows Programm, welches einfach per IMAP4 + IDLE auf einen Exchange Server sich verbindet und beim eintreffen einer neuen Mail einfach mal  "ActiveSync" startet. Sie brauchen dann zwar weiterhin Exchange 2003 oder Exchange 2000 mit dem Mobile Information Server, aber das wäre ein Mittelweg für alle älteren Windows Mobile Endgeräte. Ich befürchte aber, dass kaum noch Windows 2003 Besitzer hierfür Geld ausgeben würden. Auch RoadSync kann Windows 2003 "pushtauglich" machen und dabei sogar die Richtlinien anwenden.

Weitere Links

Keywords:Push Blackberry Goodlink Vista ActiveSync EAS AUTD SyncML IMAP4