IMAP und der IDLE Befehl
Nachdem ich letzten den Nameserver einer Meiner Domains ändern musste, bin ich mal wieder auf den MX-Eintrag meiner Domain valentinvoigt.info aufmerksam geworden. Dieser zeigt via CNAME auf die DynDNS-Adresse meines Homeservers. Dort widerrum befindet sich ein Postfix Server, der … naja, eigentlich nichts zu tun hat.
Da ich mich schon länger nicht mehr mit dem Thema Mailserver beschäftigt habe, habe ich mir diesen Postfix-Server mal angeschaut. Dort habe ich bereits valentinvoigt.info als gültige Domain eingetragen. Komisch eigentlich, ich kann mich gar nicht daran erinnern, jemals diese Domain als einer meiner E-Mail-Adressen benutzt zu haben. Also habe ich mal schnell sendmail rausgeholt und mir selbst eine E-Mail an diese Domain geschickt. Und stellt euch vor – die kam an. Mit ca. 45 Sekunden Verzögerung, die mein Mail-Client zum Pollen der E-Mails benötigte.
45 Sekunden? “Da geht doch noch mehr”, dachte ich mir und schaute mir einige Tools an, die in der Lage sind Mailboxen zu überwachen. Schnell stieß ich auf das Programm mailnotify. Dort fand ich ein Feature, dass Gebrauch von der so genannten IDLE-Extension von IMAP macht. IDLE, zu Deutsch “nichts tun” klingt nicht besonders spannend, hat aber etwas ziemlich cooles an sich. Denn IDLE ist ähnlich wie “Pushmail” für mobile Clienten in der Lage, den Mail-Client in Echtzeit über den Empfang neuer E-Mails zu beachrichtigen. Nur leider funktionierte das auf Anhieb nicht…
Nach ein wenig Recherche fand ich aber schnell raus, wie ich IDLE zu meinem Vorteil nutzen könnte. Der Clue liegt in der Konfigurations-Datei des Courier-IMAP-Dienstes. In der Datei namens imapd gibt es eine Einstellung “IMAP_ENHANCEIDLE”. Diese muss auf 1 gesetzt werden, damit Courier die E-Mails in Echtzeit ausliefern kann. Courier benutzt dann den File Alteration Monitor, genannt FAM, der auf Kernel-Ebene Dateien und Verzeichnisse auf Änderungen überwacht. Dies ist in vielen Szenarien sinnvoll um ein Polling (d.h. regelmäßiges Prüfen auf Änderungen) zu vermeiden. Dies tut dann auch Courier nicht mehr, der Änderungen in der Mailbox nun in Echtzeit von FAM geliefert bekommt.
Mit dieser Technik habe ich nun eine Echtzeitbenachrichtigung über neue E-Mails. Zumindest an jene, die an valentinvoigt.info gesendet werden. E-Mails über meine GMX-Adresse müssen leider nach wie vor gepollt werden. Dort habe ich im Schlimmstfall noch eine Verzögerung von 5 Minuten. Okay, zugegeben. Brauch mal wieder keiner. Aber dennoch ist eine Echtzeitbenachrichtigung in manchen Fällen (Server- oder Software Ausfälle) schon sinnvoll. Nun kann man sich auf seine E-Mails konzetrieren und keine Jabber-Benachrichtigungen friemeln.