Sieve

Aus Foxwiki
Subpages:

Sieve - Sprache zur Konfiguration von Mailfiltern auf Mailservern durch Benutzer

Beschreibung

Anhang

Siehe auch

Dokumentation

Links

Projekt
Weblinks

TMP

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 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 pysieved 🇬🇧 findet man im Beitrag Pysieved on workaround mail.

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 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.

Hinweis:

Gewöhnlich ist man auf einem Server/ virtuellen Server als root eingeloggt.

In die shell des Benutzers wechseln.

su - Benutzername

Nach dem Einrichten von Sieve

exit

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 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}

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 <Anzahl Tage>, die vor der Option :addresses eingefügt wird.

Die Abwesenheitsfunktion erfordert im Dateikopf das Modul vacation:

# Abwesenheitsnachrichten
vacation :days <Anzahl Tage> :addresses ["Adresse1", "Adresse2"] "Text";

Aktivierung von Sieve

Die Datei muss noch entsprechend aktiviert werden.

  • Nach Aufruf von sieveshell im Terminal [2]
sieveshell -u BENUTZERNAME localhost

wird die Eingabe des IMAP-Kennworts des Nutzers verlangt.

  • Danach kann man die Konfigurationsdatei hochladen:
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.
Hinweis

Sollte die nachfolgende Fehlermeldung auftauchen:

unable to connect to server at /usr/bin/sieveshell line 179, <STDIN> line 1\\

und damit die Verbindung zur sieveshell scheitern, hilft folgendes:

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 Sieve Plugin möglich (alternativ auch auf der Mozilla-Thunderbird-Plugin-Seite).

kMail

Ebenso kann es mit kMail verwendet werden

Squirrelmail (Webmailer)

Wenn man als Webmailer Archiv/Squirrelmail verwendet, gibt es auch ein sehr gutes Plugin namens AvelSieve, bei dem man wahlweise textbasiert, umgangssprachlich oder grafisch seine Sieve-Filter konfigurieren kann.

Roundcube

Thunderbird Sieve

Mozilla Thunderbird benötigt den installierten Sieve-Dienst, um dieses Add-on auszuführen.

Sieve-Daemon installieren

apt install dovecot-managesieved

Aktivieren Sie ManageSieved auf Port 4190/tcp

/etc/dovecot/dovecot.conf
protocols = imap pop3 sieve
Service Dovecot Neustart

Konfiguration prüfen

# netstat -putan | Griff 4190
tcp    0   0 0.0.0.0:4190      0.0.0.0:*        LISTEN   5464/dovecot
tcp6    0   0 :::4190         :::*          LISTEN   5464/dovecot

Siebregeln befinden sich in

/var/vmail/domain.xx/username

Die aktive Sieb-Regel ist normalerweise ein symbolischer Link zu ispconfig.sieve

.sieve -> sieve/ispconfig.sieve

Firewall öffnen

# ufw erlaubt 4190/tcp

Installieren Sie das Thunderbird Sieve-Add-On

Datei:Bild1.png

Siebfilter für IMAP-Konto aktivieren

Datei:Bild2.png

Datei:Bild3.png

Siehe auch