6 Verwendung
Ralf Warmuth edited this page 2025-11-24 13:02:53 +01:00

Verwendung

Mail Filter wird über die Kommandozeile gesteuert. Es gibt zwei Möglichkeiten, das Tool zu verwenden:

Mit Wrapper-Script (Empfohlen)

Nach der Installation des Wrappers (siehe Installation):

mail-filter run
mail-filter check
mail-filter test-connection <account-name>

Der Wrapper aktiviert automatisch das venv (falls vorhanden) und ist für systemd-Services geeignet.

Direkt mit Python

Alternativ kannst du das Tool direkt mit Python aufrufen:

python main.py run
python main.py check
python main.py test-connection <account-name>

Hinweis: Wenn du ein venv verwendest, stelle sicher, dass es aktiviert ist, oder verwende den Wrapper-Script.

Allgemeine Parameter

Alle Befehle unterstützen:

  • --config <pfad>: Pfad zur Konfigurationsdatei (Standard: config/config.yaml)

Beispiele:

# Standard-Konfiguration (config/config.yaml)
mail-filter run

# Externe Konfiguration (z.B. getrenntes Config-Repo)
mail-filter --config /opt/mail-filter-config/config/config.yaml run

# Alternative Konfigurationsdatei
mail-filter --config /etc/mail-filter/config.yaml check

Hinweis: Mit --config kannst du eine Konfigurationsdatei an beliebiger Stelle angeben. Die Pfade zu accounts.yaml, credentials/ und filters/ werden automatisch relativ zum Verzeichnis der config.yaml aufgelöst (siehe Konfiguration).

Befehle

Scheduler starten

Startet den Scheduler, der regelmäßig alle konfigurierten Accounts prüft.

Mit Wrapper:

mail-filter run

Direkt mit Python:

python main.py run

Zusätzliche Parameter für run:

  • --reprocess-all: Alle Nachrichten erneut verarbeiten (ignoriert State)
  • --reprocess-last N: Letzte N Nachrichten erneut verarbeiten
  • --account <name>: Nur bestimmten Account verarbeiten
  • --folder <name>: Nur bestimmten Ordner verarbeiten
  • --limit N: Maximale Anzahl zu verarbeitender Nachrichten
  • --dry-run: Nur anzeigen, keine Änderungen durchführen

Einmaliger Check

Führt einen einmaligen Check durch (ohne Scheduler).

Mit Wrapper:

mail-filter check

Direkt mit Python:

python main.py check

Parameter für check:

  • --account <name>: Nur bestimmten Account verarbeiten (optional, wenn nicht angegeben werden alle Accounts verarbeitet)
  • --reprocess-all: Alle Nachrichten erneut verarbeiten (ignoriert State)
  • --reprocess-last N: Letzte N Nachrichten erneut verarbeiten
  • --folder <name>: Nur bestimmten Ordner verarbeiten
  • --limit N: Maximale Anzahl zu verarbeitender Nachrichten
  • --dry-run: Nur anzeigen, keine Änderungen durchführen

Verbindung testen

Testet die IMAP-Verbindung für einen Account.

Mit Wrapper:

mail-filter test-connection <account-name>

Direkt mit Python:

python main.py test-connection <account-name>

Konfiguration validieren

Validiert die Konfigurationsdatei und alle Filterregeln.

Mit Wrapper:

# Standard-Konfiguration
mail-filter validate-config

# Externe Konfiguration
mail-filter --config /opt/mail-filter-config/config/config.yaml validate-config

Direkt mit Python:

# Standard-Konfiguration
python main.py validate-config

# Externe Konfiguration
python main.py --config /opt/mail-filter-config/config/config.yaml validate-config

Beispiele

Scheduler

Mit Wrapper:

# Scheduler starten
mail-filter run

# Alle Mails eines Accounts erneut verarbeiten
mail-filter run --reprocess-all --account work

# Letzte 100 Mails eines Accounts erneut verarbeiten
mail-filter run --reprocess-last 100 --account work

# Nur letzte 50 Mails verarbeiten
mail-filter run --limit 50

# Dry-Run für bestimmten Ordner
mail-filter run --account work --folder INBOX --dry-run

Direkt mit Python:

# Scheduler starten
python main.py run

# Alle Mails eines Accounts erneut verarbeiten
python main.py run --reprocess-all --account work

# Letzte 100 Mails eines Accounts erneut verarbeiten
python main.py run --reprocess-last 100 --account work

# Nur letzte 50 Mails verarbeiten
python main.py run --limit 50

# Dry-Run für bestimmten Ordner
python main.py run --account work --folder INBOX --dry-run

Einmaliger Check

Mit Wrapper:

# Einmaliger Check für alle Accounts
mail-filter check

# Einmaliger Check für bestimmten Account
mail-filter check --account work

# Nur letzte 100 Nachrichten verarbeiten
mail-filter check --limit 100

# Letzte 50 Nachrichten eines Accounts erneut verarbeiten
mail-filter check --account work --reprocess-last 50

# Dry-Run für bestimmten Ordner
mail-filter check --account work --folder INBOX --dry-run

# Alle Nachrichten eines Accounts erneut verarbeiten (mit Limit)
mail-filter check --account work --reprocess-all --limit 200

Direkt mit Python:

# Einmaliger Check für alle Accounts
python main.py check

# Einmaliger Check für bestimmten Account
python main.py check --account work

# Nur letzte 100 Nachrichten verarbeiten
python main.py check --limit 100

# Letzte 50 Nachrichten eines Accounts erneut verarbeiten
python main.py check --account work --reprocess-last 50

# Dry-Run für bestimmten Ordner
python main.py check --account work --folder INBOX --dry-run

# Alle Nachrichten eines Accounts erneut verarbeiten (mit Limit)
python main.py check --account work --reprocess-all --limit 200

Verbindung testen

Mit Wrapper:

# Verbindung zu einem Account testen
mail-filter test-connection work

Direkt mit Python:

# Verbindung zu einem Account testen
python main.py test-connection work

Konfiguration validieren

Mit Wrapper:

# Standard-Konfiguration validieren
mail-filter validate-config

# Alternative Konfigurationsdatei validieren
mail-filter --config config/config-test.yaml validate-config

Direkt mit Python:

# Standard-Konfiguration validieren
python main.py validate-config

# Alternative Konfigurationsdatei validieren
python main.py --config config/config-test.yaml validate-config

Statistiken zurücksetzen

Mit Wrapper:

# Alle Statistiken löschen
mail-filter reset-statistics --all --confirm

# Statistiken für heute löschen
mail-filter reset-statistics --today --confirm

# Statistiken für einen bestimmten Tag löschen
mail-filter reset-statistics --day 2024-01-15 --confirm

# Statistiken für eine bestimmte Stunde löschen
mail-filter reset-statistics --hour "2024-01-15 14:00" --confirm

# Ohne --confirm wird nur eine Warnung angezeigt
mail-filter reset-statistics --today

Direkt mit Python:

# 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

# Ohne --confirm wird nur eine Warnung angezeigt
python main.py reset-statistics --today

Parameter-Referenz

--limit N

Begrenzt die Anzahl der zu verarbeitenden Nachrichten. Nützlich für Tests oder wenn nur eine bestimmte Anzahl verarbeitet werden soll.

Beispiele:

python main.py check --limit 100
python main.py run --account work --limit 50

--reprocess-all

Verarbeitet alle Nachrichten erneut, unabhängig vom State. Ignoriert die State-Datenbank.

Beispiele:

python main.py check --reprocess-all --account work
python main.py run --reprocess-all --limit 200

--reprocess-last N

Verarbeitet die letzten N Nachrichten erneut.

Beispiele:

python main.py check --reprocess-last 100 --account work
python main.py run --reprocess-last 50

--account <name>

Begrenzt die Verarbeitung auf einen bestimmten Account.

Beispiele:

python main.py check --account work
python main.py run --account work --limit 50

--folder <name>

Begrenzt die Verarbeitung auf einen bestimmten Ordner.

Beispiele:

python main.py check --account work --folder INBOX
python main.py run --folder INBOX.Important --dry-run

--dry-run

Zeigt an, was passieren würde, ohne tatsächlich Änderungen vorzunehmen. Nützlich zum Testen von Filtern.

Beispiele:

python main.py check --account work --dry-run
python main.py run --folder INBOX --dry-run

--config <pfad>

Verwendet eine alternative Konfigurationsdatei. Unterstützt sowohl relative als auch absolute Pfade.

Automatische Pfadauflösung: Wenn config_paths nicht in der 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

Beispiele:

# Relative Pfade (im Code-Repo)
python main.py --config config/config-test.yaml check
python main.py --config config/config-prod.yaml run

# Absolute Pfade (getrenntes Config-Repo)
python main.py --config /opt/mail-filter-config/config/config.yaml run
python main.py --config /etc/mail-filter/config.yaml check

# Mit Wrapper
mail-filter --config /opt/mail-filter-config/config/config.yaml check

Siehe auch: Konfiguration - Getrenntes Config-Repo

reset-statistics Befehl

Setzt Statistiken in der Datenbank zurück. Unterstützt verschiedene Optionen zum selektiven Löschen.

Optionen:

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

Beispiele:

# 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

# Ohne --confirm wird nur eine Warnung angezeigt (keine Löschung)
python main.py reset-statistics --today

Hinweis: Ohne --confirm wird nur angezeigt, was gelöscht würde, ohne tatsächlich zu löschen. Dies ist eine Sicherheitsmaßnahme, um versehentliche Löschungen zu vermeiden.

Siehe auch: State-Management - Statistiken zurücksetzen

Kombination von Parametern

Parameter können kombiniert werden:

# Letzte 50 Nachrichten eines Accounts in einem bestimmten Ordner im Dry-Run-Modus
python main.py check --account work --folder INBOX --reprocess-last 50 --dry-run

# Alle Nachrichten eines Accounts mit Limit
python main.py check --account work --reprocess-all --limit 200

Weitere Informationen