Mensaje de error
dkim=permerror
También se muestra como
- dkim=neutral (signature syntax error)
OpenDKIM escribe un simple `dkim=permerror` sin motivo (reproducido con firmas sin `bh=`, con `v=2`, con un `a=` desconocido y con `i=` fuera de `d=`). mailauth notifica los problemas de sintaxis como `dkim=neutral` con un comentario que nombra el problema o, en su defecto, «signature syntax error».
Qué significa
La firma DKIM no se pudo evaluar en absoluto, y reintentar no servirá de nada: el encabezado `DKIM-Signature` tiene un error de sintaxis o infringe las reglas del RFC 6376 (falta una etiqueta obligatoria como `bh=` o `b=`, la versión es desconocida, el algoritmo no es compatible, la identidad `i=` está fuera del dominio `d=`, `From` no está entre los encabezados firmados), o el registro de la clave pública no se puede usar. El RFC 8601 lo llama error permanente. A efectos de DMARC, no es un resultado pass.
Por qué ocurre
Encabezado DKIM-Signature mal formado o truncado
frecuenteCódigo de firma propio que omite etiquetas, servidores de retransmisión que pliegan o truncan mal los encabezados largos, o un encabezado de firma dañado por un cliente de correo que lo volvió a codificar.
Algoritmo que el verificador no admite
ocasional`a=rsa-sha1` (declarado obsoleto por el RFC 8301) o `ed25519-sha256` en un receptor antiguo. Firmar a la vez con RSA-SHA256 y con Ed25519 cubre a todos los receptores.
i= fuera del dominio de firma
ocasionalEl identificador de agente `i=` debe estar en `d=` o en un subdominio suyo. `d=example.com; i=@example.org` no es válido.
El encabezado From no está firmado
ocasionalEl RFC 6376 exige `From` en `h=`. Un firmante configurado con una lista de encabezados personalizada que lo omite produce firmas que los receptores rechazan.
Cómo solucionarlo
- 1.
Listar las etiquetas de la firma
Deshaz el plegado del encabezado y comprueba las etiquetas obligatorias y sus valores; el depurador de DKIM lo hace y nombra la etiqueta problemática.
bash # Show the DKIM-Signature as one line and list its tags awk '/^DKIM-Signature:/{p=1} p&&/^[^ \t]/&&!/^DKIM-Signature:/{p=0} p' message.eml | tr -d '\r\n\t' | tr ';' '\n' # required: v=1 a= b= bh= d= h= (containing "from") s= - 2.
Usar una configuración estándar del firmante
RSA-SHA256 (opcionalmente junto con Ed25519), `From` firmado (y sobrefirmado) y una implementación de firma con mantenimiento en lugar de código propio.
text # OpenDKIM signer: standard algorithm, From always signed SignatureAlgorithm rsa-sha256 OversignHeaders From Canonicalization relaxed/simple
Errores relacionados
dkim=fail reason="signature verification failed"OpenDKIM (Authentication-Results header added by the opendkim milter); mailauth reports the same as "bad signature"dkim=fail reason="key not found in DNS"OpenDKIM (Authentication-Results); mailauth reports it as dkim=neutral (no key)dkim=fail (body hash did not verify)DKIM verifiers (Gmail, mailauth, Rspamd…)