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):

  • A1 LOGIN Benutzername Kennwort
    Ich melde mich mit  meinem Benutzernamen und dem unkenntlich gemachten Kennwort an. Der Server antwortet mit einem A1 OK
  • A2 SELECT INBOX
    Ich wähle meinen Posteingang als gewünschtes Objekt aus. Exchange meldet mir dann mehrer Zeilen zurück, die durch einen "*" eingeleitet werden. Unter anderem dass die 13te Mail meine erste "ungelesene" Mail ist. Hier könnten dann nun Befehle folgen, um die Mails zu übertragen.
  • A3 IDLE-Kommando
    Nun sende ich das IDLE Kommando ab, welches mir sofort die beiden nächsten Zeilen sendet und dann verharrt
  • Eine neue Mail trifft ein
    Hier nicht sichtbar ist, wie ich nun eine neue Mail in mein Postfach zustelle ( Ich habe dazu per TELNET eine Mail wie auf SMTP-Telnet beschrieben gesendet.
  • IMAP4 meldet die Mails
    In der gleichen Sekunde, in der ich die Mail abgesendet habe, hat der IMAP4-Server mit nun die beiden rote gekennzeichneten Zeilen übertragen. Sie sehen, dass eine neue Mail hinzu gekommen ist.
  • DONE
    Ich beendet das "Warten" nun mit dem Wort "DONE", worauf der IMAP4-Server dies korrekt bestätigt (a3 OK IDLE completed)
  • A4 logout
    An dieser Stelle melde ich mich nun ab, um die Verbindung sauber zu schließen. Ein Mailprogramm würde hier natürlich nun die neue Mail abrufen und dem Anwender anzeigen. Wenn die Verbindung weiter aktiv bleiben soll, wird der Client dann erneut ein IDLE-Kommando einstellen.

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.

  • Windows unabhängig
    Der größte Vorteil von IMAP4 ist natürlich die Option, auch mit "nicht Windows Mobile" Endgeräten eine Verbindung aufbauen zu können. So gibt es ja für den Treo das Programm "Chattermail" und sicher wird es noch andere Programme geben.
  • Desktopeignung
    Wie viele Personen nutzen heute einen "POP3-Notifier", der alle paar Minuten den Server auf neue Mails fragt und anzeigt, weil Sie z.B.: nicht Outlook gestartet haben wollen oder andere Gründe vorliegen. Ich kenne zwar noch keinen IMAP4-Notifier, aber so schwer kann das ja nicht sein. Dann würden neue Mails "sofort" benachrichtigt.
  • Ohne Exchange
    Viele andere Mailserver unterstützen ebenfalls IMAP4. Wenn also der Mailserver ihres Providers dann nicht nur IMAP4, sondern auch das IDLE-Kommando unterstützt, dann steht der Verbindung per mobilem Gerät nichts entgegen.
    GMX und WEB.DE unterstützen z.B. auf IMAP4 aber das IDLE-Kommando scheint nicht aktiv zu sein.

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.

  • Smart Forward und kein Smart Reply
    Wenn Sie normalerweise eine Mail per IMAP4 übertragen haben und diese weiterleiten, dann wird dieser auch wieder von ihrem PC versendet. Auch bei einer Antwort wird die original Mail vielleicht angehängt bleiben. ActiveSync hingegen unterstützt Smart Forward und Smart Reply, d.h. wenn ich auf dem PocketPC nur ein "ja ist in Ordnung" antworte oder z.B. mit "Bitte anschauen" die Mail weiterleite, dann geht auch nur genau das über die Leitung. Der Exchange Server hängt die originale Mail bei der Antwort oder Weiterleitung dran. Die Mails wird also nicht mehr von meinem PocketPC komplett an Exchange übertragen. Das macht natürlich erst recht Sinn mit Anlagen, die ich auf dem PocketPC vielleicht gar nicht übertragen habe
  • Mail teilweise herunter laden
    Mit ActiveSync ist es kein Problem, z.B. nur das erste Kilobyte einer Mail herunter zu laden.
  • Kalender und Kontakte
    IMAP ist einfach nur ein Zugriffsprotokoll auf ein Potfach. Die Inhalte sind erst einmal nicht festgelegt. Klar dass eine Mail nach RFC-822 Format jeder IMAP4-Client versteht, aber über den Abgleich von Terminen und Kontakten ist natürlich kein Standard zu finden. Wenn Sie daher "mehr" mit ihrem Server machen als nur etwas Mail, dann scheitert der mobile Zugriff. Kaum ein IMAP4-Client wird das "Datenformat" von Terminen und Kontakten verstehen.
  • GAL Lookup
    Wie finden ihre Mitarbeiter ihre Adressen ?. ActiveSync gleicht zum einen die Kontakte ab, in die sie mit Outlook PCS sogar Firmenkontakte ablegen können oder erlaubt den Zugriff mittels Mobile GAL. Bei der Nutzung von IMAP4 könnten Sie nur auf das Protokoll LDAP ausweichen. Würden Sie aber ihre Domänencontroller auf dem LDAP-Port aus dem Internet erreichbar machen ?.
  • Mail senden per SMTP
    Was gerne übersehen wird ist, dass der Versand der Mails bei ActiveSync auch per HTTP erfolgt, aber bei IMAP4 natürlich hier wieder SMTP zum Einsatz kommt. Sie müssen also zusätzlich auch noch einen SMTP-Server anbieten, der bitte schön mit Authentifizierung und SSL die Mail der Clients annimmt und weiter gibt. Wieder ein Port mehr und viele Firmen und Provider sperren manchmal schon Port 25 und den direkten Versand von Clients.

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