SPF, DKIM y DMARC para Amazon SES.
Amazon SES es un remitente "por cuenta": no existe una línea SPF compartida que puedas pegar en tu dominio raíz ni un asistente de autenticación de dominio que gestione tu DNS por ti. Verificas tu dominio y activas Easy DKIM —tres registros CNAME por cuenta que SES genera— y, dado que el remitente de sobre predeterminado de SES vive en amazonses.com, opcionalmente añades un subdominio MAIL FROM personalizado para conseguir también que SPF quede alineado con tu propio dominio. Una vez que los CNAME de DKIM resuelven, SES firma cada mensaje con d=yourdomain.com, de modo que DMARC pasa por alineación de DKIM incluso antes de que toques SPF.
¿Por qué autenticar Amazon SES?
SES te entrega una infraestructura de envío pura y de alta entregabilidad, pero deliberadamente no publica la autenticación en tu nombre como sí hace el asistente de Mailchimp o SendGrid: esa carga es tuya, y saltártela es la razón por la que el correo de SES acaba tan a menudo en spam. Desde febrero de 2024, Gmail y Yahoo exigen que todo remitente masivo (aproximadamente 5000+ mensajes al día) pase SPF, DKIM y DMARC con alineación, y Microsoft empezó a rechazar el correo no conforme en 2025. Si envías a través de SES sin activar Easy DKIM, tus mensajes se firman únicamente con la clave compartida de amazonses.com, nada se alinea con tu dominio, DMARC falla y tu reputación se agrupa con la del resto de inquilinos de SES sin autenticar. Activar Easy DKIM resuelve el núcleo de esto de un solo golpe: SES firma como d=yourdomain.com, DKIM se alinea, DMARC pasa y la reputación de envío que construyes se acumula en tu propio dominio. Un dominio MAIL FROM personalizado añade después la alineación de SPF por encima, para los receptores que la ponderan.
La realidad del SPF con Amazon SES
Amazon SES es un proveedor por cuenta, no un proveedor de "include": para la mayoría de la gente NO hay ningún include:amazonses.com que añadir a tu registro SPF RAÍZ, y no deberías añadir uno ahí. Por defecto, SES fija el MAIL FROM del sobre (la dirección Return-Path / de rebotes) a un subdominio de amazonses.com. Por tanto, SPF se comprueba contra el propio registro publicado de amazonses.com y PASA automáticamente, pero pasa para amazonses.com, no para tu dominio, así que no está "alineado" y por sí solo no hace nada por DMARC. Eso es intencionado y está bien, porque Easy DKIM lleva DMARC mediante la alineación de DKIM (SES firma con d=yourdomain.com). Si además quieres SPF alineado con tu dominio —por si acaso, y útil porque algunos receptores ponderan la alineación de SPF—, configuras un subdominio MAIL FROM personalizado (por ejemplo mail.yourdomain.com) y publicas v=spf1 include:amazonses.com ~all más un registro MX que apunte a feedback-smtp.{region}.amazonses.com. Y algo crucial: esos dos registros van en el SUBDOMINIO MAIL FROM, nunca en tu SPF raíz. Tu SPF raíz queda intacto, SES no le añade ninguna consulta DNS, e include:amazonses.com aparece solo en ese subdominio dedicado.
Dos formas de configurarlo
Easy DKIM — 3 CNAME (recomendado)
- SES genera un par de claves RSA de 2048 bits y tú publicas tres tokens CNAME que delegan la clave de vuelta a SES
- SES retiene y rota la clave privada: no tienes nada que generar, almacenar, respaldar ni rotar
- Publicar los tres CNAME verifica la identidad del dominio y activa la firma DKIM en un solo paso
- Funciona de fábrica con alineación d=yourdomain.com, así que DMARC pasa por DKIM sin cambios en SPF
BYODKIM — 1 TXT (trae tu propia clave)
- Generas tú mismo la clave RSA (1024–2048 bits, PKCS#1 o PKCS#8, base64/PEM) y publicas un único selector._domainkey TXT con la clave pública
- Útil cuando la política te obliga a tener la custodia de la clave, o cuando quieres reutilizar una clave entre proveedores/regiones
- Eres responsable del almacenamiento y la rotación de la clave: SES nunca ve la clave privada
- Un solo registro DNS en lugar de tres, pero sin rotación automática de claves
Paso a paso
- 1
Crea (o abre) la identidad de dominio
Abre la consola de SES en console.aws.amazon.com/ses y, en Configuration, elige Identities → Create identity → Domain. Introduce yourdomain.com. Si el dominio ya existe, ábrelo y usa la pestaña Authentication en su lugar.
- 2
Deja Easy DKIM en RSA_2048
En los ajustes avanzados de DKIM deja Identity type = Easy DKIM y DKIM signing key length = RSA_2048_BIT (el valor predeterminado y la opción más fuerte; RSA_1024_BIT es solo un ajuste heredado más débil). Asegúrate de que DKIM signatures = Enabled. Elige BYODKIM solo si debes aportar tu propia clave.
- 3
(Opcional) Configura un dominio MAIL FROM personalizado
En la página de la identidad, abre el panel Custom MAIL FROM domain → Edit → marca "Use a custom MAIL FROM domain" e introduce un subdominio dedicado como mail.yourdomain.com (que no uses para nada más). Fija Behavior on MX failure en "Use default MAIL FROM domain" mientras el DNS se propaga.
- 4
Añade los tres registros CNAME de DKIM
SES muestra tres registros con la forma token1._domainkey → token1.dkim.amazonses.com (token2, token3 igual). Añade cada uno como un CNAME exactamente como se muestra. Publicarlos verifica el dominio y habilita DKIM: no hay ningún TXT que pegar para Easy DKIM.
- 5
Añade el MX y el SPF del MAIL FROM (solo si activaste el MAIL FROM personalizado)
En el subdominio MAIL FROM añade un registro MX, prioridad 10, valor feedback-smtp.{region}.amazonses.com (específico de la región, p. ej. us-east-1), y un registro TXT v=spf1 include:amazonses.com ~all. Ambos viven en mail.yourdomain.com, no en tu dominio raíz.
- 6
Publica o mantén un único registro DMARC
Añade un registro TXT en _dmarc.yourdomain.com que empiece por v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com. Mantén exactamente un registro _dmarc para todo el dominio: no añadas un segundo para SES.
- 7
Desactiva el proxy de Cloudflare en los CNAME
Si tu DNS está en Cloudflare, pon cada CNAME de DKIM en "DNS only" (nube gris). Un CNAME con proxy en nube naranja no resolverá a *.dkim.amazonses.com y la verificación de DKIM se quedará colgada en pending.
- 8
Espera a que SES detecte los registros
De vuelta en la consola, el estado de DKIM pasa a Verified/Successful y, si configuraste uno, el estado del MAIL FROM personalizado pasa a Success. La detección suele ser cuestión de minutos, pero SES admite hasta 72 horas; SES te envía un correo cuando cada uno se completa.
- 9
Solicita acceso de producción (sal del sandbox)
Las cuentas nuevas empiezan en el sandbox de SES: solo puedes enviar a direcciones verificadas, con un límite de 200 mensajes/día y 1/segundo. En Account dashboard, elige Request production access, o tu correo real nunca saldrá por muy perfecto que sea tu DNS.
- 10
Envía una prueba y lee las cabeceras
Envía un mensaje real desde una dirección del dominio y ábrelo en Gmail → Mostrar original. Confirma DKIM: PASS con d=yourdomain.com, SPF: PASS y DMARC: PASS.
Registros que añadir
Amazon SES genera los valores exactos en su asistente de configuración; estos muestran la forma de lo que añadirás en tu proveedor de DNS.
| Tipo | Host | Valor |
|---|---|---|
| CNAME | token1._domainkey | token1.dkim.amazonses.comClave 1 de Easy DKIM — el token es único de tu cuenta/región y SES rota la clave que hay detrás |
| CNAME | token2._domainkey | token2.dkim.amazonses.comClave 2 de Easy DKIM (token por cuenta) |
| CNAME | token3._domainkey | token3.dkim.amazonses.comClave 3 de Easy DKIM (token por cuenta) |
| MX | feedback-smtp.us-east-1.amazonses.comSolo con MAIL FROM personalizado — prioridad 10, host específico de la región; exactamente un MX en este subdominio | |
| TXT | v=spf1 include:amazonses.com ~allSolo con MAIL FROM personalizado — va en el subdominio MAIL FROM, NO en tu SPF raíz | |
| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.comTu política DMARC — una por dominio, empieza en p=none |
Mantén exactamente un registro TXT de SPF (v=spf1) en tu dominio raíz: fusiona en él todos los remitentes. Tener dos registros SPF es en sí mismo un error.
El presupuesto de 10 consultas
El SPF tiene un límite estricto de 10 consultas DNS: si lo superas, devuelve un permerror y deja de validar en todas partes. Esto es lo que la configuración de Amazon SES consume de ese presupuesto.
La configuración recomendada de Amazon SES añade 0 consultas: las 10 quedan libres para los remitentes que sí necesitan un include.
DKIM
DKIM es el registro que soporta todo el peso en SES, y Easy DKIM lo hace desatendido. Cuando lo activas, SES genera un par de claves RSA de 2048 bits (RSA_2048 es el valor predeterminado de la consola; 1024 bits es solo una opción heredada más débil) y te da tres tokens. Los publicas como CNAME —token1._domainkey.yourdomain.com → token1.dkim.amazonses.com, y lo mismo para token2 y token3—. Ten en cuenta que la longitud de la clave no cambia lo que almacenas: Easy DKIM siempre publica tres CNAME cortos, elijas 1024 o 2048, porque la clave pública real vive en el lado de SES del CNAME, no en tu zona. Como son CNAME delegados a SES en lugar de registros TXT que pegas, SES retiene la clave privada y puede rotar las claves publicadas detrás de esos selectores sin que tú vuelvas a editar el DNS nunca más. Cada mensaje se firma entonces con d=yourdomain.com, que es lo que se alinea para DMARC. En la consola actual de SES, esta misma publicación de CNAME es también lo que verifica la identidad del dominio (verificación basada en DKIM), así que normalmente no hay ningún token TXT _amazonses aparte que añadir. Dos advertencias: en Cloudflare los CNAME deben ser DNS-only (nube gris), y las identidades de SES son por región de AWS: enviar desde una segunda región genera sus propios tres tokens que también debes publicar. Si no puedes usar CNAME, BYODKIM es la alternativa: generas la clave y publicas un único selector._domainkey TXT con la clave pública (y ahí la clave de 2048 bits sí produce un valor TXT más largo que algunos hosts de DNS dividen en varias cadenas), pero entonces tú te encargas de la rotación.
DMARC
DMARC es un registro de política aparte en tu dominio raíz, no algo que SES publique por ti. Añade un registro TXT en _dmarc.yourdomain.com que empiece por v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com — p=none es solo de monitorización, así que no afectará a la entrega mientras confirmas que el correo de SES pasa alineado. El matiz específico de SES: como el MAIL FROM de sobre predeterminado de SES es un subdominio de amazonses.com, SPF pasa pero no está alineado con tu dominio, de modo que en una configuración de SES por defecto DMARC pasa enteramente por la alineación de DKIM. Eso significa que debes tener Easy DKIM (o BYODKIM) activado y verificado antes de endurecer la política: con DKIM apagado, una configuración de SES con MAIL FROM por defecto falla DMARC de plano. Una vez que los informes agregados (rua) confirmen que SES es una fuente constante y alineada durante una o dos semanas, pasa de p=none a p=quarantine y con el tiempo a p=reject. Si además configuras un dominio MAIL FROM personalizado obtendrás alineación de SPF por encima, lo que te da dos formas independientes de pasar. Mantén exactamente un registro _dmarc para todo el dominio, sin importar cuántos remitentes utilices: nunca añadas un segundo para SES.
Comprueba que de verdad funcionó
No te fíes solo de las insignias de la consola: confírmalo en un mensaje real. En SES, el estado de DKIM de la identidad debería aparecer como Verified/Successful y, si configuraste uno, el estado del MAIL FROM personalizado debería aparecer como Success. Luego envíate una prueba desde una dirección del dominio, ábrela en Gmail y elige ⋮ → Mostrar original: quieres ver DKIM: PASS mostrando d=yourdomain.com (no amazonses.com), además de DMARC: PASS. SPF mostrará PASS para tu subdominio MAIL FROM si configuraste uno personalizado, o para amazonses.com si no lo hiciste: el caso de amazonses.com es esperable y DMARC sigue pasando porque DKIM lo lleva, así que no lo tomes como un fallo. Pasa tu dominio por la comprobación de salud de dominio de Qualisend para confirmar que los tres CNAME de DKIM (y el MX/SPF del MAIL FROM, si se usa) resuelven, y una vez que empiecen a llegar los informes agregados de DMARC, mete uno en el analizador de informes DMARC: SES debería aparecer como una fuente alineada y que pasa.
Errores habituales
- Configuración de DNS
SES es por región. Las identidades, los tres tokens de DKIM y el host MX de feedback-smtp están todos limitados a una región de AWS. Si envías desde us-east-1 y eu-west-1, cada región emite sus propios tres CNAME de DKIM y su propio MX regional: publica los registros de cada región o el correo de la región sin configurar no se autenticará.
- Cobertura
Las cuentas nuevas empiezan en el sandbox. Hasta que solicites acceso de producción (Request production access), SES solo entrega a destinatarios verificados, con un límite de 200 mensajes/día y 1/segundo: un DNS perfecto no importará si sigues en el sandbox.
- Cobertura
La alineación de SPF es opcional, no automática. Por defecto el sobre es un subdominio de amazonses.com, así que SPF pasa pero no se alinea y DMARC descansa enteramente en DKIM. Ver "SPF: amazonses.com" es normal: configura un MAIL FROM personalizado solo si quieres específicamente que SPF también se alinee.
- Rompe la autenticación
Nunca añadas include:amazonses.com a tu SPF RAÍZ. Solo corresponde al subdominio MAIL FROM personalizado. En la raíz no hace nada útil y quema innecesariamente una de tus 10 consultas de SPF.
- Cobertura
Exactamente un MX en el subdominio MAIL FROM. SES falla la configuración del MAIL FROM personalizado si ese subdominio tiene más de un registro MX, así que usa un subdominio dedicado (mail. o bounce.) que no se use para enviar ni recibir nada más.
- Configuración de DNS
El proxy de Cloudflare rompe DKIM. Pon los tres CNAME en "DNS only" (nube gris); un CNAME con proxy en nube naranja no resolverá a *.dkim.amazonses.com y la identidad se queda en pending.
- Rompe la autenticación
Duplicación de host en el registrador y puntos finales. Introduce solo la etiqueta (token1._domainkey, mail), no el FQDN completo, si tu panel añade automáticamente el dominio; y donde un host quiera un FQDN para el valor del MX/CNAME, usa un punto final para que feedback-smtp.us-east-1.amazonses.com no se transforme por error en ...amazonses.com.yourdomain.com.
- Cobertura
"Behavior on MX failure = Reject message" es arriesgado al principio. Mientras el DNS se propaga (o si el MX alguna vez no resuelve), Reject rebotará todo tu correo: déjalo en "Use default MAIL FROM domain" hasta que el estado muestre Success.
Crea tu registro SPF
Amazon SES no necesita un include: de SPF en tu dominio raíz: usa el generador para ensamblar un único registro limpio para tus otros remitentes y mantenlo en una sola línea.
Sending sources
Search for each platform you send email through and tick it.
Search for your email platform above, or .
This domain's own servers
Authorize the domain itself, if it sends mail directly (not through a platform above).
Other senders & IPs
Anything not in the list — another provider's SPF host, or specific IP addresses.
We add the include: prefix — enter the hostname your provider documents.
Policy for everyone else
What receivers should do with mail from any server not listed above (the all mechanism).
No senders yet, so every message would hit the ~all policy. Add the platforms you send through in step 1.
- Publish it as a TXT record at your root domain — host @ (the bare domain), value the full string above.
- Keep only one SPF record per domain. Merge every sending source into this single line — a second TXT record starting v=spf1 makes both invalid.
- Stay at or under 10 DNS lookups. Each include:, a and mx counts, and an include can trigger more lookups inside itself — ip4: and ip6: are free.
Authentication published? The next step is sending to a clean, verified list.
Verify a listSPF de Amazon SES — Preguntas frecuentes
Lecturas relacionadas
Una vez publicado, confirma que todo se resuelve con el chequeo de salud del dominio y luego averigua quién envía en tu nombre con el analizador de informes DMARC. Explora todas las fuentes de envío en el generador. Eso sí, la autenticación es solo la mitad de la entregabilidad: una IP o un dominio de envío incluidos en una lista negra te llevan igualmente a spam por muy limpio que esté tu SPF, así que conviene vigilar las listas negras con monitorización de listas negras.
Autenticado: ahora mantén la lista limpia
Pasar SPF, DKIM y DMARC te lleva a la bandeja de entrada; una lista limpia te mantiene ahí. Verifica la tuya: empieza gratis con 100 créditos, sin tarjeta.