Zum Hauptmenü

Einrichtung von dmarcts-report-parser auf Debian

Jörg Kruse

Mit einem DMARC-Record im DNS kann nicht nur festgelegt werden, wie mit Emails zu verfahren ist, die mit den SPF- und DKIM-Einträgen nicht konform gehen. Im Parameter rua kann auch eine Adresse angegeben werden, an welche die Mailserver aggregierte Berichte senden können, wie hier z. B. die Adresse dmarc@example.org:

_dmarc	3600	IN	TXT	"v=DMARC1;p=quarantine;rua=mailto:dmarc@example.org"

Die Berichte werden als XML-Dateien im Anhang versandt. Der Paketmanager von Debian bietet gleich drei verschiedene Tools zur Installation an, welche die XML-Dateien parsen können: dmarc-cat, dmarc-srg und dmarcts-report-parser. Mit letzterem kann auch direkt auf das IMAP-Konto zugegriffen werden, in welchem die Berichte landen. Die extrahierten Daten werden dabei in einer Datenbank gespeichert.

Da dmarcts-report-parser im Debian-Repo von Trixie enthalten ist, ist die Installation einfacher als auf der Github-Seite angegeben:

# apt install dmarcts-report-parser

Nach der Installation muss manuell eine MariaDB oder PostgreSQL Datenbank angelegt werden. In der Datei /etc/dmarcts-report-parser.conf werden dann die Zugangsdaten zu dieser Datenbank eingetragen, ebenso die Zugangsdaten zum IMAP-Konto sowie ggf. – entsprechend den erläuternden Kommentaren – weitere Einstellungen. Bei der Angabe von Unterordnern funktionierte in meinem Fall (Dovecot mit Maildir auf dem Server) die Trennung mit einem Slash nicht, stattdessen mit einem Punkt:

$imapmovefolder = 'dmarc.processed';

Nachdem die Konfiguratiosndatei fertiggestellt ist, kann ein erster Prozess angestoßen werden:

# dmarcts-report-parser -i

In der Datenbank sollten dann die Tabellen rptrecord und report mit den geparsten Einträgen gespeichert sein. Wenn alles ordnungsgemäß verlaufen ist, kann in der Datei /etc/default/dmarcts-report-parser der täglich laufende Cronjob bzw. Timer, der bereits bei der Installation von dmarcts-report-parser eingerichet wurde, „scharf geschaltet“ werden:

# This tool/script is run via CRON only if the below IS_CONFIGURED variable is set to "1"
IS_CONFIGURED="1"

Um die Daten der Datenbanktabellen besser zu erfassen, können entsprechende Views eingerichtet werden. So z. B. die neuesten Einträge zuoberst, beschränkt auf die Auswertungsdaten der empfangenden Mailserver:

CREATE VIEW view_dmarc AS
SELECT DATE(rep.maxdate) AS rep_date, rep.domain,
    IF(rec.ip IS NULL, INET6_NTOA(rec.ip6), INET_NTOA(rec.ip)) AS ip, rep.org,
    rec.dkimresult AS dkim, rec.dkim_align, rec.spfresult AS spf, rec.spf_align,
    rec.disposition
FROM rptrecord AS rec
INNER JOIN report AS rep
ON rec.serial = rep.serial
ORDER BY rep_date DESC

Mit einem ergänzendem Statement WHERE disposition != "none" ließe sich der View auch auf die problematischen Einträge beschränken, bei denen Emails geblockt oder in die Quarantäne verschoben wurden.

Tags: Debian, DMARC

Kommentar schreiben

Erlaubte HTML-Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Kommentare werden erst nach Freischaltung veröffentlicht