Direkt zum InhaltDirekt zur SucheDirekt zur Navigation
▼ Zielgruppen ▼
 

Humboldt-Universität zu Berlin - Mathematisch-Naturwissenschaftliche Fakultät - Rechnerbetriebsgruppe

Weiterleiten und Filtern von E-Mail durch Sieve

Auf den Mailservern des Instituts für Informatik wird das Filtersystem DOVECOT-Sieve zur Verfügung gestellt.
DOVECOT Sieve stellt folgende sieve-Features zur Verfügung: fileinto, reject, envelope, encoded-character, vacation, subaddress, comparator-i, ascii-numeric, relational, regex, imap4flags, copy, include, variables, body, enotify, environment, mailbox, date, index, ihave, duplicate, mime, foreverypart, extracttext, editheader, imapflags, notify .
Hier ist eine kurze Dokumentation von sieve für unsere Verhältnisse angepasst.
Allen neuen Nutzer erhalten standardmäßig Filterregeln eingetragen.

Die sieve-Filterregeln werden für jeden Nutzer auf dem Mailserver hinterlegt. Für die Verwaltung steht auf dem Mailserver ein ManageSieve-Server zur Verfügung. Der ManageSieve-Server unterstützt "SSL/TLS". Er ist über die Ports 4190(default) und 2000 erreichbar.

Für Thunderbird gibt es ein passendes Plugin, das die Verwaltung von Sieve-Scripten über den ManageSieve-Server unterstützt (Stand: 04.02.2020).

Die Verwaltung der Sieve-Scripte mit Kmail ist möglich.

Für alle Nutzer, die weder mit Kmail noch mit Thunderbird ihre E-Mails lesen, gibt es auf den Rechnern rabe, star, condor, adler und auf allen LINUX-Rechnern das Programm sieveshell , mit dessen Hilfe man seine Sieve-Scripte verwalten kann (Download, Upload, Editieren, Aktivieren). Das Programm wird wie folgt aufgerufen:
 
sieveshell --user=<login-account> --tls mailbox.informatik.hu-berlin.de

Das Subkommando help gibt eine kurze Übersicht über die Subkommandos des Programms.
 
Kochrezepte für sieve-Filterregeln

Der Mailfolder-Separator ist "/". Bei der Formulierung der Filterregeln für das System "sieve" ist zu beachten, dass Namen für E-Mailboxen nicht mit "~/" oder "/" beginnen dürfen. Die E-Mailboxen befinden sich immer auf dem Mailserver.
Beispiele für .dovecot.sieve

Beispiel 1: Speichern der SPAM-Mail in einer separaten E-Mailbox und alle anderen Mails in der Standard-E-Mailbox ablegen
 

require "fileinto";
# SPAM in Mailfolder "SPAM"
if header :contains "X-Spam-Flag" "YES" { fileinto "SPAM"; stop; }
# implizites keep


           oder
 

require "fileinto";
# SPAM in Mailfolder "SPAM"
if header :contains "subject" "***SPAM***" { fileinto "SPAM"; stop; }
# implizites keep


Beispiel 2: Löschen der SPAM-Mail und alle anderen Mails in der Standard-E-Mailbox ablegen
 

if header :contains "X-Spam-Flag" "YES" { discard; stop; }
# implizites keep


           SPAM Mails von "informatik.hu-berlin.de" werden auch mit "SPAM"-Kennzeichnung angenommen:
 

# SPAM sofort loeschen
if allof ( header :contains "X-Spam-Flag" "YES" ,
not address :domain :contains "from" "informatik.hu-berlin.de" ) { discard; stop; }
# implizites keep



Beispiel 3: Speichern der SPAM-Mail in einer separaten E-Mailbox, streichen von Fehler-Mails des Mailsystems, weiterleiten der restlichen E-Mail an eine andere E-Mail-Adresse. Das Weiterleiten von SPAM wird verhindert! E-Mails können verloren gehen, wenn der neue Empfänger eine Absenderprüfung vornimmt.
 

require "fileinto";
# SPAM in E-Mailbox "SPAM"
if allof ( header :contains "X-Spam-Flag" "YES" ,
not address :domain :contains "from" "informatik.hu-berlin.de" ) { fileinto "SPAM"; stop; }
# nachfolgende Regeln verhindern E-Mailzyklen, Fehler-Mails werden geloescht
if header :matches "from" ["*MAILER-DAEMON@informatik.hu-berlin.de*",
                 "*MAILER-DAEMON@*.informatik.hu-berlin.de*" ]
        { discard; stop; }
# und den Rest weiterleiten
redirect "mustermann@musterdomain.de";
 


           oder mit anderer Syntax
 

require "fileinto";
# SPAM in E-Mailbox "SPAM"
if allof ( header :contains "X-Spam-Flag" "YES" ,
not address :domain :contains "from" "informatik.hu-berlin.de" ) { fileinto "SPAM"; stop; }
# nachfolgende Regeln verhindern Mailzyklen, Fehler-Mails werden geloescht
if anyof ( header :matches "from" "*MAILER-DAEMON@informatik.hu-berlin.de*",
           header :matches "from" "*MAILER-DAEMON@*.informatik.hu-berlin.de*")
        { discard; stop; }
# und den Rest weiterleiten
redirect "mustermann@musterdomain.de";
 



Beispiel 4: Löschen von SPAM-Mail, Fehler-Mails des Mailsystems werden in einer separaten E-Mailbox abgelegt, die restlichen E-Mails werden an eine andere E-Mailadresse weitergeleitet und in die Standard-E-Mailbox kopiert. E-Mails können verloren gehen, wenn der neue Empfänger eine Absenderprüfung vornimmt.
 

require "fileinto";
# SPAM sofort loeschen
if allof ( header :contains "X-Spam-Flag" "YES" ,
not address :domain :contains "from" "informatik.hu-berlin.de" ) { discard; stop; }
# nachfolgende Regel verhindert Mailzyklen, Mails in E-Mailbox "MAIL-ERRORS"
if header :matches "from" ["*MAILER-DAEMON@informatik.hu-berlin.de*",
                 "*MAILER-DAEMON@*.informatik.hu-berlin.de*" ]
        { fileinto "MAIL-ERRORS"; stop; }
# und in INBOX-E-Mailbox kopieren
keep;
# eigener SPAM loeschen
if header :contains "X-Spam-Flag" "YES" { discard; stop; }
# und den Rest weiterleiten
redirect "yyy@xxx.de";



Beispiel 5: Speichern der SPAM-Mail in einer separaten E-Mailbox, ablegen aller anderen E-Mails in der Standard-E-Mailbox, erzeugen einer Vacation-Nachricht. SPAM-Mail wird vor dem Senden der Vacation-Mail aussortiert. E-Mails können verloren gehen, wenn der neue Empfänger eine Absenderprüfung vornimmt.
 

require "fileinto";
require "vacation";
require "include";
# SPAM in E-Mailbox "SPAM"
if allof ( header :contains "X-Spam-Flag" "YES" ,
not address :domain :contains "from" "informatik.hu-berlin.de" ) { fileinto "SPAM"; stop; }
# nachfolgende Regel verhindert Mailzyklen, Fehler-Mails werden geloescht
if header :matches "from" ["*MAILER-DAEMON@informatik.hu-berlin.de*",
                 "*MAILER-DAEMON@*.informatik.hu-berlin.de*" ]
        { fileinto "MAIL-ERRORS"; stop; }
# Fuer alle E-Mails mit der Zieladresse musterfrau@informatik.hu-berlin.de bzw. isolde.musterfrau@informatik.hu-berlin.de
# wird eine Vacation-Mail erzeugt. Ein Absender erhaelt nur einmal eine Vacation-Mail. Nach 7 Tagen wird beim Eintreffen
# einer E-Mail vom gleichen Absender noch einmal eine Vacation Mail erzeugt.
if not header :contains "Precedence" ["bulk","list"] {
    # keine Vacation-Mail fuer Listen
    vacation
        :days 7
        :addresses ["musterfrau@informatik.hu-berlin.de","isolde.musterfrau@informatik.hu-berlin.de"]
        :subject "Out of office reply"
        "Sorry, I'm away.
         I'll read your message when I get around to it.";
}
# Der obige Nachrichtentext darf keine Umlaute enthalten.
#
# Wenn notwendig nachfolgende Umleitung aktivieren
# redirect "xxxxxxxxxx@informatik.hu-berlin.de";
#
# Alle E-Mails durch weiteres Skript bearbeiten (Bsp.: "default" ! Alternativen: "dovecot",... ):
# include :personal "default";
#
# Alle E-Mails werden in der Standard INBOX gespeichert.
keep ;



Beispiel 6: SPAM-Mail mit der Absenderadresse "informatik.hu-berlin.de" wird gespeichert, andere SPAM-Mail und Fehlermeldungen werden gelöscht, alle anderen Mails weitergeleitet. E-Mails können verloren gehen, wenn der neue Empfänger eine Absenderprüfung vornimmt.

require "fileinto";
#
# SPAM-Mail loeschen
if allof ( header :contains "X-Spam-Flag" "YES" ,
not address :domain :contains "from" "informatik.hu-berlin.de" ) { discard; stop; }
#
# informatik-SPAM speichern, Fehlermeldungen löschen
#
if header :contains "X-Spam-Flag" "YES" { fileinto "SPAM-local"; stop; }
if header :matches "from" ["*MAILER-DAEMON@informatik.hu-berlin.de*",
                 "*MAILER-DAEMON@*.informatik.hu-berlin.de*" ]
        { discard; stop; }
# Adresse durch die Zieladresse ersetzen !!!
redirect "mustermann@musterdomain.de";
#



Beispiel 7: SPAM-Mails werden gelöscht. Informatik-SPAM-Mails und Fehlermeldungen werden lokal gespeichert. Alle anderen Mails werden weitergeleitet und lokal gespeichert. Die weitergeleiteten Mails werden umgeschrieben, so dass als Absender der lokale Nutzer und als ReplyTo der ursprüngliche Absender erscheinen. Dadurch werden fast alle E-Mails weitergeleitet.

require "fileinto";
require "enotify";
require "regex";
require "envelope";
# nachfolgende zwei Zeilen sind fuer die Mailumleitung notwendig
require "variables";
require "include";
#
# SPAM-Mail loeschen
if allof ( header :contains "X-Spam-Flag" "YES" ,
             not address :domain :contains "from" "informatik.hu-berlin.de" ) { discard; stop; }
#
# Informatik-SPAM und Fehlermeldungen speichern und nicht weiterleiten
#
if header :contains "X-Spam-Flag" "YES" { fileinto "SPAM-informatik"; stop; }
if header :matches "from" ["*MAILER-DAEMON@informatik.hu-berlin.de*",
                                                   "*MAILER-DAEMON@*.informatik.hu-berlin.de*" ]
        { fileinto "MAIL-ERRORS"; stop; }
#
# Umleitung an andere Mailadresse
# in der nachfolgenden Zeile meinen Nutzernamen eintragen
set "global.username" "<Lokaler Nutzername>";
# in der nachfolgenden Zeile Zieladresse eintragen
set "global.sendto" "<Zieladresse>";
include :global "umleitung";
#
# E-Mail lokal behalten
keep;
#


Sieve-Regeln für neu eingerichtete Nutzer (ab 25.6.2017)

Für jeden neuen Account werden folgendene vier Sieve-Files bereitgestellt:

default: Dieses File wird standardmäß aktiviert. Die Regeln im "local"-File werden berücksichtigt.

#
# default
#
require "fileinto";
require "include";
#
# SPAM in Mailfolder "SPAM"
if allof ( header :contains "X-Spam-Flag" "YES" ,
                 address :domain :contains "from" "mustermann@informatik.hu-berlin.de" ) { fileinto "SPAM"; stop; }
if allof ( header :contains "X-Spam-Flag" "YES" ,
                 not address :domain :contains "from" "informatik.hu-berlin.de" ) { fileinto "SPAM"; stop; }
#
include :personal "local";
#
keep;


local: Hier kann der Nutzer Sieve-Filterregeln eintragen, die E-Mails in lokalen Mailboxen ablegen. Dieses File enthält im Anfangszustand nur Muster, wird aber trotzdem von allen anderen drei Sieve-Files benutzt.

#
#       local
#
#       Ablegen von E-Mails in lokalen Mailboxen, es erfolgen keine weiteren Aktionen
#
require "fileinto";
#
# if header :contains "subject" "Newsletter" { fileinto "Newsletter"; stop; }
# if header :contains "from" "Newsletter.de" { fileinto "Tagesspiegel"; stop; }
#
# if address :matches "from" "fax@*" { fileinto "SPAM" ; stop; }
#       weiterleiten an lokale E-Mail-Adresse
# if header :matches "from" "*@buxdehude.de" { redirect "musterfrau@informatik.hu-berlin.de"; keep; stop; }


vacation: Dieses Sieve-File sollte aktiviert werden, wenn eine Vacation-Nachricht versendet werden soll. Die Regeln in dem local.sieve-Regeln werden berücksichtigt und können eine Vacation-Mail verhindern.

#
#       vacation
#
#       Tue Jun 6 07:59:26 CEST 2017
require "fileinto";
require "enotify";
require "regex";
require "envelope";
require "variables";
require "include";
require "vacation";
#
#       SPAM-Mail wird im Mailfolder "SPAM" ablegen, diese Regel muss bei Mail-Umleitung aktiviert sein!!!!!!
#
 
if allof ( header :contains "X-Spam-Flag" "YES" ,
             address :domain :contains "from" "mustermann@informatik.hu-berlin.de" ) { fileinto "SPAM"; stop; }
if allof ( header :contains "X-Spam-Flag" "YES" ,
             not address :domain :contains "from" "informatik.hu-berlin.de" ) { fileinto "SPAM"; stop; }
#
 
include :personal "local";
 
#
#       Fuer alle E-Mails mit der Zieladresse
#             mustermann@informatik.hu-berlin.de oder Max.Mustermann@informatik.hu-berlin.de
#       wird eine Vacation-Mail erzeugt.
#       Ein Absender erhaelt nur einmal eine Vacation-Mail. Nach 7 Tagen wird beim Eintreffen
#       einer E-Mail vom gleichen Absender noch einmal eine Vacation Mail erzeugt.
 
if not header :contains "Precedence" ["bulk","list"] {
             # keine Vacation-Mail fuer Listen
             vacation
             :days 7
             :addresses ["mustermann@informatik.hu-berlin.de","Max.Mustermann@informatik.hu-berlin.de"]
             :subject "Out of office reply"
             "Sorry, I'm away.
             I'll read your message when I get around to it.";
}
 
#
#
#       E-Mail trotzdem lokal behalten
keep;
 


weiterleitung: Dieses Sieve-File sollte aktiviert werden, wenn eine Weiterleitung von E-Mails an eine andere E-Mail-Adresse gewünscht wird. Der Nutzer muss lediglich die Ziel-Adresse in der Zeile 'set "global.sendto" "mustermann@musterdomain.de"; ' anpassen. Es erfolgt eine Umschreibung der Header, so daß als Absenderadresse die lokale Adresse des Nutzers und als Reply-Adresse die ursprüngliche Absenderadresse erscheinen. Die Regeln in dem local.sieve-File werden berücksichtigt und können eine Weiterleitung verhindern.

#
#       weiterleitung
#
#       Tue Jun 6 07:59:26 CEST 2017
#
#       Weiterleitung an eine andere E-Mail-Adresse
#
# Achtung!! Wenn Mailweiterleitung aktiviert ist, kann der Empfang von E-Mails bei einigen E-Mail-Providern,
#       z.B. dlr.de, gmx.de, web.de, nicht garantiert werden, da diese E-Mail-Provider eine
#       Absenderverifikation durchfuehren und die weitergeleitete E-Mail dann nicht vom
#       E-Mail-Server des Absenders kommt!!!!!
#       Dadurch koennen E-Mails verloren gehen!!!!!
#
#
require "fileinto";
require "enotify";
require "regex";
require "envelope";
require "variables";
require "include";
#
# SPAM-Mail wird im Mailfolder "SPAM" ablegen, diese Regel muss bei Mailweiterleitung aktiviert sein!!!!!!
#
if allof ( header :contains "X-Spam-Flag" "YES" ,
             address :domain :contains "from" "mustermann@informatik.hu-berlin.de" ) { fileinto "SPAM"; stop; }
if allof ( header :contains "X-Spam-Flag" "YES" ,
             not address :domain :contains "from" "informatik.hu-berlin.de" ) { fileinto "SPAM"; stop; }
#
#
include :personal "local";
#
#       Fehlermeldungen duerfen nicht weitergeleitet werden!!!!! (Gefahr von Zyklen)
#
if header :matches "from" ["*MAILER-DAEMON@informatik.hu-berlin.de*",
                   "*MAILER-DAEMON@*.informatik.hu-berlin.de*"]
             { fileinto "MAIL-ERRORS"; stop; }
#
#       E-Mail trotz Weiterleitung auch im Original lokal behalten
keep;
#
#       Alle anderen E-Mails werden hier weitergeleitet.
#
#       in der nachfolgenden Zeile muss der lokale Nutzernamen eingetragen sein
set "global.username" "mustermann";
#       in der nach nachfolgenden Zeile muss die Zieladresse eingetragen werden
set "global.sendto" "mustermann@musterdomain.de";
include :global "umleitung";
 



Bei allen Sieve-Files wird SPAM-Mail, die keine Absenderadresse "informatik.hu-berlin.de" hat, in einem eigenen Mailfolder "SPAM" abgelegt; es erfolgt keinerlei weitere Aktion. Alle anderen E-Mails werden in der Standard-E-Mailbox abgelegt. Wenn die Weiterleitung aktiviert ist, werden außerdem alle E-Mails mit Fehlernachrichten des Mailservers in einem eigenen Mailfolder "MAIL-ERRORS" abgelegt und nicht weitergeleitet.