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.
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.
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.
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
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.
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; }
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."; }
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. "; }
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" ] { ... }
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; }
Für das Thunderbind-Addon oder andere Managesieve Software benötigt man i.d.R. einige Daten für die Einstellungen:
mail.ruhr-uni-bochum.de
(IMAP-Servername)4190
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.