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.
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.
Servername | mail.fem.tu-ilmenau.de |
---|---|
Port | 2000 |
Authentifizierung | IMAP Benutzername & Passwort |
Verschlüsselung | TLS erzwingen |
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
Eine E-Mail wird in jedem Fall behalten (wichtig bei „redirect“).
Löscht die E-Mail, ohne das sie vom Empfänger wahr genommen werden kann (Vorsicht!).
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";
Leht E-Mails ab. Require notwendig (siehe Module).
Syntax:
reject <reason: string> reject "I'm sorry! I only accept files under 500K";
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.
Mit „vacation“ können Urlaubsbenachrichtigungen eingerichtet werden. An dieser Stelle soll mangels Erfahrung auf die RFC3028 verwiesen werden.
Setzt ein IMAP-Flag an eine E-Mail. Dafür wird das Modul „imapflags“ benötigt.
Syntax:
setflag <flag>; setflag "\\Seen";
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)
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"
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; }