====== 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 [[http://www.ietf.org/rfc/rfc3028.txt|RFC3028]] spezifiziert. ===== Sieve Clieten ===== Laut [[http://wiki.ubuntuusers.de/Archiv/sieve|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 [[http://google.de|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 ; redirect "info@4nuts.de"; === reject === Leht E-Mails ab. Require notwendig (siehe Module). Syntax: reject 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 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 [[http://www.ietf.org/rfc/rfc3028.txt|RFC3028]] verwiesen werden. === setflag === Setzt ein IMAP-Flag an eine E-Mail. Dafür wird das Modul "imapflags" benötigt. Syntax: setflag ; 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: 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 ===== 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; }