3 State Management
Ralf Warmuth edited this page 2025-11-24 13:02:53 +01:00

State-Management

Mail Filter verwendet eine SQLite-Datenbank, um verarbeitete E-Mails zu tracken und Doppelverarbeitung zu vermeiden.

Funktionsweise

Verarbeitete E-Mails werden in einer SQLite-Datenbank gespeichert (state/mail_filter.db), um Doppelverarbeitung zu vermeiden. Jede verarbeitete E-Mail wird mit folgenden Informationen gespeichert:

  • Account-Name
  • Ordner-Name
  • E-Mail-UID
  • Verarbeitungszeitstempel

State-Verlust

Bei State-Verlust (z.B. wenn die Datenbank gelöscht wird) werden die letzten X Nachrichten erneut verarbeitet. Die Anzahl ist pro Account konfigurierbar:

accounts:
  - name: "work"
    recovery_message_count: 50  # Letzte 50 Nachrichten werden erneut verarbeitet

Backup-Funktion

Die State-Datenbank wird automatisch gesichert, wenn state_backup_enabled: true gesetzt ist:

general:
  state_backup_enabled: true
  state_backup_interval_hours: 24
  state_backup_retention_days: 7

Parameter

Parameter Beschreibung Standard
state_backup_enabled Automatische Backups aktivieren true
state_backup_interval_hours Intervall für State-Backups 24
state_backup_retention_days Wie lange Backups aufbewahrt werden 7

Backup-Verhalten

  • Backups werden alle state_backup_interval_hours Stunden erstellt
  • Alte Backups werden nach state_backup_retention_days Tagen gelöscht
  • Backups werden im gleichen Verzeichnis wie die State-Datenbank gespeichert

Manuelle State-Verwaltung

State zurücksetzen

Um alle E-Mails erneut zu verarbeiten, kannst du entweder:

  1. Die State-Datenbank löschen:

    rm state/mail_filter.db
    
  2. Den --reprocess-all Parameter verwenden:

    python main.py check --reprocess-all
    

Statistiken zurücksetzen

Die Statistiken können über den reset-statistics Befehl zurückgesetzt werden:

# Alle Statistiken löschen
python main.py reset-statistics --all --confirm

# Statistiken für heute löschen
python main.py reset-statistics --today --confirm

# Statistiken für einen bestimmten Tag löschen
python main.py reset-statistics --day 2024-01-15 --confirm

# Statistiken für eine bestimmte Stunde löschen
python main.py reset-statistics --hour "2024-01-15 14:00" --confirm

Optionen:

  • --all: Löscht alle Statistiken aus der Datenbank
  • --day YYYY-MM-DD: Löscht alle Statistiken für einen bestimmten Tag
  • --hour "YYYY-MM-DD HH:00": Löscht Statistiken für eine bestimmte Stunde
  • --today: Löscht alle Statistiken für heute
  • --confirm: Bestätigt die Löschung (ohne diese Option wird nur eine Warnung angezeigt)

Hinweis: Ohne --confirm wird nur angezeigt, was gelöscht würde, ohne tatsächlich zu löschen.

Siehe auch: Verwendung - Statistiken zurücksetzen

State-Datenbank sichern

Die State-Datenbank kann manuell gesichert werden:

cp state/mail_filter.db state/mail_filter.db.backup

State-Datenbank wiederherstellen

cp state/mail_filter.db.backup state/mail_filter.db

Troubleshooting

State-Datenbank ist korrupt

Wenn die State-Datenbank korrupt ist, kann sie gelöscht und neu erstellt werden:

rm state/mail_filter.db
python main.py check --reprocess-all --limit 100

Zu viele E-Mails werden erneut verarbeitet

Reduziere recovery_message_count in der Account-Konfiguration:

accounts:
  - name: "work"
    recovery_message_count: 10  # Nur letzte 10 Nachrichten

State-Datenbank wird zu groß

Die State-Datenbank wächst mit der Anzahl verarbeiteter E-Mails. Alte Einträge werden nicht automatisch gelöscht. Bei Bedarf kann die Datenbank manuell bereinigt werden.

Weitere Informationen