[[Vorlage(Archiviert)]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Editor: Einen Editor öffnen] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(2)]] [wikipedia:sieve:] ist ein skriptbasierter Mailfilter mit sehr umfangreichen Möglichkeiten. Obwohl mit `websieve` eine graphische Oberfläche installiert werden kann, hat die Vorgehensweise über eine Textdatei und Konsole entscheidende Vorteile. So kann man die Filterregeln auch zu einem späteren Zeitpunkt einfacher ordnen und hat mehr Kontrolle über die Syntax. = Installation = Sieve wird bereits mit [:Archiv/Cyrus_IMAPD:Cyrus IMAPD] installiert. Die erfolgreiche Konfiguration und Inbetriebnahme von Cyrus IMAPD wird an dieser Stelle vorausgesetzt. Ansonsten ist Sieve natürlich auch mit [:Dovecot:] verwendbar - eine Möglichkeit über den pythonbasierten Sieve-Daemon [http://www.woozle.org/~neale/src/pysieved/ pysieved] {en} findet man im Beitrag [http://manurevah.com/blah/en/linux/pysieved-on-workaround.php Pysieved on workaround mail] {en}. = Benutzerdefiniertes Regelwerk = Sieve ist ein leistungsfähiger Mailfilter, der benutzerabhängig ist. Da jeder Nutzer eigene Filterregeln entsprechend seiner Bedürfnisse hat, ist dieses Vorgehen sinnvoll. Deshalb wird hier nur beispielhaft erläutert, welche Filterregeln existieren und wie diese in der Skriptsprache aufgestellt werden. Die Abfragen erfolgen mit `if ... elsif ... else`, so dass eine hierarchische Filterung möglich und sinnvoll ist. Die komplette Syntax und Erläuterungen sind unter den [#Links Links] angegeben. Normalerweise erwartet sieve die Filterregeln im Verzeichnis '''/var/spool/sieve'''. Dieses Verzeichnis erfordert aber andere Rechte, deshalb bietet es sich an, eine versteckte Textdatei '''.sieve-mail-filter''' im Heimatverzeichnis zu erstellen [1], um sie vor versehentlichen Zugriffen zu schützen. {{{#!vorlage Hinweis Gewöhnlich ist man auf einem Server/ virtuellen Server als root eingeloggt. Mit {{{#!vorlage Befehl su - Benutzername \}}} in die shell des Benutzers wechseln. Man landet im Home-Verzeichnis des Benutzers. Nach dem Einrichten von Sieve {{{#!vorlage Befehl exit \}}} eingeben. }}} == Dateiheader == Im Kopf der Textdatei wird sieve mitgeteilt, welche Module benötigt werden. Kommentare werden durch eine Raute (''#'') eingeleitet oder durch Slash und Asterisk (`/* Kommentar */`) eingeschlossen. {{{ # Datum, User require "fileinto"; /* Modul zur Verschiebung der Mails, immer erforderlich */ require "reject"; /* Modul zur Zurückweisung, optional */ require "vacation"; /* Modul für Abwesenheitsbenachrichtigungen, optional */ }}} == Mails in Ordner verschieben == `fileinto` verschiebt Mails in die angegeben Unterordner. Filtern lässt sich nach verschiedenen Schlüsselwörtern. `anyof` stellt dabei eine ODER-Verknüpfung dar, `allof` eine UND-Verknüpfung. {{{ # Mails verschieben if header :contains "from" ["ebay.de", "ebay.com"] { fileinto "INBOX.ebay"; } elsif header :contains "subject" "Ltsp-discuss" { fileinto "INBOX.mailinglisten.ltsp"; } elsif header :contains "subject" "Capisuite-users" { fileinto "INBOX.mailinglisten.capisuite"; } elsif allof (header :contains "from" "zitate.at", header :contains "subject" "Zitat des Tages") { fileinto "INBOX.mailinglisten.zitate"; } else { fileinto "INBOX"; } }}} == Mails zurückweisen == Falls Mails ab einer bestimmten Größe zurückgewiesen werden sollen, verwendet man `reject`: {{{ # mails zurückweisen if size :over 10M { reject;} }}} Um Mails von Spammern zurückzuweisen, empfiehlt sich ein [:Archiv/Amavis-Spam-Virenfilter:Spamfilter] oder das Löschen der Mails mit `discard`: {{{ if header :contains "subject" "viagra" { discard; } }}} Ein tatsächliches Zurückweisen hätte zur Folge, dass der Spammer durch die Rückmeldung die Echtheit der Adresse bestätigt bekommt. Damit `reject` keine Fehlermeldung produziert, muss in der Datei '''/etc/postfix/master.cf''' folgende Zeilen wie folgt geändert werden [1]: {{{ #flags=R user=cyrus argv=/usr/sbin/cyrdeliver -e -m ${extension} ${user} #folgende zeile ersetzt obere zeile, um reject funktion zu ermöglichen flags= user=cyrus argv=/usr/sbin/cyrdeliver -r ${sender} -m ${extension} ${user} }}} == Automatische Abwesenheitsnachrichten == Bei Abwesenheit (z.B. Urlaub), wenn man keine Mails beantworten kann, verschickt sieve automatisch eine Standardantwort. Ein bestimmter Absender erhält nur eine einzige Abwesenheitsbenachrichtigung, auch wenn er mehrere E-Mails schickt. Eine weitere Benachrichtigung erhält er erst wieder nach sieben Tagen. Will man diesen Wert ändern, so dass bis zur nächsten Benachrichtigung z.B. 14 Tage gewartet wird, so benutzt man dafür die Option `:days `, die vor der Option `:addresses` eingefügt wird. Die Abwesenheitsfunktion erfordert im Dateikopf das Modul `vacation`: {{{ # Abwesenheitsnachrichten vacation :days :addresses ["Adresse1", "Adresse2"] "Text"; }}} = Aktivierung von Sieve = Die Datei muss noch entsprechend aktiviert werden. Nach Aufruf von `sieveshell` im Terminal [2] {{{#!vorlage Befehl sieveshell -u BENUTZERNAME localhost }}} wird die Eingabe des IMAP-Kennworts des Nutzers verlangt. Danach kann man die Konfigurationsdatei hochladen: {{{#!vorlage Befehl put .sieve-mail-filter activate .sieve-mail-filter quit }}} Bei fehlerhafter Syntax erhält man eine Fehlermeldung mit einer Zeilenangabe, so dass sich die Fehlersuche einfach gestaltet. `help` listet die verfügbaren Kommandos und Erläuterungen zu sieveshell. {{{#!vorlage Hinweis Sollte die nachfolgende Fehlermeldung auftauchen: {{{ unable to connect to server at /usr/bin/sieveshell line 179, line 1\\ \}}} und damit die Verbindung zur sieveshell scheitern, hilft folgendes: {{{#!vorlage Befehl adduser cyrus mail #(soweit noch nicht beim Einrichten von cyrus erfolgt) chown root:mail -R /var/spool/sieve chmod 770 -R /var/spool/sieve \}}} }}} Für jeden Nutzer muss das entsprechende benutzerspezifische Regelwerk aktiviert werden. = Grafische Helfer zum Konfigurieren der Sieve-Skripte = Zumindest, wenn man pysieved verwendet - welcher als Daemon läuft - hat man den Vorteil, dass man clientseitig konfigurieren kann, ohne [:SSH:]-Zugriff oder dergleichen auf den Server haben zu müssen. Folgende E-Mail-Clients können zum konfigurieren genutzt werden (kein Anspruch auf Vollständigkeit): == Thunderbird == Unter [:Thunderbird:] ist das Sieve-Skript mit dem [http://sieve.mozdev.org/installation.html Sieve Plugin] {en} möglich (alternativ auch auf der [https://addons.mozilla.org/de/thunderbird/addon/2548 Mozilla-Thunderbird-Plugin-Seite] {en}): [[Bild(./sieve-thunderbird.png, 300, center)]] == kMail == Ebenso kann es mit kMail verwendet werden: [[Bild(./sieve-kmail.png, 300, center)]] == Squirrelmail (Webmailer) == Wenn man als Webmailer [:Archiv/Squirrelmail:] verwendet, gibt es auch ein sehr gutes Plugin namens [http://email.uoa.gr/avelsieve/ AvelSieve] {en}, bei dem man wahlweise textbasiert, umgangssprachlich oder grafisch seine Sieve-Filter konfigurieren kann: [[Bild(./sieve-squirrelmail.png, 300, center)]] [[Anker(Links)]] = Links = * [http://sieve.info offizielle Website] {en} * [http://www.heise.de/open/artikel/74991/from/netze c't-Special Linux Mailserver mit Spamfilter] {de} * [http://www.ietf.org/rfc/rfc3028.txt RFC 3028 Sieve: A Mail Filtering Language] {en} * [http://www.uni-koeln.de/rrzk/mail/software/sieve/sieve.html kommentierte Beispiele] {de} # tag: Internet, Netzwerk, Server