Exim-Falschnegativ bei DKIM-Verifizierung

Exim-Falschnegativ bei DKIM-Verifizierung

Mein Mailserver, der exim4 verwendet, verfügt über eine ACL zur Überprüfung von DKIM-Signaturen. Er akzeptiert alles, protokolliert jedoch Fehler und schreibt einen Header mit den Ergebnissen.

Ich sende E-Mails von einem anderen Server, von dem ich glaube, dass er DKIM-Signaturen korrekt hinzufügt. (Ich habe z. B. E-Mails an Gmail- und Outlook-Adressen gesendet, die Header geprüft und beide Systeme haben DKIM durchgelassen.) Aber mein Mailserver sagt bodyhash_mismatch

Mein Mailserver sagt nicht immer, dass DKIM fehlgeschlagen ist.

Hier ist eine E-Mail. Ich habe die Domänen geändert:

  • example.orgDies ist die Domäne der Hauptorganisation. Sie wird verwendet inAus:Header und es ist die Signiererdomäne. Der öffentliche Schlüssel wird im DNS veröffentlicht.
  • sender.example.orgDies ist der Server, der die E-Mail sendet und den DKIM-Header erstellt. Es ist derDer Weg zurückHeader.
  • receiver.example.orgDies ist die Domäne meines Mailservers, auf der das DKIM überprüft wird. Hier X-dkim-checkwird der Header hinzugefügt, und der folgende Text domain=stammt von$dkim_cur_signer
Return-Path: <[email protected]>
Delivered-To: [email protected]
Received: from mail.receiver.example.org
    by mail.receiver.example.org with LMTP
    id t8rHGepc52SOVA8ADCPZSA
    (envelope-from <[email protected]>)
    for <[email protected]>; Thu, 24 Aug 2023 14:36:42 +0100
Received: from sender-rdns.example.org ([1.2.3.4] helo=sender.example.org)
    by mail.receiver.example.org with esmtps  (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
    (Exim 4.94.2)
    (envelope-from <[email protected]>)
    id 1qZAVv-004DMU-00
    for [email protected]; Thu, 24 Aug 2023 14:36:42 +0100
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
    d=example.org; s=220151210; h=Sender:Message-Id:Subject:From:To:Date:
    Reply-To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
    Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
    :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
    List-Subscribe:List-Post:List-Owner:List-Archive;
    bh=ecGWgWCJeWxJFeM0urOVWP+KOlqqvsQYKOpYUP8nk7I=; b=GTY2HZVje81tRJ0/xKFNUk5d7/
    9wE7CGtwmz2APM5VTDKY6q+qIbwhCRNzc6IWZ4j0Y9FOtnuVBeNR1I5xbOuqPaf62MYQZJFjLQ3/J
    PNpOpS3i1Yd3NCZUs1iB/Q8N+ii73FrvD5k1AA8F5yzJhVeaposgbkvU5vv1s/KgqTIA=;
Received: from localhost ([127.0.0.1] helo=sender.example.org)
    by sender.example.org with esmtp (Exim 4.96)
    (envelope-from <[email protected]>)
    id 1qZAVt-001EhO-2k
    for [email protected];
    Thu, 24 Aug 2023 14:36:41 +0100
Date: Thu, 24 Aug 2023 14:36:41 +0100
To: [email protected]
From: [email protected]
Subject: test Thu, 24 Aug 2023 14:36:41 +0100
Message-Id: <[email protected]>
X-Mailer: swaks v20201014.0 jetmore.org/john/code/swaks/
Sender: [email protected]
X-dkim-check: DKIM test failed: (domain=example.org), signature is bad.

This is a test mailing

Wie kann ich debuggen, warum Exim On receiver.example.orgdenkt, die Signatur sei fehlerhaft?

(Mir fällt auf, dass die DKIM-Signatur viele Header enthält, die nicht existieren. Könnte das ein Grund sein?)

BEARBEITEN: Details hinzufügen:

  • Signiertes Exim: 4.96-15+deb12u1.
  • Empfangendes Exim: 4.94.2-7~bpo10+1

Antwort1

Ich glaube nicht, dass die Meldung „ist schlecht“ einen bestimmten Grund dafür angibt, warum eine Signatur nicht validiert werden konnte. Konfigurieren Sie geeignete Authentication-Results-Header: Diese leitenalles was Exim Ihnen sagtüber $dkim_verify_reason.

Versuchen Sie, genau zu bestimmenwelcheNachrichten schlagen fehl, ich erinnere mich an Beispiele von anderen Prüfern, bei denen es nur bei bestimmten Nachrichten- oder Nachrichtenteilgrößen (blockausgerichtet, <=16 KiB, >=16 MiB ... Ihre Testnachricht sieht klein aus) oder Zeilenlängen (Ihre Testnachricht sieht ordentlich, wenn auch ungewöhnlich, gefaltet aus) zu Ausfällen kam.

Vergleichen Sie auch die Nachrichtenquelle so, wie sie gesendet wurde (idealerweise so, wie sie separat in das SentPostfach hochgeladen wurde). Möglicherweise enthielt sie einen Syntaxfehler, der beim Empfang verworfen wurde, aber für die Signatur von Bedeutung war.

Ideen:

  • Ich sehe in der Signatur ein abschließendes Semikolon und keine Falte vor dem abschließenden b=-Tag. Das ist eher ungewöhnlich – weniger getestet und möglicherweise nicht das, was die Nachricht beim Signieren gezeigt hat.
  • Ich sehe auch eine moderne TLS-Version, die mit einer alten Exim-Version verwendet wird ("Alle Versionen von Eximvor Version 4.96 sind mittlerweile veraltet."). Ich frage mich, ob Sie den Build Ihres Distributors verwenden, bei dem relevante Fixes fehlen, die bereits upstream angewendet wurden.

Ich vermute, dass Letzteres Ihr Problem verursacht, basierend aufdieser Patchwird von Debian nicht angewendetalterstischWenn ja, sollte es in erster Linie kleine Nachrichten betreffen, die per BDAT über TLS übertragen werden.

  1. Update auf neuere Version von Exim - möglicherweise ist ein Debian-Upgrade erforderlich, da Sie bereits auf Backports sind -oder
  2. Debian-Fehlerberichte lesen oder einreichen, der fehlende Fix (Link geht zuausgewählte Version, bereit zur Anwendung auf 4.94.2) Ich vermute, dass ein Fehler als lohnenswert beurteilt werden kann, wenn tatsächlich ein Fehler vorliegt -oder
  3. Deaktivieren Sie die Chunking-Unterstützung (RFC 3030) vollständig, wenn das für Ihren Anwendungsfall in Ordnung ist -leer chunking_advertise_hosts =wird die BDAT-Verfügbarkeit niemandem bekannt geben, das sollte funktionieren – bei großen Nachrichten allerdings möglicherweise mit erheblichen Leistungseinbußen.

verwandte Informationen