Sieve Mailfilter
Wer E-Mails nicht mehr lokal vom Client filtern lassen möchte, kann die Filter auf dem Mailserver abelegen und somit global filtern lassen, ohne die Filter der E-Mail-Clienten ständig synchronisieren lassen zu müssen. Dazu hat der FeM-Mailserver die Schnittstelle „Sieve“ über welche auf dem Mailserver vom Nutzer angelegte Filterregeln abgelegt werden können. Sieve ist in der RFC3028 spezifiziert.
Sieve Clieten
Laut Ubuntuusers ünterstützen die folgenden Clienten Sieve. Falls ihr einen anderen Clienten einsetzt und Sieve-Filter auf den Mailserver ablegen möchtet schaut ihr am besten hier nach.
- Thunderbird („Sieve“ Add-on)
- kMail
- Squirrelmail(Webmailer)
Server-Client-Einstellungen
Servername | mail.fem.tu-ilmenau.de |
---|---|
Port | 2000 |
Authentifizierung | IMAP Benutzername & Passwort |
Verschlüsselung | TLS erzwingen |
Sieve Syntax
Mit Sieve können alle Filtereinstellungen nachgebaut werden, welche vorher mittels GUI in diversen Webmailanwendungen oder Mailclienten angelegt wurden.
Es gibt die Aktions-Wörter
keep
Eine E-Mail wird in jedem Fall behalten (wichtig bei „redirect“).
discard
Löscht die E-Mail, ohne das sie vom Empfänger wahr genommen werden kann (Vorsicht!).
redirect
Leitet E-Mails weiter/um. Soll die Mail auch im eigenen Postfach gespeichert werden, muss nach der redirect-Anweisung ein „keep“ stehen
Syntax:
redirect <address: string>; redirect "info@4nuts.de";
reject
Leht E-Mails ab. Require notwendig (siehe Module).
Syntax:
reject <reason: string> reject "I'm sorry! I only accept files under 500K";
fileinto
Ist die wohl wichtigste Filtereigenschaft. Hiermit wird die E-Mail in den darüber angegbeen Ordner verschoben.
Syntax:
fileinto <folder: string> fileinto "INBOX/FeM/Admin";
Der „folder: string“ baut sich jedoch von Mailserver zu Mailserver unterschiedlich auf. Beim FeM-Mailserver ist der Trenner im Gegensatz zu vielen andern Mailservern ein „/“. Der Posteingang heißt immer „IMBOX“. Bei der Ordnerstruktur ist auf Groß- und Kleinschreibung zu achten. Existieren Ordner nicht, werden diese von Sieve auch nicht angelegt. Die E-Mails werden dann im Posteingang abgelegt.
vacation
Mit „vacation“ können Urlaubsbenachrichtigungen eingerichtet werden. An dieser Stelle soll mangels Erfahrung auf die RFC3028 verwiesen werden.
setflag
Setzt ein IMAP-Flag an eine E-Mail. Dafür wird das Modul „imapflags“ benötigt.
Syntax:
setflag <flag>; setflag "\\Seen";
Module
Im Sieve-Script können verschiedene Module geladen werden. Die interessantesten sind:
require "fileinto"; # zum Verschieben von Mails in Ordner der Ordnerstruktur require "reject"; # zum Ablehnen von Mails require "imapflags"; # um die Mail beispielsweise mit "gelesen" zu markieren require "regex"; # für regular expressions (folgend nicht drauf eingangen)
Verknüpfungen
Um E-Mails besser filtern zu können, sollten sie nach mehreren Filter-Kriterien ausgewählt werden. Dabei kann verschieden kombiniert werden:
Sieve Verknüpfungen
if header :contains "To" "nuts@fem.tu-ilmenau.de" # matched auf alle E-Mails, die "An" nuts@fem.tu-ilmenau.de gerichtet sind if header:contains["To","Cc"]["nuts@fem.tu-ilmenau.de","nuts@4nuts.de"] # machted auf alle E-Mails die "An" nuts@fem.tu-ilmenau.de oder nuts@4nuts.de, oder wo einer von beiden im "CC" steht. if allof ( header:contains "List-Id" "technik.fem.tu-ilmenau.de", header:contains "From" "nagios@c220.fem.tu-ilmenau.de" ) # Alle Bediungen in den () müssen erfüllt sein. if anyof ( header:contains "From" "blaa@sextreff", header:contains "Subject" ["Bonus","Viagra"], header:contains "X-Spam-Flag" "Yes" ) # Nur eine Bedinung in den () muss erfüllt sein if allof ( header :contains "List-Id" "admin.fem.tu-ilmenau.de", not header :contains "Subject" "Block D" ) # Die List-Id muss admin.fem.tu-ilmenau.de enthalten und der Betreff **nicht** "Block D"
Beisiel
Sieve Beispiel
require "fileinto"; require "imapflags"; require "reject"; if allof ( header :contains "List-Id" "fem.tu-ilmenau.de", size :over 500K ) { reject "I'm sorry! I only accept files on mainlinglists under 500K"; stop; } # Admin elsif allof ( header :contains "List-Id" "admin.fem.tu-ilmenau.de", not header :contains "Subject" "Block D" ) { fileinto "INBOX/FeM/Admin"; stop; } elsif allof ( header :contains "List-Id" "admin.fem.tu-ilmenau.de", header :contains "Subject" "Block D" ) { fileinto "INBOX/FeM/Admin/Block D"; stop; } elsif header :contains "From" "chefadmin@fem.tu-ilmenau.de" { fileinto "INBOX/FeM/Admin/dhcp"; stop; } # Aktive elsif allof ( header :contains "List-Id" "aktive.fem.tu-ilmenau.de", header :contains "From" "bilder@q240.fem.tu-ilmenau.de" ) { setflag "\\Seen"; fileinto "INBOX/Trash"; stop; } elsif allof ( header :contains "List-Id" "aktive.fem.tu-ilmenau.de", header :contains "Subject" "[Ausleihe]" ) { setflag "\\Seen"; fileinto "INBOX/FeM/Technik/Ausleihe"; stop; } elsif header :contains "List-Id" "aktive.fem.tu-ilmenau.de" { fileinto "INBOX/FeM/aktive"; stop; } # AVT elsif allof ( header :contains "List-Id" "virus.fem.tu-ilmenau.de", header :contains "Subject" "Verbindungsanomalien", header :contains "From" "flow-campus" ) { fileinto "INBOX/FeM/avt/VA-DOS"; stop; } elsif allof ( header :contains "List-Id" "virus.fem.tu-ilmenau.de", header :contains "Subject" "DFN-CERT" ) { fileinto "INBOX/FeM/avt/DFN"; stop; } elsif allof ( header :contains "List-Id" "virus.fem.tu-ilmenau.de", header :contains "Subject" "Supportticket #" ) { fileinto "INBOX/FeM/avt/VTS"; stop; } elsif header :contains "List-Id" "virus.fem.tu-ilmenau.de" { fileinto "INBOX/FeM/avt"; stop; } # Technik elsif allof ( header :contains "List-Id" "technik.fem.tu-ilmenau.de", header :contains "Subject" "JIRA" ) { fileinto "INBOX/FeM/Technik/Jira"; stop; } elsif header :contains "List-Id" "technik.fem.tu-ilmenau.de" { fileinto "INBOX/FeM/Technik"; stop; }