Zum Inhalt springen
xaweho

Knowledge Base · fortgeschritten

Domain-weite Sieve-Filter als Domain-Admin setzen

Filter, die für alle Postfächer Deiner Domain gleichzeitig gelten — etwa um Newsletter Domain-weit in einen bestimmten Ordner zu sortieren oder bestimmte Sender abzuweisen.

fortgeschritten ·

Sieve ist eine Filtersprache für Mailserver — standardisiert, mächtig, und in Mailcow direkt eingebaut. Als Domain-Admin kannst Du Sieve-Filter setzen, die für alle Postfächer Deiner Domain gelten — bevor die Mail im Postfach des Users landet.

Der häufigste Anwendungsfall ist: Ich will, dass alle Mails von einem bestimmten Newsletter-Versender Domain-weit als „erwünscht” gelten und nicht im Spam landen, ohne dass jeder User das selbst einrichten muss.

Wichtig: persönliche Filter, die nur ein User für sich selbst will, gehören in seinen persönlichen Sieve im Webmail. Domain-weite Sieve-Filter sind für Regeln, die alle betreffen.

Filter anlegen

In der Mailcow-GUI:

  1. Konfiguration → Filter.
  2. Hinzufügen klicken.

Im Dialog:

FeldWert
Aktivaktiviert
Filtertyp„Vorfilter” oder „Nachfilter”
DomainDeine Domain
Sieve-Skriptsiehe unten
Beschreibungsprechender Text

Vorfilter vs. Nachfilter

  • Vorfilter läuft, bevor der persönliche Filter des Users greift. Wird etwa genutzt, um Mails noch vor dem User-Filter zu verwerfen oder umzuleiten.
  • Nachfilter läuft, nachdem der persönliche Filter durchgelaufen ist. Wird etwa genutzt, um Mails als letzte Sicherheits-Schicht zu sortieren, falls der User keinen eigenen Filter dazu hat.

Aus unserer Erfahrung: 90 % der Domain-weiten Filter sind Nachfilter — sie greifen nur, wenn der User selbst nichts spezifiziert hat. Vorfilter nutzt Du, wenn Du Domain-Policy durchsetzen willst.

Sieve-Sprache — die wichtigsten Patterns

Sieve ist nicht-Skriptsprache. Du beschreibst Bedingungen und Aktionen, kein Programmfluss.

Pattern 1: Newsletter-Versender in einen Ordner sortieren

require ["fileinto", "envelope"];

if anyof (
  address :is "from" "newsletter@firma-x.com",
  address :contains "from" "@info-newsletter.de"
) {
  fileinto "Newsletter";
  stop;
}

Mails von diesen Sendern landen automatisch im Ordner „Newsletter” — auf jedem Postfach Deiner Domain.

Achtung: der Ziel-Ordner muss in jedem Postfach existieren. Wenn er nicht da ist, landet die Mail im INBOX.

Pattern 2: Bestimmte Sender komplett verwerfen

require ["envelope"];

if address :is "from" "spam@bekannter-spam.com" {
  discard;
  stop;
}

Mails von dem genannten Sender werden ohne Weiteres verworfen, kommen in keinem Postfach an, der Sender bekommt keinen Bounce.

Vorsicht: discard ist endgültig — keine Möglichkeit, die Mail später zurückzuholen. Bei wichtigen Sendern lieber fileinto "Spam"; statt discard;.

Pattern 3: Mails mit bestimmten Schlagwörtern markieren

require ["fileinto", "imap4flags"];

if header :contains "subject" "[Rechnung]" {
  fileinto "Rechnungen";
  addflag "\\Flagged";
  stop;
}

Mails mit „[Rechnung]” im Betreff werden in den Ordner „Rechnungen” einsortiert und mit einem Flag (Sternchen) markiert.

Pattern 4: Mails an Funktionsadressen umleiten

require ["envelope", "redirect"];

if address :is "to" "alt-info@deinverein.de" {
  redirect "info@deinverein.de";
  stop;
}

Mails an die alte Adresse werden an die neue weitergeleitet. Ähnlich wie ein Alias — aber bei Bedarf konditional, mit Datum-Filter oder anderen Bedingungen.

Pattern 5: Mails von außen mit bestimmten Anhängen abweisen

require ["body", "reject"];

if anyof (
  body :raw :contains "0xDEADBEEF"
) {
  reject "Diese Mail wurde aus Sicherheitsgründen abgelehnt.";
  stop;
}

Mails mit verdächtigem Inhalt werden mit Bounce-Nachricht zurückgewiesen.

Sieve-Sprache — wichtige Direktiven

DirektiveWas sie tut
require ["..."]Aktiviert benötigte Sieve-Erweiterungen. Steht immer ganz oben.
if, elsif, elseKonditionale Logik.
anyof, allof, notBoolean-Verknüpfung mehrerer Bedingungen.
address, header, envelope, bodyWorauf wird matched.
:is, :contains, :matches, :regexWie wird matched.
fileinto "ordner"In Unterordner verschieben.
discardVerwerfen.
redirect "..."Weiterleiten.
reject "Begründung"Mit Bounce abweisen.
addflag, setflagMit IMAP-Flags markieren (Flagged, Seen, Answered).
stopFilter abbrechen, Mail nicht weiter verarbeiten.

Komplette Referenz: RFC 5228 — aber für 95 % der Use-Cases reichen die Patterns oben.

Filter testen

Wenn Du einen neuen Filter angelegt hast:

  1. Aktiv zunächst auf Inaktiv lassen.
  2. Test-Mail senden, die der Filter erfassen sollte.
  3. Filter schrittweise aktivieren.
  4. Erneut testen.

Bei syntaktischen Fehlern lehnt Mailcow das Speichern bereits ab — Du bekommst eine Fehlermeldung mit Zeile.

Bei logischen Fehlern (Filter erfasst die falschen Mails) musst Du es selbst durchdenken — oder schreib uns ein Ticket, wir helfen.

Best Practices

Filter dokumentieren. In jedem Filter eine sprechende Beschreibung im Beschreibung-Feld. „Filter 1” sagt nichts. „Newsletter von info-newsletter.de in Ordner X” ist klar.

Vorfilter sparsam einsetzen. Vorfilter überschreiben User-Entscheidungen — User können nichts dagegen tun, ohne dass Du das änderst. Wenn ein User später eine andere Sortierung will und Dein Vorfilter dem im Weg steht, ärgert er sich. Lieber Nachfilter, die User-Filter ergänzen.

Bei Spam-Patterns Vorsicht. Spam-Versender ändern Domains und Adressen ständig. Domain-weite Spam-Filter sind oft schnell veraltet. Besser: Mailcow-eigenen Spam-Filter (Rspamd) auf Server-Ebene tunen — frag uns.

Niemals discard für unbekannte Sender. Wenn Du Sender komplett verwerfen willst, sicher sein, dass nichts Wichtiges davon dabei sein kann. Sonst lieber fileinto "Verdacht";.

Häufige Fragen

Funktionieren Domain-weite Filter auf neue Postfächer? Ja, automatisch. Sobald ein Postfach in der Domain angelegt wird, gelten alle aktiven Domain-Filter sofort.

Können User Domain-weite Filter sehen? Nein. Sie sehen nur ihre persönlichen Filter im SOGo. Wenn ein User sich wundert, warum eine Mail in einem bestimmten Ordner gelandet ist und er findet keinen passenden eigenen Filter, ist’s wahrscheinlich ein Domain-Filter.

Wie kann ich einen Filter testen, bevor ich ihn live schalte? Mailcow hat keinen eingebauten Sieve-Tester. Best Practice: Sieve im Filter-Edit speichern (mit „Inaktiv”), dann eine Test-Mail an Dein eigenes Postfach senden, die der Filter erfassen würde — und prüfen, was passiert. Schritt für Schritt.

Kann ich mehrere Filter parallel haben? Ja, beliebig viele. Sie werden in der Reihenfolge ausgeführt, die Du im Filter-Edit unter „Reihenfolge” festlegst.

Was passiert, wenn ein Filter einen Fehler hat? Mailcow loggt den Fehler im E-Mail → Mail-Logs. Die Mail wird trotzdem zugestellt — das ist das gewollte „fail open”-Verhalten, damit ein kaputter Filter nicht die ganze Domain lahmlegt.

Kann ich Sieve-Filter pro Postfach separat setzen? Domain-weit als Domain-Admin: nein. Pro-User-Filter: ja, im SOGo Webmail. Mehr in Persönliche Sieve-Filter im Webmail.

Wie debugge ich einen Filter, der nicht greift? Im Sieve-Skript zusätzlich fileinto "Sieve-Debug"; einfügen — ein Ordner, in dem Du siehst, welche Mails den Filter durchlaufen haben. Wenn der Debug-Ordner leer bleibt, matched die Bedingung nicht.

Weiter geht’s

Passende Produkte
Tags
mailcow sieve filter domain-admin

Hat dieser Artikel Dir geholfen?

Wenn nicht, schreib uns ein Ticket. Wenn ja, freuen wir uns über eine Empfehlung — beide bekommen 25 € Guthaben aufs Kundenkonto.