SIEVE Filter

SIEVE ist eine Programmiersprache, die im Bereich Mail-Filterung zum Einsatz kommt. Mit Hilfe von Sieve kann man sehr detailliert ankommende E-Mails filtern und wegsortieren. Die Mailbox-Einstellungen, die man via loginID Verwaltung (RUBiKS) verändern kann, werden intern auch auf Sieve-Filterregeln abgebildet. Das heißt SIEVE-Filterregeln sind in irgendeiner Form immer im Einsatz.

Filter ändern

Um SIEVE-Filterregeln zu erstellen oder zu verändern, benötigt man ein Klienten-Programm, das mittels des „MANAGESIEVE“-Protokolls die aktuellen Einstellungen vom Mail-Server liest und Änderungen zurückschreibt.

  • Im RUB Webmail ist eine grafische Oberfläche (GUI) unter „Einstellungen“ → „Filter“ zu finden.
  • Für Mozilla Thunderbird gibt es ein Addon, welches wahlweise eine (GUI) oder die Möglichkeit der Quelltexteingabe liefert. Dies ist einfach über den AddOn-Manager zu finden (Suchwort „Sieve“).

Es ist empfehlenswert, sich einen eigenen Filtersatz unter einem neuen Namen anzulegen und nicht den Filtersatz rubiks zu verändern. Dieser wird bei Änderungen über die loginID Verwaltung (RUBiKS) überschrieben. Aktiviert man einen anderen Filtersatz, wird der Filtersatz rubiks zwar überschrieben aber nicht aktiviert.

SIEVE Beispiele

Im folgenden sind einige Beispiele zu SIEVE dargestellt, die demonstrieren, wie auf dem Mail-Server Standard-Funktionalitäten über die SIEVE-Befehle angesteuert werden.

Damit die Filter funktionieren, muss am Anfang festgelegt werden, welche Erweiterungen (SIEVE-Extensions) dieser Filter verwendet. Die Zeile

require [ "fileinto", "envelope", "subaddress", "mailbox", "vacation", "variables" ];

sollte für die meisten Beispiele ausreichend sein.

Die typische Struktur einer SIEVE-Anweisung hat die Form

if .......    {
       ACTION;
       ACTION;
       .....
}

Typische Aktionen sind

  • „fileinto“ - Mail in einen Ordner kopieren
  • „redirect“ - Mail an ein andere Adresse umlenken
  • „discard“ - Mail nicht im Standardempfangsordner speichern

Die Aktion „stop“ beendet die Interpretation der aktuellen Sieve-Befehle. Die aktuelle Mail wird aber noch in den Standard-Ordner geschrieben, es sei denn, man hat vor „discard“ gesagt.

Spam aussortieren

Diese Regel sortiert Mails, die unsere Spam-Markierung enthalten in den Spam-Ordner (Dieser Ordner hat intern den Namen UCE-TMP.):

if header :contains "X-RUB-Notes" "Spam" {
    fileinto "UCE-TMP";
    stop;
}

einfache Urlaubsbenachrichtigung

Automatische Antworten sollten nicht an jede Mail gehen, die eintrifft. Die X-RUB-Notes Kopfzeile entält eine entsprechende Markierung, wenn man nicht automatisch antworten sollte. Details zur X-RUB-Notes-Kopfzeile finden sich hier.

if not header :contains "X-RUB-Notes" ["Spam","Noautoreply"] {
    vacation :subject "Auto: This is a recording..."
             :addresses [
                            "vorname.nachname@ruhr-uni-bochum.de",
                            "vorname.nachname@rub.de",
                            "weiterer.alias@ruhr-uni-bochum.de",
                            "weiterer.alias@rub.de"
                         ] 
             "I will not be reading my mail until May, 3rd.";
    }

schönere Urlaubsbenachrichtigung

Hier eine Variante, die die Betreff-Zeile erweitert statt eine neue zu schreiben und die es auch ermöglicht, den Betreff im Mailtext zu verwenden:

if not header :contains "X-RUB-Notes" ["Spam","Noautoreply"] {
    set "SUBJECT" "(no subject)";
    if header :matches "Subject" "*" {
        set "SUBJECT" "${1}";
    }
    vacation :subject "Auto: This is a recording... [Re: ${SUBJECT}]"
             :addresses [
                            "vorname.nachname@ruhr-uni-bochum.de",
                            "vorname.nachname@rub.de",
                            "weiterer.alias@ruhr-uni-bochum.de",
                            "weiterer.alias@rub.de"
                         ] "
I will not be reading my mail until May, 3rd. Your
mail regarding
        \"${subject}\"
will be read when I return.
";
    }

Selektive Urlaubsbenachrichtigung

Wenn man Urlaubsbenachrichtingungen nur für interne Adressen versenden möchte, kann man den oben genannten Code mit dem folgenden if-Konstrukt klammern:

if address :domain :is "from" [ "ruhr-uni-bochum.de", "rub.de" ] {
    ...
} 

Mail an Subadresse wegsortieren

Mails an vorname.nachname+postmaster@… werden in den Ordner „Postmaster“ abgelegt.

if envelope :detail :is "to" "postmaster" {
    fileinto "Postmaster";
    stop;
}

Alternativ in einen Unterordner des Posteingangs:

if envelope :detail :is "to" "postmaster" {
    fileinto "INBOX/Postmaster";
    stop;
}

Managesieve Einstellungen

Für das Thunderbind-Addon oder andere Managesieve Software benötigt man i.d.R. einige Daten für die Einstellungen:

  • Servername: mail.ruhr-uni-bochum.de (IMAP-Servername)
  • Serverport: 4190
  • Verbindungsicherheit: TLS erzwingen
  • Authentifizierung: IMAP Nutzername (loginID) und Passwort

Nerd-Informationen zu SIEVE

Die Programmiersprache SIEVE ist in einem RFC (request for comment) definiert: RCF5228 Auf der Web-Seite http://sieve.info findet man weitere Informationen über die Programmiersprache SIEVE.