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

Entwicklung

Informationen für Entwickler, die am Mail Filter Projekt mitarbeiten möchten.

Code-Struktur

src/
├── mail_client.py          # IMAP-Verbindung und E-Mail-Abruf
├── filter_engine.py        # Filter-Logik
├── rule_parser.py          # YAML-Parsing
├── actions.py              # Aktionen (move, delete, forward, reply, script)
├── scheduler.py            # Scheduler und Koordination
├── state_manager.py        # SQLite State-Management
├── credentials_manager.py  # Credentials-Verwaltung
└── logger.py               # Logging-Setup

Hauptkomponenten

mail_client.py

  • IMAP-Verbindung und Authentifizierung
  • E-Mail-Abruf und Parsing
  • Lazy Loading von Body und Anhängen
  • Ordner-Verwaltung

filter_engine.py

  • Prüfung von E-Mails gegen Filterkriterien
  • Kriterien-Logik (AND/OR)
  • Regex-Matching
  • Datum-Parsing

rule_parser.py

  • YAML-Konfiguration laden
  • Filterregeln validieren
  • Account-Konfiguration validieren

actions.py

  • Ausführung von Aktionen (move, delete, forward, reply, script)
  • SMTP-Versand
  • Script-Ausführung mit Umgebungsvariablen

scheduler.py

  • Koordination aller Komponenten
  • Regelmäßige Checks
  • Rate Limiting
  • Error-Handling

state_manager.py

  • SQLite-Datenbank-Verwaltung
  • State-Tracking
  • Backup-Funktionalität

credentials_manager.py

  • Laden von Credentials-Dateien
  • Credentials-Verwaltung

logger.py

  • Logging-Setup
  • Log-Formatierung

Tests

Tests befinden sich im tests/ Verzeichnis.

Tests ausführen

pytest tests/

Spezifische Tests

# Alle Filter-Tests
pytest tests/test_filter_*.py

# Sicherheits-Tests
pytest tests/test_security_*.py

# Kriterien-Tests
pytest tests/test_criteria_*.py

Entwicklungsumgebung

Setup

  1. Repository klonen
  2. Virtuelle Umgebung erstellen:
    python -m venv venv
    source venv/bin/activate  # Linux/Mac
    venv\Scripts\activate     # Windows
    
  3. Abhängigkeiten installieren:
    pip install -r requirements.txt
    pip install -r requirements-dev.txt  # Falls vorhanden
    

Code-Stil

  • PEP 8 konform
  • Type Hints verwenden
  • Docstrings für alle Funktionen und Klassen

Beitragen

  1. Fork das Repository
  2. Erstelle einen Feature-Branch
  3. Mache deine Änderungen
  4. Schreibe Tests für neue Features
  5. Stelle sicher, dass alle Tests bestehen
  6. Erstelle einen Pull Request

Weitere Informationen