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_hoursStunden erstellt - Alte Backups werden nach
state_backup_retention_daysTagen 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:
-
Die State-Datenbank löschen:
rm state/mail_filter.db -
Den
--reprocess-allParameter 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
- Konfiguration - Konfigurationsoptionen
- Verwendung - CLI-Befehle