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

Mensaje de error

dkim=fail reason="signature verification failed"

También se muestra como

  • dkim=fail (bad signature)

OpenDKIM escribe `dkim=fail reason="signature verification failed"` tanto para los cambios en los encabezados como para los cambios en el cuerpo (reproducido con OpenDKIM 2.11.0). mailauth los distingue: «bad signature» para los encabezados y «body hash did not verify» para el cuerpo.

Qué significa

El servidor receptor encontró la clave DKIM y calculó la firma sobre el mensaje tal como llegó, y no coincidió: los encabezados firmados (o, en el caso de OpenDKIM, también el cuerpo) cambiaron después de que el remitente firmara el mensaje, o la clave publicada no corresponde a la clave de firma. DKIM firma bytes exactos después de la canonicalización, así que cualquier reescritura por parte de un servidor de retransmisión (una etiqueta en el asunto, un pie de página, una parte MIME codificada de nuevo) la rompe. A efectos de DMARC, esto cuenta como una comprobación DKIM fallida.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Comparar los encabezados firmados con los recibidos

    La etiqueta `h=` indica qué se firmó. Compara esos encabezados en la copia recibida con una copia tomada en el lado del remitente (la carpeta Enviados).

    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.

    Listas y servicios de reenvío: ARC y una nueva firma

    Los intermediarios que tienen que modificar los mensajes deberían añadir encabezados ARC y firmar con su propio dominio, para que los receptores puedan seguir evaluando la autenticación original.

    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.

    Comprobar que la clave del DNS corresponde a la clave privada

    `opendkim-testkey` confirma que el registro publicado para el selector coincide con la clave que usa el firmante.

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

Errores relacionados

Explorar toda la base de datos de errores de firma