Page:
Entwicklung
No results
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
- Repository klonen
- Virtuelle Umgebung erstellen:
python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows - 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
- Fork das Repository
- Erstelle einen Feature-Branch
- Mache deine Änderungen
- Schreibe Tests für neue Features
- Stelle sicher, dass alle Tests bestehen
- Erstelle einen Pull Request
Weitere Informationen
- Home - Übersicht
- Installation - Installation
- Konfiguration - Konfiguration