Automatische DMARC-Berichtsverarbeitung mit Claude-KI-Analyse und E-Mail-Benachrichtigungen.
- Automatischer IMAP-Abruf: Ruft DMARC-Berichte alle 5 Minuten vom IMAP-Server ab
- XML-Parsing: Verarbeitet Standard-DMARC-Berichte (XML, .gz, .zip)
- Claude-KI-Analyse: Intelligente Analyse mit Anthropics Claude API (Ausgabe auf Deutsch)
- Warnsystem: E-Mail-Benachrichtigungen bei kritischen Problemen über AWS SES
- Web-Dashboard: Flask-basiertes Dashboard zur Visualisierung (komplett auf Deutsch)
- DKIM-Selektor-Tool: Zeigt alle DKIM-Selektoren einer Domain mit DNS-Prüfung
- Magic-Link-Authentifizierung: Passwortloser Login per E-Mail-Link
- Docker-fähig: Läuft als Container, deployed über Coolify (Docker Compose aus Git)
- SQLite-Datenbank: Persistente Speicherung aller Berichte und Analysen
- Python 3.11+ (für lokale Entwicklung)
- Docker & Docker Compose (für Produktion)
- IMAP-Zugang für DMARC-Berichte
- Anthropic API Key (Claude AI)
- AWS SES SMTP-Zugangsdaten (für Warn-E-Mails)
- Repository klonen:
git clone https://github.com/roberteinsle/dmarc-reports-mail.git
cd dmarc-reports-mail- Virtuelle Umgebung erstellen:
python -m venv venv
source venv/bin/activate # Linux/Mac
# oder
venv\Scripts\activate # Windows- Abhängigkeiten installieren:
pip install -r requirements.txt.env-Datei erstellen:
cp .env.example .env
# .env bearbeiten und Zugangsdaten eintragen- Datenbank initialisieren:
python
>>> from app import create_app
>>> from app.models.database import db
>>> app = create_app()
>>> with app.app_context():
>>> db.create_all()
>>> exit()- Anwendung starten:
python run.pyDashboard: http://localhost:5000
-
Neue Ressource erstellen in Coolify → Docker Compose → Git-Repository verbinden
-
Umgebungsvariablen konfigurieren in den Coolify-Ressourceneinstellungen:
FLASK_ENV=production SECRET_KEY=<sicheren-schlüssel-generieren> DATABASE_URL=sqlite:////app/data/dmarc_reports.db # IMAP-Konfiguration IMAP_HOST=<dein-imap-host> IMAP_PORT=993 IMAP_USER=<dein-imap-benutzer> IMAP_PASSWORD=<dein-imap-passwort> IMAP_FOLDER=INBOX # Claude API ANTHROPIC_API_KEY=<dein-anthropic-api-key> # AWS SES SMTP SMTP_HOST=<dein-smtp-host> SMTP_PORT=587 SMTP_USER=<dein-smtp-benutzer> SMTP_PASSWORD=<dein-smtp-passwort> SMTP_FROM=<deine-absender-email> ALERT_RECIPIENT=<empfänger-email> # Authentifizierung (Magic Link) AUTH_EMAIL=<deine-login-email> # Optional SCHEDULER_INTERVAL_MINUTES=5 LOG_LEVEL=INFO
-
Domain konfigurieren: Domain und Port
5000in Coolify setzen — SSL über Let's Encrypt wird automatisch eingerichtet -
Deployen: Coolify baut das Image, erstellt Volumes (
dmarc-data,logs) und startet den Container -
Dashboard aufrufen:
- Konfigurierte Domain verwenden:
https://dmarc.deinedomain.de - Health-Check:
https://dmarc.deinedomain.de/health
- Konfigurierte Domain verwenden:
Detaillierte Deployment-Anleitung: COOLIFY_DEPLOYMENT.md
- Repository klonen:
git clone https://github.com/roberteinsle/dmarc-reports-mail.git
cd dmarc-reports-mail.env-Datei erstellen:
cp .env.example .env
# .env bearbeiten und Zugangsdaten eintragen- Docker-Container bauen und starten:
docker-compose build
docker-compose up -d- Logs prüfen:
docker-compose logs -f- Dashboard öffnen:
http://localhost:5000
- Health-Check:
http://localhost:5000/health
Die gesamte Konfiguration erfolgt über Umgebungsvariablen in der .env-Datei:
# IMAP-Konfiguration
IMAP_HOST=mail.einsle.cloud
IMAP_PORT=993
IMAP_USER=dmarc-reports@einsle.cloud
IMAP_PASSWORD=<dein-passwort>
# Claude API
ANTHROPIC_API_KEY=<dein-anthropic-api-key>
# AWS SES SMTP
SMTP_HOST=email-smtp.eu-central-1.amazonaws.com
SMTP_PORT=587
SMTP_USER=<dein-ses-smtp-benutzer>
SMTP_PASSWORD=<dein-ses-smtp-passwort>
SMTP_FROM=dmarc-reports@einsle.cloud
ALERT_RECIPIENT=robert@einsle.com
# Authentifizierung (Magic Link)
AUTH_EMAIL=robert@einsle.com
# Optional
SCHEDULER_INTERVAL_MINUTES=5
LOG_LEVEL=INFODie App ist per Magic-Link geschützt. Der Ablauf:
- Dashboard öffnen → Anmeldeseite wird angezeigt
- E-Mail-Adresse eingeben (muss mit
AUTH_EMAILübereinstimmen) - Anmelde-Link per E-Mail erhalten (15 Minuten gültig)
- Link klicken → eingeloggt (Session gültig für 7 Tage)
- / - Übersicht mit Statistiken
- /reports - Liste aller verarbeiteten Berichte
- /reports/ - Detailansicht eines Berichts
- /alerts - Warnungsverlauf mit Filterung
- /tools/dkim-selectors - DKIM-Selektor-Abfrage mit DNS-Status
- /health - Health-Check-Endpunkt
GET /api/stats- JSON-Statistiken für DiagrammeGET /health- Health-Status (200 = gesund, 503 = ungesund)
Warnungen werden automatisch gesendet bei:
- DMARC-Fehler: E-Mails mit Disposition = quarantine/reject
- SPF-Fehler: > 5 E-Mails mit SPF-Fehler
- DKIM-Fehler: > 5 E-Mails mit DKIM-Fehler
- Nicht autorisierte Absender: Unbekannte Quellen, identifiziert durch Claude KI
- Anomalien: Verdächtige Muster, erkannt durch Claude KI
Tests ausführen:
pytestMit Coverage:
pytest --cov=app --cov-report=htmlcurl http://localhost:5000/healthAntwort:
{
"status": "healthy",
"database": "connected",
"scheduler": "running",
"last_check": "2025-12-30T10:30:00.000Z"
}Logs befinden sich in logs/:
app.log- Alle Anwendungsereignisseerror.log- Nur Fehler und kritische Meldungen
In Docker:
docker-compose logs -fDie SQLite-Datenbank befindet sich im Docker-Volume dmarc-data.
Backup erstellen:
docker exec dmarc-analyzer sqlite3 /app/data/dmarc_reports.db ".backup /app/data/backup.db"
docker cp dmarc-analyzer:/app/data/backup.db ./backup_$(date +%Y%m%d).dbLösung:
- Logs in Coolify oder via
docker-compose logs -f(lokal) prüfen - Alle Umgebungsvariablen korrekt gesetzt?
- Dienst neustarten
Lösung:
- IMAP-Zugangsdaten in Umgebungsvariablen prüfen
- IMAP-Server-Verbindung überprüfen
- Logs auf spezifische Fehlermeldungen prüfen
Lösung:
- API-Key in Umgebungsvariablen überprüfen
- Rate-Limits prüfen (App hat Retry-Logik mit exponentiellem Backoff)
- Anthropic-Statusseite prüfen
Lösung:
- SMTP-Zugangsdaten in Umgebungsvariablen prüfen
- Warnungskriterien-Konfiguration überprüfen
- Warnung-Drosselung beachten (60-Minuten-Fenster pro Warnungstyp)
- Logs auf SMTP-Fehler prüfen
Lösung:
- Alle erforderlichen Umgebungsvariablen in Coolify-Ressourceneinstellungen gesetzt?
- Persistente Volumes korrekt erstellt?
- Coolify-Deployment-Logs im Deployments-Tab prüfen
- Health-Check-Endpunkt
/healtherreichbar?
Lösung:
- Domain- und Port-Konfiguration in Coolify prüfen (Port muss 5000 sein)
- SSL-Zertifikat in Coolify aktiv?
- DNS zeigt auf den richtigen Server?
- Coolify-Proxy (Traefik) Status in Coolify-Einstellungen prüfen
.env-Datei NIEMALS committen!- Echte Zugangsdaten NIEMALS im Code hartcodieren!
- Docker-Images regelmäßig aktualisieren
- Starke Passwörter verwenden
- IMAP/SMTP nur über verschlüsselte Verbindungen (SSL/TLS)
Dieses Projekt ist für den privaten Gebrauch bestimmt.
Bei Problemen:
- Logs prüfen (Coolify → Ressource → Logs, oder
docker-compose logs -ffür lokal) - Health-Endpunkt prüfen (
/health) - GitHub-Issues erstellen: https://github.com/roberteinsle/dmarc-reports-mail/issues
Robert Einsle (robert@einsle.com)