Konfiguration
Die Hauptkonfiguration erfolgt über die Datei config/config.yaml. Diese Datei enthält alle globalen Einstellungen und die Account-Konfigurationen.
Konfigurationsmodi
Der Mail-Filter unterstützt zwei Konfigurationsmodi:
Standard-Modus (Konfiguration im Code-Repo)
Die Konfiguration liegt direkt im Code-Repository:
mail-filter/
├── config/
│ ├── config.yaml # Hauptkonfiguration
│ └── credentials/ # Credentials-Dateien
├── filters/
│ └── *.yaml # Filterregeln
Verwendung:
mail-filter run # Verwendet automatisch config/config.yaml
python main.py run
Getrenntes Config-Repo (Empfohlen für Produktion)
Die Konfiguration liegt in einem separaten, privaten Repository:
mail-filter-config/
├── config/
│ ├── config.yaml # Hauptkonfiguration (ohne Passwörter)
│ ├── accounts.yaml # Account-Konfigurationen
│ └── credentials/ # Credentials-Dateien (nicht versioniert)
└── filters/
└── *.yaml # Filterregeln
Verwendung:
mail-filter --config /opt/mail-filter-config/config/config.yaml run
python main.py --config /opt/mail-filter-config/config/config.yaml run
Automatische Pfadauflösung:
Wenn config_paths nicht in config.yaml definiert sind, werden die Pfade automatisch relativ zum Verzeichnis der config.yaml aufgelöst:
accounts_file:<config-dir>/accounts.yamlcredentials_dir:<config-dir>/credentialsfilters_dir:<config-dir>/../filters
Explizite Pfade (optional):
Falls die Standard-Struktur nicht passt, können config_paths in config.yaml explizit angegeben werden:
config_paths:
filters_dir: "/opt/mail-filter-config/filters"
credentials_dir: "/opt/mail-filter-config/config/credentials"
accounts_file: "/opt/mail-filter-config/config/accounts.yaml"
Siehe auch: README.md im Haupt-Repository für weitere Details.
Hauptkonfiguration (config/config.yaml)
Allgemeine Einstellungen (general)
general:
log_level: "INFO" # DEBUG, INFO, WARNING, ERROR
log_file: "logs/mail-filter.log"
state_db: "state/mail_filter.db"
state_backup_enabled: true
state_backup_interval_hours: 24
state_backup_retention_days: 7
check_interval_minutes: 5 # Default, kann pro Account überschrieben werden
# Rate Limiting (global)
max_actions_per_minute: 100 # Max. Aktionen pro Minute
max_actions_per_hour: 1000 # Max. Aktionen pro Stunde
rate_limit_cleanup_interval_hours: 1 # Intervall für Bereinigung alter Rate-Limit-Timestamps
# Script-Sicherheit
script_whitelist: [] # Liste erlaubter Script-Pfade (leer = alle erlaubt)
# Beispiel: ["scripts/process_report.sh", "scripts/backup.sh"]
# Error-Notifications (optional)
error_notifications:
enabled: false
to: "admin@example.com"
# Täglicher Report (optional)
daily_report:
enabled: false
to: "admin@example.com"
time: "08:00" # HH:MM
Parameter-Referenz
| Parameter | Beschreibung | Standard |
|---|---|---|
log_level |
Logging-Level (DEBUG, INFO, WARNING, ERROR) | INFO |
log_file |
Pfad zur Log-Datei | logs/mail-filter.log |
state_db |
Pfad zur SQLite-Datenbank für State-Management | state/mail_filter.db |
state_backup_enabled |
Automatische Backups der State-DB aktivieren | true |
state_backup_interval_hours |
Intervall für State-Backups | 24 |
state_backup_retention_days |
Wie lange Backups aufbewahrt werden | 7 |
check_interval_minutes |
Standard-Intervall für E-Mail-Checks | 5 |
max_actions_per_minute |
Globales Limit für Aktionen pro Minute | 100 |
max_actions_per_hour |
Globales Limit für Aktionen pro Stunde | 1000 |
rate_limit_cleanup_interval_hours |
Intervall für Bereinigung alter Rate-Limit-Timestamps | 1 |
script_whitelist |
Liste erlaubter Script-Pfade (leer = alle erlaubt) | [] |
Error-Notifications
Automatische E-Mail-Benachrichtigung bei Fehlern:
error_notifications:
enabled: true
to: "admin@example.com"
Hinweis: Benötigt einen Account mit SMTP-Konfiguration.
Täglicher Report
Tägliche Zusammenfassung der Filter-Aktivitäten:
daily_report:
enabled: true
to: "admin@example.com"
time: "08:00" # HH:MM Format
Enthält Statistiken über alle Aktionen und erreichte Filter-Limits.
Credentials
Credentials-Dateien (config/credentials/*.cred)
Erstelle Credentials-Dateien im Format:
username=user@example.com
password=yourpassword
Wichtig: Setze Dateiberechtigungen auf 600 (nur Besitzer lesbar):
chmod 600 config/credentials/*.cred
Separate SMTP-Credentials
Falls SMTP andere Credentials benötigt als IMAP, erstelle eine separate Datei:
# IMAP-Credentials
config/credentials/work_imap.cred
username=work@example.com
password=imap_password
# SMTP-Credentials
config/credentials/work_smtp.cred
username=work@example.com
password=smtp_password
Dann in config.yaml:
accounts:
- name: "work"
imap:
credentials_file: "work_imap.cred"
smtp:
credentials_file: "work_smtp.cred"
Account-Konfiguration
Jeder Account benötigt:
name: Eindeutiger Account-Nameimap: IMAP-Konfiguration (siehe Accounts)smtp: SMTP-Konfiguration (optional, siehe Accounts)check_interval_minutes: Intervall für E-Mail-Checks (überschreibt General-Setting)recovery_message_count: Anzahl der letzten Nachrichten, die bei State-Verlust erneut verarbeitet werdenattachment_base_directory: Basis-Verzeichnis für gespeicherte Anhängefilters_file: Pfad zur Filterregel-Dateitrash_folder: Ordner für gelöschte E-Mails (wenndeleteverwendet wird)max_actions_per_filter: Max. Aktionen pro Filter pro Durchlauf (0 = unbegrenzt)
Siehe Accounts für detaillierte Informationen zur Account-Konfiguration.
Filterregeln
Filterregeln werden in separaten YAML-Dateien gespeichert (z.B. filters/work_rules.yaml). Siehe Filter für Details.
Weitere Informationen
- Accounts - IMAP- und SMTP-Konfiguration
- Filter - Filterregeln erstellen
- Sicherheit - Sicherheitsfeatures