Zum Inhalt

DMARC Reporting

Die DMARC-Berichterstattung erfolgt über das Rspamd DMARC-Modul.

Die Rspamd-Dokumentation finden Sie hier: https://rspamd.com/doc/modules/dmarc.html

Wichtig:

  1. Ändern Sie example.com, mail.example.com und Example so, dass sie Ihrer Einrichtung entsprechen

  2. Die DMARC-Berichterstattung erfordert zusätzliche Aufmerksamkeit, insbesondere in den ersten Tagen

  3. Alle empfangenden Domains, die auf mailcow gehostet werden, senden von einer Reporting-Domain. Es wird empfohlen, die übergeordnete Domain Ihres MAILCOW_HOSTNAME zu verwenden:

    • Wenn Ihr MAILCOW_HOSTNAME mail.example.com ist, ändern Sie die folgende Konfiguration in domain = "example.com";
    • Setzen Sie email gleich, z.B. email = "noreply-dmarc@example.com";
  4. Es ist optional, aber empfohlen, einen E-Mail-Benutzer noreply-dmarc in mailcow zu erstellen, um Bounces zu behandeln.

Aktivieren Sie DMARC-Berichterstattung

Erstellen Sie die Datei data/conf/rspamd/local.d/dmarc.conf und setzen Sie den folgenden Inhalt:

reporting {
    enabled = true;
    email = 'noreply-dmarc@example.com';
    domain = 'example.com';
    org_name = 'Example';
    helo = 'rspamd';
    smtp = 'postfix';
    smtp_port = 25;
    from_name = 'Example DMARC Report';
    msgid_from = 'rspamd.mail.example.com';
    max_entries = 2k;
    keys_expire = 2d;
}

Erstellen oder ändern Sie docker-compose.override.yml im mailcow-dockerized Basisverzeichnis:

version: '2.1'

services:
  rspamd-mailcow:
    environment:
      - MASTER=${MASTER:-y}
    labels:
      ofelia.enabled: "true"
      ofelia.job-exec.rspamd_dmarc_reporting_yesterday.schedule: "@every 24h"
      ofelia.job-exec.rspamd_dmarc_reporting_yesterday.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/bin/rspamadm dmarc_report $(date --date yesterday '+%Y%m%d') > /var/lib/rspamd/dmarc_reports_last_log 2>&1 || exit 0\""
  ofelia-mailcow:
    depends_on:
      - rspamd-mailcow

Starten Sie den mailcow Stack mit:

docker compose up -d
docker-compose up -d

Senden Sie eine Kopie der Berichte an sich selbst

Um eine versteckte Kopie der von Rspamd erzeugten Berichte zu erhalten, können Sie eine bcc_addrs Liste im reporting Konfigurationsabschnitt von data/conf/rspamd/local.d/dmarc.conf setzen:

reporting {
    enabled = true;
    email = 'noreply-dmarc@example.com';
    bcc_addrs = ["noreply-dmarc@example.com", "parsedmarc@example.com"];
[...]

Rspamd lädt Änderungen in Echtzeit, so dass Sie den Container zu diesem Zeitpunkt nicht neu starten müssen.

Dies kann nützlich sein, wenn Sie...

  • ...überprüfen wollen, ob Ihre DMARC-Berichte korrekt und authentifiziert gesendet werden.
  • ...Ihre eigenen Berichte analysieren wollen, um Statistiken zu erhalten, z.B. um sie mit ParseDMARC oder anderen Analysesystemen zu verwenden.

Fehlersuche

Prüfen Sie, wann der Berichtsplan zuletzt ausgeführt wurde:

docker compose exec rspamd-mailcow date -r /var/lib/rspamd/dmarc_reports_last_log
docker-compose exec rspamd-mailcow date -r /var/lib/rspamd/dmarc_reports_last_log

Sehen Sie sich die letzte Berichtsausgabe an:

docker compose exec rspamd-mailcow cat /var/lib/rspamd/dmarc_reports_last_log
docker-compose exec rspamd-mailcow cat /var/lib/rspamd/dmarc_reports_last_log

Manuelles Auslösen eines DMARC-Berichts:

docker compose exec rspamd-mailcow rspamadm dmarc_report
docker-compose exec rspamd-mailcow rspamadm dmarc_report

Bestätigen Sie, dass Rspamd Daten in Redis aufgezeichnet hat: Ändern Sie 20220428 in Ihr gewünschtes Datum zum überprüfen.

docker compose exec redis-mailcow redis-cli SMEMBERS "dmarc_idx;20220428"
docker-compose exec redis-mailcow redis-cli SMEMBERS "dmarc_idx;20220428"

Nehmen Sie eine der Zeilen aus der Ausgabe, die Sie interessiert, und fordern Sie sie an, z. B.:

docker compose exec redis-mailcow redis-cli ZRANGE "dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428" 0 49
docker-compose exec redis-mailcow redis-cli ZRANGE "dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428" 0 49

Ändern Sie die Häufigkeit der DMARC-Berichte

Im obigen Beispiel werden die Berichte einmal alle 24 Stunden sowie für den gestrigen Tag versendet. Dies ist für die meisten Konfigurationen ausreichend.

Wenn Sie ein großes E-Mail-Aufkommen haben und die DMARC-Berichterstattung mehr als einmal am Tag durchführen wollen, müssen Sie einen zweiten Zeitplan erstellen und ihn mit dmarc_report $(date '+%Y%m%d') ausführen, um den aktuellen Tag zu verarbeiten. Sie müssen sicherstellen, dass der erste Lauf an jedem Tag auch den letzten Bericht vom Vortag verarbeitet, also muss er zweimal gestartet werden, einmal mit $(date --date yesterday '+%Y%m%d') um 0 5 0 * * * (00:05 AM) und dann mit $(date '+%Y%m%d') mit dem gewünschten Intervall.

Der Ofelia-Zeitplan hat die gleiche Implementierung wie cron in Go, die unterstützte Syntax ist beschrieben in cron Documentation

Um den Zeitplan zu ändern:

  1. docker-compose.override.yml bearbeiten:

    version: '2.1'
    
    services:
      rspamd-mailcow:
        environment:
          - MASTER=${MASTER:-y}
        labels:
          ofelia.enabled: "true"
          ofelia.job-exec.rspamd_dmarc_reporting_yesterday.schedule: "0 5 0 * * *"
          ofelia.job-exec.rspamd_dmarc_reporting_yesterday.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/bin/rspamadm dmarc_report $(date --date yesterday '+%Y%m%d') > /var/lib/rspamd/dmarc_reports_last_log 2>&1 || exit 0\""
          ofelia.job-exec.rspamd_dmarc_reporting_today.schedule: "@every 12h"
          ofelia.job-exec.rspamd_dmarc_reporting_today.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/bin/rspamadm dmarc_report $(date '+%Y%m%d') > /var/lib/rspamd/dmarc_reports_last_log 2>&1 || exit 0\""
      ofelia-mailcow:
        depends_on:
          - rspamd-mailcow
    

  2. Starten Sie die betroffenen Container neu:

    docker compose up -d
    
    docker-compose up -d
    
  3. Führen Sie einen Neustart nur von Ofelia aus:

    docker compose restart ofelia-mailcow
    
    docker-compose restart ofelia-mailcow
    

DMARC-Berichterstattung deaktivieren

Zum Deaktivieren der Berichterstattung:

  1. Setzen Sie enabled auf false in data/conf/rspamd/local.d/dmarc.conf.

  2. Machen Sie Änderungen in docker-compose.override.yml an rspamd-mailcow und ofelia-mailcow rückgängig

  3. Starten Sie die betroffenen Container neu:

    docker compose up -d
    
    docker-compose up -d