Managesieve

Aus Hostsharing Wiki
Version vom 9. Juli 2012, 13:36 Uhr von Hsh00-peh (Diskussion | Beiträge) (Typo)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Managesieve

Managesieve [1] ist ein Dienst-Programm zum Einrichten und Verwalten von Mailfiltern, die in der Filtersprache sieve geschrieben sind. Sieve ist als Dovecot-Plugin [2] verfügbar.

Für Nutzer, die nur einfache Filterregeln benötigen, wird empfohlen diese Filter über das grafische Oberfläsche im Webmailer Roundcube anzulegen und zu verwalten. Die Vorgehensweise ist ausführlich unter Roundcube - Filter beschrieben.

Diese Seite gibt einige technische Informationen und Einführung für Nutzer, die eigene Skripte in sieve schreiben wollen.

Filtermöglichkeiten

Sieve erlaubt Filter zu schreiben u.a. für folgende Filteraktionen:

  • Verschieben/Kopieren einer Nachricht in einen Ordner
  • Erstellen von Abwesenheitsmeldungen
  • Markieren von Nachrichten (z.B. Gelesen, Weitergeleitet)
  • Weiterleiten/Kopie senden an andere Email-Adressen
  • Ablehnen von Nachrichten

Eine ausführliche Beschreibung der Filteraktivitäten ist zu finden auf der Dovecot-Seite [3]

Hierbei sind keine Aufrufe von externen Programmen möglich. Dadurch können keine unerwünschten Seiteneffekte entstehen. Dies grenzt sieve beispielsweise von procmail ab.

Die Filterregeln lassen Checks zu z.B. von

  • Test auf bestimmte Absender
  • Vorhandensein von bestimmten Texten im Betreff oder dem Text der Nachricht
  • Bestimmte Werte für andere Header der Nachricht, z.B. zur Identifizierung von Mailinglisten über List-Id.

Dabei können teilweise reguläre Ausdrücke benutzt werden oder Aggregatsfunktionen wie "Anzahl der Empfänger".

Einrichtung

Für die Einrichtung von deliver als Mailzustellungsprogramm ist keine weitere Konfiguration notwendig. Dies geschieht automatisch.

Hat ein Nutzer bisher procmail benutzt, kann die .forward gelöscht werden oder durch eine neue .forward ersetzt werden mit folgendem Inhalt:

xyz00@h01:~$ cat .forward
"| /usr/lib/dovecot/deliver "

Sieve-Filter

Ein einfaches Sieve-Skript sieht wie folgt aus:

require "fileinto";
if header :contains "X-Spam-Flag" "YES" {
  fileinto "Spam";
}

Dieses Skript prüft ob in der Nachricht der Header "X-Spam-Flag" existiert und den Wert "YES" enthält. In diesem Fall wird die Nachricht in den Ordner "Spam" abgespeichert.

Mehrere Filter werden hintereinander in eine Filterdatei gehängt. Die Filter können durch if-then-else-Konstrukte verbunden werden.

Weiter Beispiele sind zu finden z.B. unter [4] oder [5]

Speicherort

Die Sieve-Filter sollte im HOME-Verzeichnis des Users in der Datei ~/.dovecot.sieve abgespeichert werden.

Bei der Benutzung von Managesieve werden Filterdateien im Verzeichnis ~/Maildir/sieve/ gespeichert und per Symlink die aktive Filterdatei verlinkt.

xyz00@h01:~$ ls -al 
drwxr-xr-x  5 xyz00-max xyz00  4096 Nov 16 07:28 .
drwxr-xr-x 28 xyz00-max xyz00  4096 Oct 22 23:06 ..
lrwxrwxrwx  1 xyz00-max xyz00    29 Nov 16 07:28 .dovecot.sieve -> Maildir/sieve/einfilter.sieve

Andere Filterdateien können im Flterverzeichnis gespeichert sein, aber nur die Datei, die wie oben gezeigt verlinkt ist, ist die aktive Filterdatei.

xyz00@h01:~$ ls -al Maildir/sieve
drwxr-xr-x  5 xyz00-max xyz00  4096 Nov 16 07:28 .
drwxr-xr-x 28 xyz00-max xyz00  4096 Oct 22 23:06 ..
-rw-------  1 xyz00-max xyz00   210 Nov 16 07:28 einfilter.sieve
-rw-------  1 xyz00-max xyz00   321 Nov 16 07:28 nocheinfilter.sieve
-rw-------  1 xyz00-max xyz00    99 Nov 16 07:28 weitererfilter.sieve

Managesieve

Managesieve ist ein Dienst, der es erlaubt Filterdateien aus der Ferne über ein definiertes Protokoll zu verändern sowei zu aktivieren/deaktivieren.

Der Dienst läuft jeweils auf dem Server auf dem der User seinen Account hat, also z.B. xyz00.hostsharing.net.

Folgende Einstellungen sind hierfür notwendig/empfohlen:

Beschreibung Inhalt
Servername xyz00.hostsharing.net (entsprechend dem Usernamen anpassen)
Port 4190
Authentifizierung POP3/IMAP-Username/Passwort (z.B. xyz00-max)
Sicherheit TLS

Beispielsweise kann hierfür das Thunderbird-Plugin Sieve benutzt werden.

Zusammenarbeit mit Procmail

Es ist möglich Procmail und Sieve (über deliver nacheinander zu benutzen. Dies kann z.B. interessant sein, wenn der Paketinhaber zentral für alle User über procmail Spamfilter mit spamassassin benutzen möchte und seine Nutzer dann anschließend über die grafische Óberfläche eigene (einfache) Filterregeln konfigurieren können.

Hierzu muß die .forward zunächst mit einem Aufruf für procmail zu füllen:

xyz00@h01:~$ cat .forward
"|/usr/bin/procmail"

Als letzte Regel in der .procmailrc wird dann deliver aufgerufen, welches automatisch die aktiven Sieve-Regeln ausführt:

# Letzte Procmail-Regel: Deliver aufrufen
:0 w
| /usr/lib/dovecot/deliver

Soll procmail später nicht mehr benutzt werden, kann die .forward einfach gelöscht werden, oder deliver dort explizit angegeben werden:

xyz00@h01:~$ cat .forward
"| /usr/lib/dovecot/deliver "

Links

  • Die Sieve-Filtersprache ist definiert in RFC5228
  • In RFC5230 ist die Vacation Extension von der Sieve-Sprache genau beschrieben.
  • Weitere Sieve-relevante RFC's: RFC5229 Variables Extension; RFC5173 Body Extension; RFC5429 Reject and Extended Reject Extensions; RFC5231 Relational Extension; RFC5233 Subaddress Extension; RFC5235 Spamtest and Virustest Extensions; RFC3894 Copying Without Side Effects