High Availability lässt sich heute mit günstiger Hardware und einer großen Auswahl an kommerzieller sowie freier Software realisieren. ADMIN erklärt die ... (mehr)

"Sie haben neue Mail!"

Alle gängigen Desktop-Mailprogramme bauen auf Initiative des Benutzers eine Verbindung zum Server auf, um nach neuen Nachrichten zu schauen. Parallel dazu schauen viele Clients selbsttätig in Intervallen nach neuer Mail, damit der Benutzer deren Eintreffen möglichst bald registriert. Auf mobilen Clients birgt dieses Polling allerdings zwei Probleme:

  • Kurze Polling-Intervalle belasten das (eventuell kostenpflichtige) Netzwerk, das Mobilgerät sowie die Serverressourcen über die Gebühr. Bei Handys und ähnlichen mobilen Endgeräten saugt Polling zudem den Akku leer, weil es den Sleepmodus torpediert.
  • Der Client benachrichtigt die Benutzer nur so oft, wie er neue Mail abruft und nicht in Echtzeit, wie es anspruchsvolle Benutzer erwarten.

Polling erweist daher als schlechte Lösung für die meisten Mobiles. Zum Glück gibt es Push-Mail. Blackberry-Geräte, der Funambol-Server und einige andere haben diese Technik populär gemacht.

In-Band-Push

Viele Server können Clients über eintreffende E-Mails benachrichtigen, sobald der Client einen beliebigen IMAP-Befehl absetzt. Dieser Ansatz ist ziemlich effizient. Allerdings empfangen die meisten Benutzer nicht genügend Nachrichten, um ihren Client für diese Technik aktiv genug zu halten. Die »IMAP IDLE« -Erweiterung [22] vermeidet das Polling des IMAP-Servers. Clients wie Thunderbird oder Outlook implementieren genauso wie Server bereits häufig diese Erweiterung [28].

Die Extension führt einen neuen IMAP-»IDLE« -Befehl ein, der den Server darüber in Kenntnis setzt, dass der Client eine Information über etwaige Änderungen der aktuellen Mailbox erwartet (siehe IMAP-Ablauf in Tabelle 1). Kommt die Benachrichtigung, storniert der Client den »IDLE« -Befehl und reagiert auf sie, indem er beispielsweise eine eingetroffene Mail abruft.

Tabelle 1

In-Band-Push-Protokoll

Sender

Nachricht

Client

10 IDLE

Server

+ idling

[...]

[...]

Server

* 43418 EXISTS

Server

* 2 RECENT

Client

DONE

Server

10 OK IDLE terminated

Client

13 UID fetch 919277 (FLAGS RFC822.SIZE INTERNALDATE ENVELOPE)

Server

* 43417 FETCH (FLAGS (\Recent) UID 919277 …

Server

13 OK UID FETCH Completed

Allerdings hat die Idle einige Schwächen, die zur Entwicklung von RFC 5465 für »IMAP NOTIFY« führten [23]. So kann »IDLE« weder die vom Server zu generierenden Ereignisse steuern, noch wie der Client darüber zu benachrichtigen ist.

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019