Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:mail:dovecot_sieve

Dies ist eine alte Version des Dokuments!


SPAM-Filter Sieve

Sieve, auch genannt Sieve-Skript ist eine Skriptsprache, mit der Filtereinstellungen für E-Mails konfiguriert werden können.

Mithilfe der gleichnamigen open-source Erweiterung könnten Filterregeln auf Webmail Oberflächen, nachfolgend als Web-GUI bezeichnet, wie z.B. Roundcube, erstellt und konfiguriert werden. Die Erweiterung wird zuerst auf dem Server installiert. Nachfolgend können mit z.B. der Sieve-Erweiterung für Thunderbird Filterregeln auf dem Server bearbeitet werden.

Sieve erweitert also die Funktion der GUI, Filterregeln zu erstellen. So können die Regeln nicht nur auf dem Server mithilfe der GUI, sondern auch mit der Skriptsprache erstellt werde. Insofern kann eine Sieve-Skript-Datei auch als Konfigurationsdatei interpretiert werden, die alle Filtereinstellungen beinhaltet.

Sieve ist seit 2008 ein offizieller Standard der IETF.

Sieve ist kompatibel mit der Filtersoftware SpamAssassin. Der SpamAssassin wird dem Mail-Server vorgeschaltet und kann z.B. SPAM-Scores oder Spam-Flags in den E-Mail-Header schreiben. Sieve kann nachfolgend anhand dieser Header-Felder postfachspezifische Operationen durchführen.

Zudem existieren Erweiterungen, wie z.B. eine Virenskanner-Erweiterung, die E-Mails nach Viren untersuchen kann. Diese Erweiterungen unterstützen zum Teil ähnliche Funktionalitäten wie der erwähnte SpamAssassin.

Installation auf dem Server

Installation lokal im Thunderbird

Das Plugin Sieve ist als Erweiterung für Mozilla Thunderbird verfügbar.

Nach der Installation wird automatisch geprüft, welche der eingebundenen Postfächer mit Sieve unterstützt werden können. Diese Postfächer werden automatisch erkannt und die Verbindung zum spezifischen Mailserver aufgebaut. Die Unterstützng auf der Serverseite kann z.B. durch die Installation der Sieve-Erweiterung in der Web-GUI erfolgen.

Anschließend kann Im Menü unter „Extras“ → „Sieve Filter Einstellungen…“ nachgesehen werden, welche Postfächer als „von Sieve unterstützt“ erkannt werden.

Installation als Roundcube-plugin "Managesieve"

Roundcube bringt das Plugin zur Anbindung an Sieve bereits mit, es muss allerdings eingebunden und konfiguriert werden:

Einbinden des Plugins

In der Datei config/main.inc.php der Roundcube Installation muss dem Plugin rcmail_config['Plugins'] noch der Parameter managesieve hinzugefügt werden.

Konfiguration des Plugins

Da Sieve den IMAP-Server zur Kommunikation benutzt müssen die gleichen Authentifizierungsmethoden genutzt werden wie für roundcube selbst. Die Konfigurationsdatei des Plugins befindet sich im Verzeichnis plugins/managesieve.

  1. Die Datei config.inc.php.dist nach config.inc.php kopieren
  2. Die rcmail_config parameter folgendermaßen modifizieren (für Standardinstallation)
    1. managesieve_port = 4190 (falls nicht geändert)
    2. managesieve_host = domainname des mailserver. (Achtung: Hier werden keine IP-Adressen akzeptiert)
    3. managesieve_auth_type = (wie in roundcube config)
    4. managesieve_ustls = true (wenn TLS verwendet wird)

Danach sollte Sieve mit einer Standardinstallation funktionieren.

Filter-Konfiguration mit dem SieveSkript

Mit „Extras“ → „Sieve Filter…“ gelangt man zur GUI der Sieve-Erweiterung im Thunderbird. Dort wird ein Dropdown-Menü angeboten, mit dem der spezifische Mailserver ausgewählt werden kann. Ist die Verbindung erfolgreich, wird hier eine Liste der vorhandenen „Filtersätze“ angezeigt. Mit den Filtersätze werden einzelne Filterregeln gruppiert.

NB! Der Name des mit Sieve synchronisierten Filtersatzes kann muss „managesieve“ lauten. Andernfalls können Serverfehler auftreten.
Um einen Filtersatzes löschen zu können, muss dieser zuvor deaktiviert worden sein.

Ein Doppelklick auf einen Filtersatz öffnet den Inhalt der Konfiguration, die mehrere einelne Filter beschreiben kann.

Dise GUI im Thunderbird bietet nun zwei Ansichten an. In der „Source“-Ansicht in der Menübar gelangt man zum Code der Konfiguration. Ein erneuter Klick auf „Source“ aktiviert die GUI, die es erlaubt, Filterregeln nach dem Baukastenprinzip zu erstellen.

NB! Diese Baukasten-Ansicht ist fehlerhaft und kann den Code nicht immer als graphische Baukasten-Ansicht darstellen—auch wenn der Code syntaktisch korrekt ist! Insofern empfiehlt sich die Editierung in der Code-Ansicht. In der WebGUI wird z.B. ein Feld einer Filterregeln nicht angezeigt, wenn für das Feld mehr als ein Schlüsselwort/Keyword definiert wurde!

Syntax

Die Syntax erlaubt keine komplexen Strukturen wie Schleifen oder Variablendefinitionen und basiert starkt auf boolsche Wahrheitsprüfungen.

Um die Syntax zu erlenen, ist es von Vorteil, die empfohlenen Tutorials in der aufgelisteten Reihenfolge zu studieren.

Code-Synchronisation und debugging

Der Code aus der Thunderbird-Erweiterung wird nach dem speichern sofort auf den Server hochgeladen. Andersherum wird nach dem speichern eine Filterregel in der Webmail-GUI der Code in der Erweiterung aktualisiert, wenn der Filtersatz aus der Liste neu geöffnet wird. Leider werden nicht alle über Sieve erstellten Filter richtig in der Webmail-GUI angezeigt. Solche Filter sollten über die Webmail-GUI nicht gespeichert werden, da sonst der Code fehlerhaft wird und auch im Thunderbird Sieve fehlerhaft angezeigt werden. Solange die Filter, die in der Webmail-GUI nicht vollständig und richtig angezeigt werden, über die Webmail-GUI nicht geändert/gespeichert werden, funktionieren die Filter (und können wie gehabt über Sieve angezeigt werden).

Insofern kann die Fehlersuche effizient erfolgen, in dem man, die graphische Oberfläche der Web-GUI auf dem Mailserver zum Erstellen einer Regel zu nutzt. Der anschließende Vergleich mit dem eigenen Code kann bei Fehlerbehebung helfen.

Abwesenheitsnotiz

Auch das Einrichten einer Abwesenheitsnotiz ist möglich. Ein kurzes Tutorial dazu unter http://www.synology-wiki.de/index.php/Abwesenheitsmeldungen_mit_dovecot-sieve

Beispielskript

Im Folgenden wird ein Beispielskript dargestellt, dass als Konfiguration für Filterregeln gegen SPAM genutzt werden kann. Untersucht wird der Absender und er Inhalt der E-Mail.

In der zweiten Regel wird auch eine Schwachstelle von Sieve deutlich: Die fehlende Unterstützung von Variablendefinitionen kann zu Redundanzen führen.

Der Befehl „fileinto“ kann auch durch den discard-Befehl ersetzt werden. Der discard-Befehl ist konfigurierbar und kann z.B. der Operation fileinto nachfolgend zugewiesen werden. Einige Hinweise dazu gibt es hier: http://pigeonhole.dovecot.org/doc/man1/sieve-filter.1.html

NB! Das Einbetten von Schlüsselwörtern zwischen „*“ nach dem „contains“ Befehl ist unnötig, da dieser Befehl schon die Wildcard-Funktion beinhaltet.
# @DESCRIPTION This a script for the mail filter SIEVE. Further information: http://sieve.info/
# 	These rules follow negative e-mail filtering: All e-mails are accepted and are received and are put into the inbox folder. 
# 	However, if one rule meets to an incoming e-mail, it is handled as defined in the specfic rule.
# 	The rules are applied sequentially: If the first resp. previous "if" clause did not hold, the next one is looked at; and vice versa.
# @PRECONDITION: A folder named "your_junk-mail-folder" must exist as a subfolder of the mailbox.
 
 
# Loading in the neccesary modules
require ["fileinto","body"];
 
# rule:[Sender and recipient address equal]
if address :is ["From","To"] "your_e-mail_address"
{
	fileinto "your_junk-mail-folder";
	stop;
}
 
# rule:[Keywords blacklist in subject and message]
if anyof (header :contains "Subject" ["keyword1","keyword2"], body :text :contains ["keyword1","keyword2"])
{
	fileinto "your_junk-mail-folder";
	stop;
}

Weitere Ideen für effektive Filter und Beispiele

Ideen für SPAM-Charakteristiken

  • Charakteristiken im Header
    • Das Datum der E-Mail liegt in der Zukunft
    • Der Return-Path im Header enthält „spam@…“

Weiterführende Links

Bei Verwendung dieses Wikis erklären Sie sich mit dem Haftungsausschluss, Nutzungsbedingungen und der Datenschutzerklärung dieses Wikis einverstanden. Impressum.

software/mail/dovecot_sieve.1367671384.txt.gz · Zuletzt geändert: 2013/05/04 14:43 von mrenner