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

Sicherheit

Mail Filter bietet verschiedene Sicherheitsfeatures, um den Betrieb sicher und kontrolliert zu gestalten.

Rate Limiting

Globale Limits verhindern zu viele Aktionen in kurzer Zeit.

Konfiguration

general:
  max_actions_per_minute: 100  # Max. Aktionen pro Minute (global)
  max_actions_per_hour: 1000   # Max. Aktionen pro Stunde (global)
  rate_limit_cleanup_interval_hours: 1  # Intervall für Bereinigung alter Timestamps (Default: 1 Stunde)

Funktionsweise

  • max_actions_per_minute: Globales Limit für Aktionen pro Minute (Rate Limiting)
  • max_actions_per_hour: Globales Limit für Aktionen pro Stunde (Rate Limiting)
  • rate_limit_cleanup_interval_hours: Intervall, in dem alte Timestamps aus der Rate-Limit-Liste entfernt werden. Standard: 1 Stunde. Dies verhindert, dass die Liste unbegrenzt wächst.

Die Rate-Limit-Bereinigung läuft automatisch im Hintergrund und entfernt regelmäßig alte Timestamps, die älter als das konfigurierte Intervall sind.

Wenn ein Limit erreicht ist, werden weitere Aktionen übersprungen (mit Warnung im Log).

Limit pro Filter

Jeder Filter kann eine maximale Anzahl von Aktionen pro Durchlauf haben:

accounts:
  - name: "work"
    max_actions_per_filter: 50  # Max. 50 Aktionen pro Filter

Verhindert, dass ein einzelner Filter zu viele E-Mails auf einmal verarbeitet. Setze auf 0 für unbegrenzt.

Script-Whitelist

Nur explizit erlaubte Scripts werden ausgeführt:

general:
  script_whitelist:
    - "scripts/process_report.sh"
    - "scripts/backup.sh"
    - "/usr/local/bin/custom_script.sh"

Wichtig: Wenn script_whitelist leer ist, sind alle Scripts erlaubt. Für Produktionsumgebungen sollte immer eine Whitelist konfiguriert werden.

Script-Sicherheit

Scripts werden nur ausgeführt, wenn:

  • Der Script-Pfad in der script_whitelist in general steht, ODER
  • Die script_whitelist leer ist (alle Scripts erlaubt)

Best Practice: Konfiguriere immer eine Whitelist in Produktionsumgebungen.

Delete → Trash

E-Mails werden nicht wirklich gelöscht, sondern in einen Trash-Ordner verschoben:

accounts:
  - name: "work"
    trash_folder: "Trash"  # Standard-Trash
  - name: "gmail"
    trash_folder: "[Gmail]/Trash"  # Gmail-spezifischer Trash-Ordner

Falls kein trash_folder konfiguriert ist, wird die E-Mail wirklich gelöscht. Vorsicht: Echte Löschungen können nicht rückgängig gemacht werden.

Credentials-Sicherheit

Dateiberechtigungen

Credentials-Dateien sollten nur für den Besitzer lesbar sein:

chmod 600 config/credentials/*.cred

Separate Credentials

Verwende separate Credentials-Dateien für IMAP und SMTP, wenn möglich:

accounts:
  - name: "work"
    imap:
      credentials_file: "work_imap.cred"
    smtp:
      credentials_file: "work_smtp.cred"

Error-Notifications

Automatische E-Mail-Benachrichtigung bei Fehlern:

general:
  error_notifications:
    enabled: true
    to: "admin@example.com"

Benötigt einen Account mit SMTP-Konfiguration. Aktiviert dich über kritische Fehler.

Täglicher Report

Tägliche Zusammenfassung der Filter-Aktivitäten:

general:
  daily_report:
    enabled: true
    to: "admin@example.com"
    time: "08:00"  # Zeit für Report (HH:MM)

Enthält Statistiken über alle Aktionen und erreichte Filter-Limits. Nützlich zur Überwachung und Erkennung von Anomalien.

Best Practices

  1. Script-Whitelist konfigurieren: In Produktionsumgebungen immer eine Whitelist für Scripts definieren
  2. Rate Limiting aktivieren: Setze angemessene Limits, um Überlastung zu vermeiden
  3. Filter-Limits setzen: Begrenze die Anzahl der Aktionen pro Filter
  4. Trash-Ordner konfigurieren: Verhindere echte Löschungen durch Konfiguration eines Trash-Ordners
  5. Credentials schützen: Setze Dateiberechtigungen auf 600
  6. Monitoring aktivieren: Nutze Error-Notifications und tägliche Reports
  7. Dry-Run testen: Teste neue Filter immer mit --dry-run zuerst
  8. Logs überwachen: Prüfe regelmäßig die Log-Dateien

Weitere Informationen