Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:mail:dovecot_sieve

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Both sides previous revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
software:mail:dovecot_sieve [2013/06/03 14:42]
jherlitzius [Code-Synchronisation und debugging]
software:mail:dovecot_sieve [2013/06/03 22:33] (aktuell)
mrenner
Zeile 1: Zeile 1:
 ====== SPAM-Filter Sieve ====== ====== SPAM-Filter Sieve ======
 +
 //Sieve//, auch genannt //​Sieve-Skript//​ ist eine Skriptsprache,​ mit der Filtereinstellungen für E-Mails konfiguriert werden können. //Sieve//, auch genannt //​Sieve-Skript//​ ist eine Skriptsprache,​ mit der Filtereinstellungen für E-Mails konfiguriert werden können.
  
Zeile 12: Zeile 13:
  
 Zudem existieren Erweiterungen,​ wie z.B. eine [[http://​wiki2.dovecot.org/​Pigeonhole/​Sieve/​Extensions/​SpamtestVirustest|Virenskanner-Erweiterung]],​ die E-Mails nach Viren untersuchen kann. Diese Erweiterungen unterstützen zum Teil ähnliche Funktionalitäten wie der erwähnte [[http://​en.wikipedia.org/​wiki/​SpamAssassin|SpamAssassin]]. Zudem existieren Erweiterungen,​ wie z.B. eine [[http://​wiki2.dovecot.org/​Pigeonhole/​Sieve/​Extensions/​SpamtestVirustest|Virenskanner-Erweiterung]],​ die E-Mails nach Viren untersuchen kann. Diese Erweiterungen unterstützen zum Teil ähnliche Funktionalitäten wie der erwähnte [[http://​en.wikipedia.org/​wiki/​SpamAssassin|SpamAssassin]].
 +
  
 ===== Weiterführende Links =====  ===== Weiterführende Links ===== 
Zeile 17: Zeile 19:
   * Weitere generell Informationen und weiterführende Links finden sich unter [[wp>​http://​de.wikipedia.org/​wiki/​Sieve/​]]   * Weitere generell Informationen und weiterführende Links finden sich unter [[wp>​http://​de.wikipedia.org/​wiki/​Sieve/​]]
   * Kurze Beschreibung und weiterführende Links zu Tutorials: http://​sieve.info/​   * Kurze Beschreibung und weiterführende Links zu Tutorials: http://​sieve.info/​
 +
  
 ===== Installation auf dem Server ===== ===== Installation auf dem Server =====
Zeile 24: Zeile 27:
  
 ===== Installation lokal im Thunderbird ===== ===== Installation lokal im Thunderbird =====
 +
 Das Plugin Sieve ist als [[https://​addons.mozilla.org/​en-us/​thunderbird/​addon/​sieve/​|Erweiterung für Mozilla Thunderbird]] verfügbar. ​ Das Plugin Sieve ist als [[https://​addons.mozilla.org/​en-us/​thunderbird/​addon/​sieve/​|Erweiterung für Mozilla Thunderbird]] verfügbar. ​
  
Zeile 31: Zeile 35:
  
 ===== Installation als Roundcube-plugin "​Managesieve"​===== ===== Installation als Roundcube-plugin "​Managesieve"​=====
 +
 [[software:​mailserver:​roundcube|Roundcube]] bringt das Plugin zur Anbindung an Sieve bereits mit, es muss allerdings eingebunden und konfiguriert werden: ​ [[software:​mailserver:​roundcube|Roundcube]] bringt das Plugin zur Anbindung an Sieve bereits mit, es muss allerdings eingebunden und konfiguriert werden: ​
 +
  
 ==== Einbinden des Plugins ==== ==== 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. ​ 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 ==== ==== Konfiguration des Plugins ====
 +
 Da Sieve den IMAP-Server zur Kommunikation benutzt müssen die gleichen Authentifizierungsmethoden genutzt werden wie für roundcube selbst. 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''​. Die Konfigurationsdatei des Plugins befindet sich im Verzeichnis ''​plugins/​managesieve''​.
Zeile 63: Zeile 72:
 > **NB!** Diese Baukasten-Ansicht ist fehlerhaft und kann den Filter nicht immer als graphische Baukasten-Ansicht darstellen — auch wenn der Filter syntaktisch korrekt ist! Insofern empfiehlt sich die Editierung in der "​Source"​-Ansicht. Ein ähnliches Problem gibt es mit der WebGUI: Hier wird z.B. ein Feld einer Filterregel nicht angezeigt, wenn für das Feld mehr als ein Schlüsselwort/​Keyword definiert wurde! ​ > **NB!** Diese Baukasten-Ansicht ist fehlerhaft und kann den Filter nicht immer als graphische Baukasten-Ansicht darstellen — auch wenn der Filter syntaktisch korrekt ist! Insofern empfiehlt sich die Editierung in der "​Source"​-Ansicht. Ein ähnliches Problem gibt es mit der WebGUI: Hier wird z.B. ein Feld einer Filterregel nicht angezeigt, wenn für das Feld mehr als ein Schlüsselwort/​Keyword definiert wurde! ​
 ===== Syntax ===== ===== Syntax =====
-Die Syntax erlaubt keine komplexen Strukturen wie Schleifen oder Variablendefinitionen und basiert stark auf boolsche Wahrheitsprüfungen.+Die Syntax erlaubt keine komplexen Strukturen wie Schleifen oder Variablendefinitionen und basiert stark auf boolsche Wahrheitsprüfungen. Dadurch kommt es zwangsläufig zu Redundanzen im Script.
  
 Um die Syntax zu erlenen, ist es von Vorteil, die empfohlenen [[http://​sieve.info/​tutorials|Tutorials]] in der aufgelisteten Reihenfolge zu studieren. Um die Syntax zu erlenen, ist es von Vorteil, die empfohlenen [[http://​sieve.info/​tutorials|Tutorials]] in der aufgelisteten Reihenfolge zu studieren.
Zeile 69: Zeile 78:
  
 ===== Code-Synchronisation und debugging ===== ===== Code-Synchronisation und debugging =====
 +
 Der Code aus der Thunderbird-Erweiterung wird nach dem Speichern sofort auf den Server hochgeladen. Serverseitig wird nach dem Speichern des Filters im Thunderbird eine Filterregel in der Webmail-GUI erstellt, 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 in Thunderbird angezeigt werden). Der Code aus der Thunderbird-Erweiterung wird nach dem Speichern sofort auf den Server hochgeladen. Serverseitig wird nach dem Speichern des Filters im Thunderbird eine Filterregel in der Webmail-GUI erstellt, 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 in Thunderbird angezeigt werden).
  
Zeile 74: Zeile 84:
  
 > **NB!** Immer Backups vom erstellten Filter vornehmen, da die Filter leicht ungewollt überschrieben werden können. > **NB!** Immer Backups vom erstellten Filter vornehmen, da die Filter leicht ungewollt überschrieben werden können.
 +
  
 ===== Abwesenheitsnotiz ===== ===== 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 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 ===== ===== 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.+Im Folgenden ​wird ein Beispielskript vorgestellt,​ dass als Konfiguration für Filterregeln gegen SPAM genutzt werden ​kann. Ein solcher Filter wird in unseren Augen nie vollständig sein können und Bedarf kontinuierlicher Anpassung. Dieser Filter ist weder vollständig noch perfekt. Er basiert auf unseren Erfahrungen und kann für andere weniger gut funktionieren als für uns
  
-Der Befehl "​fileinto"​ kann auch durch den discard-Befehl ersetzt ​werden. ​Der discard-Befehl ist konfigurierbar und kann z.Bder Operation fileinto nachfolgend zugewiesen ​werden. ​Einige Hinweise dazu gibt es hierhttp://​pigeonhole.dovecot.org/​doc/​man1/​sieve-filter.1.html  +Innerhalb des ganzen Scripts gibt es Regeln, die personalisiert werden müssen. Das heißt, sie müssen an den Empfänger angepasst ​werden. ​Manche dieser Regeln verschieben die Mail dann in den Ordner "​SPAM"​ der unterhalb des Posteingangs "​INBOX"​ liegtDieser Ordner muss gegebenenfalls angepasst werdenPrinzipiell kann einfach ein "​Suchen & Ersetzen"​ über das Script durchgeführt ​werden. ​Dabei gibt es folgende Schlüsselwörter,​ die es zu ersetzen gilt"FIRST NAME" (zBMax), "LAST NAME" (zBMustermann), ​"X. LAST NAME" ​(z. B. M. Mustermann), ​"YOUR EMAIL ADDRESS"​ und "​INBOX.SPAM"​. ​
- +
-> NB! Das Einbetten von Schlüsselwörtern zwischen ​"*" ​nach dem "contains" ​Befehl ist unnötig, da dieser Befehl schon die Wildcard-Funktion beinhaltet.+
  
 +Zunächst werden sogenannte Whitelist-Rules vorstellt. Diese Regeln stehen als erstes im Script, da der Filter von oben nach unten abgearbeitet wird. Wenn eine dieser Regeln zutrifft, wird die Anwendung des Filters gestoppt und die Mail wird für den Posteingang freigegeben. Danach werden Blacklist-Rules vorgestellt. Wenn eine dieser Regeln zutrifft, dann hat der Filter die eingehende Mail als Spam erkannt und verschiebt diese in den angegebenen Ordner.
  
 <code bash> <code bash>
-@DESCRIPTION This script for the mail filter ​SIEVE. Further informationhttp://​sieve.info/ +Sieve SPAM filter script as set of filter ​rules 
- These rules follow negative e-mail filteringAll e-mails are accepted and are received and are put into the inbox folder.  +# AuthorWiba10.de 
- However, if one rule meets to an incoming e-mail, it is handled as defined in the specfic rule. +Version27.05.2013 
- The rules are applied sequentiallyIf the first respprevious "​if"​ clause did not holdthe next one is looked at; and vice versa. +#  
-# @PRECONDITIONA folder named "​your_junk-mail-folder"​ must exist as a subfolder of the mailbox+LicenseCreativeCommons Attribution-ShareAlike 3.0 Unported (CC-BY-SA)http://​creativecommons.org/​licenses/​by-sa/3.0/ 
- +# 
- +# 
-# Loading ​in the neccesary ​modules +# Loading the necessary ​modules 
-require ["​fileinto","​body"​];​ +require ["​fileinto","​body","​envelope"]; 
- +
-# rule:[Sender and recipient address equal+
-if address ​:is ["From","​To""your_e-mail_address"+### Whitelist-Rules ### 
 +
 +## Personalize! ## 
 +# rule:[Keywords that are contained in message text
 +if body :text :​contains ​["LAST NAME", "Hi FIRST NAME","Hallo FIRST NAME","​Guten Morgen FIRST NAME","​Guten Tag FIRST NAME","​Servus FIRST NAME","​Guten Abend FIRST NAME","​Hey FIRST NAME","​Grüß Gott FIRST NAME","​Moin FIRST NAME","​Geschäftsführer","​Geschaeftsfuehrer","​Amtsgericht","​USt.-ID","USt. ID","​austragen","​abmelden","​Hallo zusammen","​ignore this email","​not give away this address","​not forward this email","​delete this email"​]
 { {
- fileinto "​your_junk-mail-folder";​ 
  stop;  stop;
 } }
- +## Personalize! ## 
-# rule:[Keywords blacklist ​in subject and message+# rule:[Name in "​To"​
-if anyof (header ​:contains "Subject" ["keyword1","​keyword2"]body :text :contains ["keyword1","​keyword2"])+if address ​:contains "To" ["FIRST NAME LAST NAME","​LAST NAME FIRST NAME","​X. LAST NAME","​LAST NAME, FIRST NAME"]
 { {
- fileinto "​your_junk-mail-folder";​ 
  stop;  stop;
 } }
 +## Personalize! ## 
 +# rule:[Mail subject contains keywords] 
 +if header :contains "​Subject"​ ["LAST NAME","​RE:","​FWD:","​AW:","​WG:","​WG-","​Gelesen:","​Read:","​Empfangsbestätigung:","​Lesebestätigung:","​Empfangsbestätigung (angezeigt)","​Return Receipt (displayed)"​] 
 +
 + stop; 
 +
 +# rule:[Mail was processed by a well-known host] 
 +if header :matches "​Received"​ ["from *web.de (*?​)","​from *superkabel.de (*?​)","​from *gmx.de (*?​)","​from *gmx.net (*?​)","​from *ryanair.com (*?​)","​from *arcor-online.net (*?​)","​from *bosch.de (*?​)","​from *t-online.de (*?​)"​] 
 +
 + stop; 
 +
 +# rule:[Mail originates from a well-known e-mail-adress] 
 +if header :contains "​From"​ ["​@superkabel.de"​] 
 +
 + stop; 
 +
 +# rule:[Sent by a well-known Mail software] 
 +if anyof (header :contains "​User-Agent"​ ["​David.fx","​Chilkat Software"​],​ header :contains "​X-Mailer"​ ["​David.fx","​Chilkat Software"​])  
 +
 + stop; 
 +
 +
 +
 +### Blacklist-Rules ### 
 +
 +## Personalize! ## 
 +# rule:​[Sender and recipient address are equal and are not in the return path] 
 +if allof (address :contains "​From"​ "YOUR EMAIL ADDRESS",​ address :contains "​To"​ "YOUR EMAIL ADDRESS"​) ​  
 +
 +  if not header :contains "​Return-Path"​ ["YOUR EMAIL ADDRESS"​] 
 +    {  
 +    fileinto "​INBOX.SPAM";​ 
 + stop; 
 +  } 
 +
 +# rule:[Mail was processed by an unknown host or a host that is often used for Spams] 
 +if header :matches "​Received"​ ["from *otvk.pl (*?​)","​from localhost.localdomain (*?​)","​from shawcable.net (*?​)"​] 
 +
 +  fileinto "​INBOX.SPAM";​ 
 + stop; 
 +
 +# rule:​[Message-ID contains a dot and @] 
 +if not header :matches "​Message-Id"​ "​*?​@*?​.??​*"​ 
 +
 + fileinto "​INBOX.SPAM";​ 
 + stop; 
 +
 +# rule:​[Header contains SPAM-Flag] 
 +if header :contains "​X-Spam-Flag"​ "​YES"​ 
 +
 + fileinto "​INBOX.SPAM";​ 
 + stop; 
 +
 +# rule:​[Keywords that are contained in subject] 
 +if header :contains "​Subject"​ ["​Mr.Sung Lee","​datingfuhildo.ru","​firsteuro-consulting.com","​uvipeliterubypalace.pl","​Top money making industry","​Buy shares under","​Hottest top stock is S CX N","​worldofconsult.com","​avipeliterubypalace.pl","​Josef Nakladal","​Profit Generating Industry","​datinglisa.ru","​josefnak@yahoo.de","​Oil player","​Who is Making Money"​] 
 +
 + fileinto "​INBOX.SPAM";​ 
 + stop; 
 +
 +# rule:​[Keywords that are contained in message text] 
 +if body :text :contains ["​Mr.Sung Lee","​datingfuhildo.ru","​firsteuro-consulting.com","​uvipeliterubypalace.pl","​Top money making industry","​Buy shares under","​Hottest top stock is S CX N","​worldofconsult.com","​avipeliterubypalace.pl","​Josef Nakladal","​Profit Generating Industry","​datinglisa.ru","​josefnak@yahoo.de","​Oil player","​Who is Making Money","​ask that you keep this award away from public"​] 
 +
 + fileinto "​INBOX.SPAM";​ 
 + stop; 
 +
 +# rule:​[Keywords that matches] 
 +if anyof (header :matches "​Subject"​ ["​S?​C?​X?​N","​GT?​RL"​],​ body :text :contains ["​S?​C?​X?​N","​GT?​RL"​]) 
 +
 + fileinto "​INBOX.SPAM";​ 
 + stop; 
 +
 +# rule:[Field Message-ID is empty] 
 +if header :is "​Message-Id"​ ""​ 
 +
 + fileinto "​INBOX.SPAM";​ 
 + stop; 
 +
 +# rule:​[Received from unknown] 
 +if header :contains "​Received"​ ["​unknown","​User"​] 
 +
 + fileinto "​INBOX.SPAM";​ 
 + stop; 
 +
 +# rule:[Sent by a well-known SPAM software in X-Mailer] 
 +if header :contains "​X-Mailer"​ ["The Bat","​Microsoft Outlook Express","​JavaMailer"​] 
 +
 + fileinto "​INBOX.SPAM";​ 
 + stop; 
 +
 +# rule:[Sent by a well-known SPAM software in User-Agent] 
 +if header :contains "​User-Agent"​ ["The Bat","​Microsoft Outlook Express","​JavaMailer"​] 
 +
 + fileinto "​INBOX.SPAM";​ 
 + stop; 
 +
 +### End of file ###
 </​code>​ </​code>​
 +
 +Es gibt viele verschiedene Felder einer Mail, die ein Filter überprüfen kann. In einer der Whitelist-Rules wird bspw. der "​body"​ nach den nachfolgenden Schlüsselwörtern durchsucht. Wenn eines der Schlüsselwörter gefunden wird, wird der Filter gestoppt (und die Mail wird für den Posteingang freigegeben). ​
 +
 +In einer weiteren Regel wird ein ":​matches"​ genutzt. ":​contains"​ überprüft den zu untersuchenden Inhalt nach genau dem angegebenen Schlüsselwort. ":​matches"​ kann genutzt werden, wenn innerhalb eines Schlüsselwortes (oder eines Strings) unbekannte Zeichen vorkommen. Dabei kann das Fragezeichen "?"​ für ein unbekanntes Zeichen und der Asterisk "​*"​ für Null und mehr unbekannte Zeichen genutzt werden. ":​is"​ (wird hier nicht genutzt"​ vergleicht das ganze Feld mit dem angegebenen String.
 +
 +In einer der Blacklist-Rules steht "if allof (..., ...)". "​allof"​ sagt aus, dass alle nachfolgenden Prüfungen true ergeben müssen, sonst wird innerhalb dieser Regel nicht weiterverfahren. Bei einem "​anyof"​ reicht es aus, wenn einer der nachfolgenden Prüfungen true ergibt.
 +
 +Der Befehl "​fileinto"​ kann auch durch den discard-Befehl ersetzt werden. Der discard-Befehl ist konfigurierbar und kann z.B. anstelle der Operation fileinto genutzt werden.
  
  
Zeile 123: Zeile 239:
     * Das Datum der E-Mail liegt in der Zukunft     * Das Datum der E-Mail liegt in der Zukunft
     * Der Return-Path im Header enthält "​spam@…"​     * Der Return-Path im Header enthält "​spam@…"​
-    * Return-Path:​ gleiche wie "​from" ​ + 
-    * nicht aufgelöste DNS in Feld "​received"​+
 ==== Weiterführende Links ==== ==== Weiterführende Links ====
  
Zeile 130: Zeile 246:
   * Tutorial und Beispiele: http://​kb.vircom.com/​Kbase/​default.asp?​id=1333   * Tutorial und Beispiele: http://​kb.vircom.com/​Kbase/​default.asp?​id=1333
   * Kurzes Tutorial und Beispiele: http://​lwn.net/​Articles/​208831/​   * Kurzes Tutorial und Beispiele: http://​lwn.net/​Articles/​208831/​
 +  * Request for Comments Index: http://​www.ietf.org/​rfc/​rfc-index
 +  * Request for Comments Sieve (Proposed Standard): http://​www.ietf.org/​rfc/​rfc5228

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

software/mail/dovecot_sieve.1370263365.txt.gz · Zuletzt geändert: 2013/06/03 14:42 (Externe Bearbeitung)