Als Alternative zum
»IMAP IDLE
«
-Ansatz bietet sich ein Mechanismus an, mit dem der Server etwas an den Client sendet, wenn für diesen eine Nachricht eintrifft, ohne eine offene TCP-Verbindung zwischen beiden vorauszusetzen. Dieser Out-of-Band-Mechanismus ist besonders nützlich, wenn der Benutzer eher selten dringende Nachrichten bekommt. Dann kann der Client die IMAP-Verbindung zum Mailstore lange herunterfahren und schont den Akku.
Zugleich umgeht Out-of-Band eine weitere IMAP-Eigenheit: Aufgrund des Inaktivitäts-Autologout-Features müssen die Kommunikationspartner die IDLE-Verbindung spätestens alle 30 Minuten erneuern – sind NAT-Boxen im Spiel in der Praxis sogar noch häufiger. Dieser Wiederaufbau erzeugt Netzwerkverkehr, nicht viel, aber zum Client-Aufwecken reicht es.
Listing 1
demonstriert wie eine Out-of-Band-Benachrichtigung in der Praxis aussieht. Es benutzt die E-Mail-Skriptsprache Sieve
[5]
,
[24]
. Der Sieve-Support ist übrigens Pflicht für jeden Lemonade-fähigen Mail Delivery Agent (MDA). Das Skript sendet die Benachrichtigung an einen XMPP/Jabber-Instant-Messaging-Account (IM), sofern das
»enotify
«
des Server-Sieve
»xmpp://
«
kennt und der betreffende IM-User online ist.
Listing 1
Out-of-Band-Mail
Das Sieve-Skript in
Listing 2
erzeugt Out-of-Band-SMS-Nachrichten, und zwar nur dann, wenn der Client nicht über IMAP mit dem Mailstore verbunden ist. Im Beispiel ist
»+15105550101
«
die Zieltelefonnummer,
»myaccount
«
der IMAP-Username des Skript-Besitzers auf dem
»example.com
«
-Server. Die
»notify_method_capability
«
-Bedingungen stellen fest, ob der angegebene Benutzer online ist.
Listing 2
Out-of-Band-SMS
Unterstützt die eigene Sieve-Engine die
»sms:
«
-Benachrichtigungsmethode nicht, kann der Admin vielfach stattdessen auf die
»mailto:
«
-Benachrichtigung zurückgreifen, sofern er ein E-Mail-an-SMS-Gateway zur Hand hat. Überhaupt hantieren die einzelnen Sieve-Engines mit unterschiedlichen Benachrichtigungsmethoden: So unterstützen Dovecot und Isode M-Box
»mailto:
«
-Benachrichtigungen. Um die Portabilität der Sieve-Skripte zu verbessern, können diese die verfügbaren Benachrichtigungsmethoden mit einer
»valid_notify_method
«
-Bedingungen abfragen – die Einzelheiten weiß
[24]
.
Auch zu bedenken gilt, dass Sieve-gestützte Nachrichten eine ausführliche Konfiguration ihrer Engine voraussetzen. Beispielsweise erwarten SMS-Benachrichtigungen ein eingerichtetes SMS-Gateway,
»mailto:
«
braucht einen SMTP-Server.
User, die eine SMS-Benachrichtigung über ein SMS-to-E-Mail-Gateway empfangen wollen, aber wegen ihrer Sieve-Engine keine
»notify
«
-Aktion vorfinden, nutzen stattdessen die
»redirect
«
-Aktion. Der Ansatz überlässt freilich die Einzelheiten der Konvertierung in SMS dem Gateway. Dabei bleibt unklar, wie es Anhänge handhaben wird, also ob es sie entfernt, konvertiert oder ob es die Nachricht komplett ablehnt.
Sieve erlaubt es, E-Mails regelbasiert automatisch zu verarbeiten. Neben dem Filtern und Einsortieren von Mails unterstützt es automatische Benachrichtigungen für den Absender. Dazu eignet sich die
»vacation
«
-Aktion
[26]
. Trotz ihres Namens beschränkt sie sich nicht auf die Urlaubs-Auto-Replys, wie
Listing 3
beweist.
Listing 3
Erweiterte Vacation mit Sieve
Ebenso nützlich ist es, E-Mails beim Zustellen zu markieren – am besten mit Sieves
»imap4flags
«
-Erweiterung
[25]
. Zum Beispiel:
require ["fileinto", "imap4flags"]; if address :is "From" "myfriend@example.org" { addflag ["\\Flagged", "NonJunk"]; keep; stop; }
Das Skript kennzeichnet Nachrichten mit
»From: myfriend@example.org
«
im Header als wichtig (
»\Flagged
«
) und legitim. RFC 5550 bündelt viele E-Mail-Features, die für mobile Enduser nützlich sind. Setzen die angekündigten Implementierungen alle Funktionen um, dürfen sich alle Mobil-Anwender freuen.
Infos