3 Konfiguration
Ralf Warmuth edited this page 2025-11-20 22:58:19 +01:00

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.yaml
  • credentials_dir: <config-dir>/credentials
  • filters_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-Name
  • imap: 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 werden
  • attachment_base_directory: Basis-Verzeichnis für gespeicherte Anhänge
  • filters_file: Pfad zur Filterregel-Datei
  • trash_folder: Ordner für gelöschte E-Mails (wenn delete verwendet 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