Sieve anstatt procmail
procmail
ist eine ziemlich alte Technologie, um Emails automatisch in Ordner zu stecken, zu verwerfen und ähnliches. Die Software ist schon so lange Bestandteil quasi aller Linux Distributionen, dass man auf die Idee kommen könnte, sie gehöre “irgendwie dazu”. Falsch. procmail ist uralt, unsicher und wird seit vielen Jahren nicht mehr gewartet. Zeit für eine Alternative. Meet sieve.
Wer sich für die Details von “procmail ist böse” interessiert, dem empfehle ich die Zusammenfassung procmail considered harmful von Antoine Beaupré. Wer als bottom line nur eine Erkenntnis mitnimmt, dem sei gesagt: Der letzte Maintainer des Codes hatte schon 2014 dazu geschrieben:
Executive summary: delete the procmail port; the code is not safe and should not be used as a basis for any further work.
#nuffsaid
Was ist (Pigeonhole) Sieve?
Die Sieve Filterregeln beschreiben, wie Email verarbeitet, einsortiert und verteilt werden soll. Sie ermöglichen das automatische Anlegen von Ordnern, das Senden von Abwesenheitsnachrichten, das Ablehnen von Emails und vieles mehr.
Die Syntax der Sieve Filterregeln wurde schon 2008 durch RFC 5228 beschrieben. Das Pigeonhole Projekt implementiert die Syntax für den Dovecot Emailserver. Dovecot ist weit verbreitet, um POP3, IMAP und andere Email-Abrufprotokolle bereitzustellen. Die Kombination “Postfix plus Dovecot” dürfte auf vielen Tausenden Servern in Betrieb sein.
Die Installation erfordert, ein Dovecot-Plugin zu installieren. Je nach verwendetem OS können dazu unterschiedliche Schritte nötig sein. Pigeonhole Installation listet die gebräuchlichen auf.
Unter Debian existiert dann bereits eine Datei /etc/dovecot/conf.d/90-sieve.conf
durch die die Grundkonfiguration bereitgestellt wird.1 Die Sieve Regeln gliedern sich in systemweite Regeln und Benutzerregeln. Unter den systemweiten Regeln findet sich bei mir in /etc/dovecot/sieve-after/spam-to-folder.sieve
zum Beispiel:
require ["fileinto","mailbox"];
if header :contains "X-Spam-Flag" "YES" {
fileinto :create "Junk";
stop;
}
Diese Regel weisst dovecot-sieve an, durch den Spamfilter per Header als Spam gekennzeichnete Emails in den Ordner Junk
zu verschieben, und diesen ggfs zu erzeugen. Die weitere Bearbeitung stoppt danach.
Sieve Filter pro Benutzer
Spannend wird es, wenn ich für meinen Benutzer individuell Regeln erzeugen kann, um der Flut von Emails Herr zu werden. Dazu lege ich eine Datei ~/sieve/default.sieve
an und dazu zusätzlich einen Symlink namens .dovecot.sieve
.2
ln -s ./sieve/default.sieve .dovecot.sieve
In meiner Datei kann ich nun beliebig viele weitere Regeln formulieren:
require ["fileinto", "envelope"];
# Mein Sportverein
if anyof (
# meine Adresse beim Verein
address :is "to" "kassenwart@verein.de",
# ein Verteiler, in dem ich bin
envelope :is "to" "vorstand@verein.de",
# einige Leute, die mir häufig schreiben
address :is "from" [
"mustermann@t-online.de",
"jemand@web.de",
"ein.anderer@gmail.com"
]
) {
fileinto "Verein";
}
# Bank, Finanzen
if envelope :domain "From" ["postbank.de", "vrbank.de"] {
fileinto "Finanzen";
}
# Server
if envelope :domain "From" [
"dienstleister.de",
"hosting.de"
] {
fileinto "Server";
}
Wie erzeuge ich Sieve Regeln?
Es gibt leider wenig interaktive Tools zum Erzeugen und Aktivieren von Sieve Regeln. Der ManageSieve
Dienst kann genutzt werden, um Regeln zu formulieren, ohne Dateien schreiben zu müssen. Es gibt leider nur wenige Emailprogramme oder Frontends mit Support für das ManageSieve Protokoll, darunter
- das Plugin managesieve für Roundcube Webmail
- Group Office CRM & Collaboration mit managesieve Support
- das ManageSieve Add-On für Mozilla Thunderbird
- gsieve für den GNOME Desktop
- kio_sieve für KDE
Wenn diese Werkzeuge nicht funktionieren, ist das direkte Schreiben von sieve-Dateien am Server nicht die schlechteste Wahl. Tipp: Eventuelle Fehler in Skripten erzeugen Ausgaben in einer Datei .dovecot.sieve.log
.
Weitere Informationen, Beispiele & Tipps
Diese Quellen haben mir geholfen:
- Sieve Mailfilter für Dovecot installieren und konfigurieren
- Pigeonhole Sieve examples
- support.tigertech.net/sieve
- p5r.uk/blog/2011/sieve-tutorial
Viel Erfolg beim Email Filtern!
Tatsächlich werden alle Werte im Default verwendet und es ist zunächst fast keine Konfiguration nötig.
Das ist ein Grundkonzept von Sieve: Im Ordner können beliebig viele Sieve Dateien liegen, der Name ist egal. Genau eine davon wird per Symlink unter dem Namen
~/.dovecot.sieve
“aktiviert”.