Zum Inhalt springen
ecdsa.com
OpenDKIM (Authentication-Results header added by the opendkim milter); mailauth reports the same as "bad signature"DKIM

Fehlermeldung

dkim=fail reason="signature verification failed"

Auch ausgegeben als

  • dkim=fail (bad signature)

OpenDKIM schreibt `dkim=fail reason="signature verification failed"` sowohl bei geänderten Headern als auch bei geändertem Nachrichtentext (reproduziert mit OpenDKIM 2.11.0). mailauth unterscheidet beides: „bad signature“ für die Header, „body hash did not verify“ für den Nachrichtentext.

Was der Fehler bedeutet

Der empfangende Server hat den DKIM-Schlüssel gefunden und die Signatur über die Nachricht in dem Zustand berechnet, in dem sie angekommen ist – und sie stimmte nicht überein: Die signierten Header (bei OpenDKIM auch der Nachrichtentext) haben sich geändert, nachdem der Absender die Nachricht signiert hat, oder der veröffentlichte Schlüssel gehört nicht zum Signaturschlüssel. DKIM signiert exakte Bytes nach der Kanonisierung, deshalb macht jede Änderung durch ein Relay – ein Tag im Betreff, ein Footer, ein neu kodierter MIME-Teil – die Signatur ungültig. Für DMARC zählt das als fehlgeschlagene DKIM-Prüfung.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Signierte Header mit den empfangenen vergleichen

    Das Tag `h=` listet auf, was signiert wurde. Vergleiche diese Header in der empfangenen Kopie mit einer Kopie, die beim Absender entnommen wurde (Ordner „Gesendet“).

    bash
    # Which headers did the signature cover, and what do they look like now?
    grep -i "^DKIM-Signature" -A4 received.eml | grep -o "h=[^;]*"
    grep -iE "^(From|To|Subject|Date|Message-ID|Content-Type):" received.eml
  2. 2.

    Für Mailinglisten und Weiterleitungsdienste: ARC und erneutes Signieren

    Zwischenstationen, die Nachrichten verändern müssen, sollten ARC-Header hinzufügen und mit ihrer eigenen Domain signieren, damit Empfänger die ursprüngliche Authentifizierung weiterhin auswerten können.

    text
    # Mailing list / forwarder: add ARC and re-sign with the list's own domain (Mailman 3 example)
    [ARC]
    enabled: yes
    authserv_id: lists.example.org
    domain: lists.example.org
    selector: arc2026
    privkey: /etc/mailman3/arc.private
  3. 3.

    Schlüssel im DNS gegen den privaten Schlüssel prüfen

    `opendkim-testkey` bestätigt, dass der veröffentlichte Eintrag für den Selektor zu dem Schlüssel passt, den der Signierer verwendet.

    bash
    opendkim-testkey -d example.com -s sel -k /etc/opendkim/keys/sel.private -vvv   # DNS record matches the private key?

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen