Filter
Filter definieren, welche E-Mails verarbeitet werden und welche Aktionen ausgeführt werden sollen. Filter werden in YAML-Dateien gespeichert (z.B. filters/work_rules.yaml).
Filter-Struktur
Jeder Filter benötigt:
name: Eindeutiger Name des Filterscriteria: Kriterien, die erfüllt sein müssen (siehe Filterkriterien)action: Aktion, die ausgeführt wird (siehe Aktionen)
Optionale Felder:
enabled: Filter aktivieren/deaktivieren (default:true)priority: Priorität des Filters (höher = wichtiger, default:0)stop: Stoppt weitere Regelprüfungen nach diesem Filter (default:false)mark_as_read: E-Mail als gelesen markieren (default:true)mark_as_starred: E-Mail als starred markieren (default:false)save_attachments: Anhänge speichern (default:false)attachment_directory: Verzeichnis für Anhänge (relativ zuattachment_base_directory)
Beispiel
filters:
- name: "Wichtige Mails"
enabled: true
priority: 100
stop: false
criteria:
from: "boss@company.com"
mark_as_read: true
mark_as_starred: true
action:
type: "move"
target_folder: "INBOX.Important"
max_retries: 3
Filterkriterien
Alle Kriterien innerhalb eines Filters werden mit AND-Logik kombiniert (alle müssen erfüllt sein). Bei Listen wird OR-Logik verwendet (mindestens einer muss passen).
Absender
-
from: Exakter Match oder Regex auf Absender-Adressefrom: "sender@example.com" from: ["sender1@example.com", "sender2@example.com"] # OR-Logik from: ".*@example\\.com" # Regex -
from_domain: Match auf Domain des Absendersfrom_domain: "example.com" from_domain: ["example.com", "test.com"] # OR-Logik
Empfänger
-
to: Match auf TO-Empfängerto: "recipient@example.com" to: ["user1@example.com", "user2@example.com"] # OR-Logik -
cc: Match auf CC-Empfängercc: "cc@example.com" -
bcc: Match auf BCC-Empfängerbcc: "bcc@example.com"
Betreff
-
subject_contains: Enthält Text im Betreff (case-insensitive)subject_contains: "Wichtig" subject_contains: ["Wichtig", "Dringend"] # OR-Logik -
subject_matches: Regex-Match auf Betreffsubject_matches: ".*\\[Ticket #\\d+\\].*"
Body
-
body_contains: Enthält Text im Body (durchsucht Text- und HTML-Body, case-insensitive)body_contains: "Rechnung" body_contains: ["Rechnung", "Invoice"] # OR-Logik -
body_matches: Regex-Match auf Body (Text oder HTML)body_matches: ".*Bestellung.*\\d+.*" -
body_text_contains: Enthält Text nur im Text-Bodybody_text_contains: "Wichtige Information" -
body_html_contains: Enthält Text nur im HTML-Body (HTML-Tags werden entfernt)body_html_contains: "Link"
Anhänge
-
has_attachment: Prüft, ob E-Mail Anhänge hathas_attachment: true -
attachment_name_contains: Enthält Text im Anhang-Namen (case-insensitive)attachment_name_contains: ".pdf" attachment_name_contains: [".pdf", ".xlsx"] # OR-Logik
Größe
-
size_greater_than: E-Mail größer als X Bytessize_greater_than: 1048576 # 1 MB -
size_less_than: E-Mail kleiner als X Bytessize_less_than: 5242880 # 5 MB
Datum
-
date_after: E-Mail nach diesem Datumdate_after: "2024-01-01" date_after: "30 days ago" # Relatives Datum date_after: "2 hours ago" -
date_before: E-Mail vor diesem Datumdate_before: "2024-12-31" date_before: "30 days ago"
Header
header_contains: Match auf Header-Felder (dict)header_contains: "X-Priority": "1" "List-ID": "example.com"
Prioritätssystem
Filter können Prioritäten haben (höher = wichtiger):
filters:
- name: "Wichtig"
priority: 100
stop: true # Stoppt weitere Regelprüfungen
# ...
- name: "Normal"
priority: 50
stop: false # Weitere Regeln werden noch geprüft
# ...
- Filter werden nach Priorität sortiert (höhere Priorität zuerst)
- Mehrere Aktionen pro E-Mail möglich (außer bei
stop: trueoderdelete) deletestoppt automatisch weitere Aktionen
Filter aktivieren/deaktivieren
Filter können temporär deaktiviert werden:
filters:
- name: "Temporär deaktiviert"
enabled: false # Filter wird übersprungen
criteria:
from: "test@example.com"
action:
type: "move"
target_folder: "INBOX.Test"
Markierungs-Attribute
Jeder Filter kann optional festlegen, wie verarbeitete E-Mails markiert werden:
filters:
- name: "Wichtige Mails"
criteria:
from: "boss@company.com"
mark_as_read: true # Optional: als gelesen markieren (default: true)
mark_as_starred: true # Optional: als starred markieren (default: false)
action:
type: "move"
target_folder: "INBOX.Important"
- name: "Zu prüfende Mails"
criteria:
subject_contains: "ticket"
mark_as_read: false # Als ungelesen markieren
mark_as_starred: true # Als starred markieren
action:
type: "reply"
template: "templates/reply.txt"
Verhalten:
mark_as_read(default:true): Markiert E-Mail als gelesen (true) oder ungelesen (false)mark_as_starred(default:false): Markiert E-Mail als starred (true) oder unstarred (false)- Wenn mehrere Filter matchen, werden die Werte des Filters mit höchster Priorität verwendet
- Markierungen werden nur angewendet, wenn eine Aktion erfolgreich ausgeführt wurde
- Bei
dry-runwerden keine Markierungen angewendet
Anhang-Speicherung
Anhänge können automatisch gespeichert werden:
filters:
- name: "Reports mit Anhängen verarbeiten"
criteria:
from: "reports@company.com"
has_attachment: true
save_attachments: true
attachment_directory: "attachments/work/reports"
action:
type: "script"
path: "scripts/process_report.sh"
save_attachments: Aktiviert Anhang-Speicherung (default:false)attachment_directory: Verzeichnis für Anhänge (relativ zuattachment_base_directory)- Anhänge werden als
{uid}_{filename}gespeichert
Weitere Informationen
- Aktionen - Verfügbare Aktionen
- Verwendung - CLI-Befehle