Cómo se usa
- Genera un par de claves en tu servidor de correo o copia la clave pública de los ajustes DKIM de tu proveedor.
- Escribe el selector con el que firma el servidor y tu dominio.
- Pega la clave pública: sirven bloques PEM, Base64 sin más y registros antiguos del tipo
v=DKIM1; … p=…. - Copia el nombre de host y el valor TXT a tu panel DNS, o la línea de zona a un archivo de zona BIND.
Cómo funciona
El registro sigue el RFC 6376: primero v=DKIM1, después k= con el tipo de clave y p= con la clave en Base64. Las etiquetas opcionales son h=sha256 (aceptar solo firmas SHA-256) y t= con las marcas y (prueba) y s (el dominio i= de la firma debe ser igual a d=, sin subdominios).
La clave se decodifica y su tipo se lee de la estructura DER:
- RSA: una clave SubjectPublicKeyInfo (el PEM que empieza por
MIIB…) se usa tal cual. Una clave PKCS#1 (BEGIN RSA PUBLIC KEY) se envuelve en SubjectPublicKeyInfo, la forma que suelen llevar los registros DKIM. El tamaño es la longitud del módulo. El RFC 8301 dice que los firmantes deben usar al menos 1024 bits y deberían usar al menos 2048, así que las claves más cortas se rechazan y las de 1024 bits reciben un aviso. - Ed25519: el RFC 8463 pone en
p=la clave en bruto de 32 bytes, así que de un bloque SubjectPublicKeyInfo se toman esos 32 bytes.
Para el archivo de zona el valor se corta en cadenas de 255 caracteres, porque una cadena TXT admite como máximo 255 bytes.
Ejemplo
Con el selector mail, el dominio example.com y la clave RSA de 2048 bits del formulario, el registro es:
- Nombre de host:
mail._domainkey.example.com - Valor:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA…IDAQAB, de 410 caracteres. - Archivo de zona: dos cadenas, de 255 y 155 caracteres.
Consejos
- Comprueba el registro tras publicarlo:
dig TXT mail._domainkey.example.com +shortdebe mostrar el valor. - Al rotar claves, deja publicado el selector antiguo unos días para que los mensajes firmados antes del cambio sigan verificándose.
- DKIM funciona mejor junto con SPF y una política DMARC.