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)

Out-of-Band

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.

Filtern bei der Zustellung

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

  1. Lemonade-RFC 5550: http://www.ietf.org/rfc/rfc5550.txt
  2. Lemonade-Arbeitsgruppe: http://www.ietf.org/dyn/wg/charter/lemonade-charter.html
  3. SMTP-RFC 5321: http://www.ietf.org/rfc/rfc5321.txt
  4. IMAP-RFC 3501, Version 4rev1: http://www.ietf.org/rfc/rfc3501.txt
  5. Sieve-RFC 5228: http://www.ietf.org/rfc/rfc5228.txt
  6. Markus Feilner, "Serverseitige Mailfilter mit Sieve", Linux-Magazin 06/07, S. 54.
  7. "SMTP Service Extension for 8bit-MIMEtransport", RFC 1652: http://www.ietf.org/rfc/rfc1652.txt
  8. "SMTP Service Extensions for Transmission of Large and Binary MIME Messages", RFC 3030: http://www.ietf.org/rfc/rfc3030.txt
  9. "IMAP4 Binary Content Extension", RFC 3516; http://www.ietf.org/rfc/rfc3516.txt
  10. "Transport Layer Security Protocol Compression Methods", RFC 3749: http://www.ietf.org/rfc/rfc3749.txt
  11. "The IMAP COMPRESS Extension", RFC 4978: http://www.ietf.org/rfc/rfc4978.txt
  12. "IMAP Extension for Conditional STORE Operation or Quick Flag Changes Resynchronization", RFC 4551: http://www.ietf.org/rfc/rfc4551.txt
  13. "IMAP4 Extensions for Quick Mailbox Resynchronization", RFC 5162: http://www.ietf.org/rfc/rfc5162.txt
  14. "Contexts for IMAP4", RFC 5267: http://www.ietf.org/rfc/rfc5267.txt
  15. "IMAP4 Extension to SEARCH Command for Controlling What Kind of Information Is Returned", RFC 4731: http://www.ietf.org/rfc/rfc4731.txt
  16. "IMAP – SORT and THREAD Extensions", RFC 5256: http://www.ietf.org/rfc/rfc5256.txt
  17. "IMAP CATENATE Extension", RFC 4469: http://www.ietf.org/rfc/rfc4469.txt
  18. "IMAP – UIDPLUS extension", RFC 4315: http://www.ietf.org/rfc/rfc4315.txt
  19. "IMAP – URLAUTH Extension", RFC 4467: http://www.ietf.org/rfc/rfc4467.txt
  20. "Message Submission BURL Extension", RFC 4468: http://www.ietf.org/rfc/rfc4468.txt
  21. "IMAP – CONVERT Extension", RFC 5259: http://www.ietf.org/rfc/rfc5259.txt
  22. "IMAP4 IDLE command", RFC 2177: http://www.ietf.org/rfc/rfc2177.txt
  23. "The IMAP NOTIFY Extension", RFC 5465: http://www.ietf.org/rfc/rfc5465 .txt
  24. "Sieve Email Filtering: Extension for Notifications", RFC 5435: http://www.ietf.org/rfc/rfc5435.txt
  25. "Sieve Email Filtering: Imap4flags Extension", RFC 5232: http://www.ietf.org/rfc/rfc5232.txt
  26. "Sieve Email Filtering: Vacation Extension", RFC 5230: http://www.ietf.org/rfc/rfc5230.txt
  27. Polymer: http://dave.cridland.net/acap/polymer.html
  28. Alexey Melnikov, IMAP-Server-Referenz: http://www.melnikov.ca/mel/devel/ServerReference.html

Der Autor

IMAP-, ACAP-, POP- und SASL-Spezialist Alexey Melnikov ist Verfasser und Mitautor unzähliger RFCs und Referenztexte, darunter RFC 5550.

comments powered by Disqus
Mehr zum Thema

Mails filtern mit Sieve

Wer täglich mit einem ganzen Berg von E-Mails konfrontiert wird, ist auf intelligente Filter angewiesen. Mit Sieve steht dabei eine serverseitige Lösung zur Verfügung, die für Anwender wie für Administratoren einfach einzurichten und zu warten ist.
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

Ausgabe /2023