Managesieve: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
KKeine Bearbeitungszusammenfassung
 
(3 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 16: Zeile 16:
* Ablehnen von Nachrichten
* Ablehnen von Nachrichten


Eine ausführliche Beschreibun der Filteraktivitäten ist zu finden auf der Dovecot-Seite [http://wiki.dovecot.org/LDA/Sieve#Features]
Eine ausführliche Beschreibung der Filteraktivitäten ist zu finden auf der Dovecot-Seite [http://wiki.dovecot.org/LDA/Sieve#Features]


Hierbei sind '''keine''' Aufrufe von '''externen Programmen''' möglich. Dadurch können keine unerwünschten Seiteneffekte entstehen. Dies grenzt <tt>sieve</tt> beispielsweise von <tt>[[procmail]]</tt> ab.
Hierbei sind '''keine''' Aufrufe von '''externen Programmen''' möglich. Dadurch können keine unerwünschten Seiteneffekte entstehen. Dies grenzt <tt>sieve</tt> beispielsweise von <tt>[[procmail]]</tt> ab.
Zeile 32: Zeile 32:
Hat ein Nutzer bisher procmail benutzt, kann die <tt>.forward</tt> gelöscht werden oder durch eine neue <tt>.forward</tt> ersetzt werden mit folgendem Inhalt:
Hat ein Nutzer bisher procmail benutzt, kann die <tt>.forward</tt> gelöscht werden oder durch eine neue <tt>.forward</tt> ersetzt werden mit folgendem Inhalt:


xyz00@h01:~$ cat .forward
<syntaxhighlight lang="bash">
"| /usr/lib/dovecot/deliver "
xyz00@h01:~$ cat .forward
"| /usr/lib/dovecot/deliver "
</syntaxhighlight>


=== Sieve-Filter ===
=== Sieve-Filter ===
Zeile 39: Zeile 41:
Ein einfaches Sieve-Skript sieht wie folgt aus:
Ein einfaches Sieve-Skript sieht wie folgt aus:


require "fileinto";
<syntaxhighlight lang="sieve">
if header :contains "X-Spam-Flag" "YES" {
require "fileinto";
  fileinto "Spam";
if header :contains "X-Spam-Flag" "YES" {
}
  fileinto "Spam";
}
</syntaxhighlight>


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.
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.
Zeile 56: Zeile 60:
Bei der Benutzung von Managesieve werden Filterdateien im Verzeichnis '''<tt>~/Maildir/sieve/</tt>''' gespeichert und per Symlink die aktive Filterdatei verlinkt.
Bei der Benutzung von Managesieve werden Filterdateien im Verzeichnis '''<tt>~/Maildir/sieve/</tt>''' gespeichert und per Symlink die aktive Filterdatei verlinkt.


xyz00@h01:~$ ls -al  
<syntaxhighlight lang="bash" line>
drwxr-xr-x  5 xyz00-max xyz00  4096 Nov 16 07:28 .
xyz00@h01:~$ ls -al  
drwxr-xr-x 28 xyz00-max xyz00  4096 Oct 22 23:06 ..
drwxr-xr-x  5 xyz00-max xyz00  4096 Nov 16 07:28 .
lrwxrwxrwx  1 xyz00-max xyz00    29 Nov 16 07:28 .dovecot.sieve -> Maildir/sieve/einfilter.sieve
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
</syntaxhighlight>


Andere Filterdateien können im Flterverzeichnis gespeichert sein, aber nur die Datei, die wie oben gezeigt verlinkt ist, ist die aktive Filterdatei.
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
<syntaxhighlight lang="bash" line>
drwxr-xr-x  5 xyz00-max xyz00  4096 Nov 16 07:28 .
xyz00@h01:~$ ls -al Maildir/sieve
drwxr-xr-x 28 xyz00-max xyz00  4096 Oct 22 23:06 ..
drwxr-xr-x  5 xyz00-max xyz00  4096 Nov 16 07:28 .
-rw-------  1 xyz00-max xyz00  210 Nov 16 07:28 einfilter.sieve
drwxr-xr-x 28 xyz00-max xyz00  4096 Oct 22 23:06 ..
-rw-------  1 xyz00-max xyz00  321 Nov 16 07:28 nocheinfilter.sieve
-rw-------  1 xyz00-max xyz00  210 Nov 16 07:28 einfilter.sieve
-rw-------  1 xyz00-max xyz00    99 Nov 16 07:28 weitererfilter.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
</syntaxhighlight>


=== Managesieve ===
=== Managesieve ===
Zeile 105: Zeile 113:
Hierzu muß die <tt>.forward</tt> zunächst mit einem Aufruf für procmail zu füllen:
Hierzu muß die <tt>.forward</tt> zunächst mit einem Aufruf für procmail zu füllen:


xyz00@h01:~$ cat .forward
<syntaxhighlight lang="bash">
"|/usr/bin/procmail"
xyz00@h01:~$ cat .forward
"|/usr/bin/procmail"
</syntaxhighlight>


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


# Letzte Procmail-Regel: Deliver aufrufen
<syntaxhighlight lang="bash">
:0 w
# Letzte Procmail-Regel: Deliver aufrufen
| /usr/lib/dovecot/deliver
:0 w
| /usr/lib/dovecot/deliver
</syntaxhighlight>


Soll procmail später nicht mehr benutzt werden, kann die .forward einfach gelöscht werden, oder deliver dort explizit angegeben werden:
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
<syntaxhighlight lang="bash">
"| /usr/lib/dovecot/deliver "
xyz00@h01:~$ cat .forward
"| /usr/lib/dovecot/deliver "
</syntaxhighlight>
 
=== Links ===
 
* Die Sieve-Filtersprache ist definiert in [http://tools.ietf.org/html/rfc5228 RFC5228]
* In [http://tools.ietf.org/html/rfc5230 RFC5230] ist die Vacation Extension von der Sieve-Sprache genau beschrieben.
* Weitere Sieve-relevante RFC's: [http://tools.ietf.org/html/rfc5229 RFC5229] Variables Extension; [http://tools.ietf.org/html/rfc5173 RFC5173] Body Extension; [http://tools.ietf.org/html/rfc5429 RFC5429] Reject and Extended Reject Extensions; [http://tools.ietf.org/html/rfc5231 RFC5231] Relational Extension; [http://tools.ietf.org/html/rfc5233 RFC5233] Subaddress Extension; [http://tools.ietf.org/html/rfc5235 RFC5235] Spamtest and Virustest Extensions; [http://tools.ietf.org/html/rfc3894 RFC3894] Copying Without Side Effects
;
 
[[Kategorie:E-Mail]]

Aktuelle Version vom 12. Juni 2024, 11:09 Uhr

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