// how to fix
Amazon SES DKIM verification pending or failed: how to fix it
Your Amazon SES domain stays "Pending" or shows DKIM "Failed". Check the three CNAME records, common DNS mistakes and how to restart verification.
What it means
When you add a domain to Amazon SES with Easy DKIM, SES gives you three CNAME records. SES looks for them in your public DNS. Until it finds all three, the domain identity is not verified and SES does not sign your email with DKIM (DomainKeys Identified Mail, a digital signature that proves the message comes from your domain). The DKIM status can be:
PENDING: SES has not found the records yet.SUCCESS: the records were found; signing is active.FAILED: SES gave up, usually because it did not find the records.TEMPORARY_FAILURE: a temporary DNS problem prevents SES from checking.NOT_STARTED: verification was never started.
SES searches for the records for up to 72 hours. After that, a domain still not found switches to Failed.
Why it happens
- Doubled domain name. Many DNS panels add your domain automatically. If you paste
abc123._domainkey.yourdomain.comas the name, the real record becomesabc123._domainkey.yourdomain.com.yourdomain.com. See DNS record added at the wrong name. - Records created as TXT instead of CNAME, or with the value truncated, or with a missing
.dkim.amazonses.comending. - Only one or two of the three records were added.
- Proxy enabled. On Cloudflare, a proxied (orange cloud) CNAME is not returned as a CNAME; see Cloudflare proxied records break email.
- Wrong DNS zone. You edited the zone at your registrar, but the domain uses other name servers (your host, Cloudflare, Route 53...).
- Another Region or account. DKIM is configured per Region and per AWS account. Records created for one Region do not verify the identity in another one, unless you use the feature that replicates keys across Regions.
How to check
In the SES console, open Identities, choose your domain and look at the DKIM section: it lists the three exact records. They look like this (tokens are unique to you):
Name: abc123token1._domainkey.yourdomain.com Type: CNAME Value: abc123token1.dkim.amazonses.com
Query each name from a terminal. A correct answer returns the dkim.amazonses.com target:
dig +short CNAME abc123token1._domainkey.yourdomain.com abc123token1.dkim.amazonses.com. dig +short NS yourdomain.com
The second command shows which name servers really host your zone. You can also run the Delivmail domain scanner on your domain to see the DNS records the world sees. From the CLI, aws sesv2 get-email-identity --email-identity yourdomain.com shows DkimAttributes.Status and the expected tokens.
How to fix it
- Copy the three records exactly. Use the copy buttons or Download .csv record set. If your panel adds the domain itself, enter only
abc123token1._domainkeyas the name. - Use type CNAME and, on Cloudflare, set the records to DNS only.
- Edit the right zone: the one served by the name servers returned by
dig NS. - If the domain is on Route 53 in the same AWS account, SES can publish the records for you.
- Wait. Most providers publish within minutes, but SES may need up to 72 hours to notice. Lowering the TTL does not speed up the first check of a brand new record. See DNS propagation and TTL.
- If the status is Failed, fix the records first, then restart verification. AWS recommends retrying from the console once the records resolve; a commonly used method is to disable and re-enable DKIM signing for the identity, or delete and recreate the identity (this creates new tokens, so you must publish the new records).
If you use BYODKIM (your own key) instead of Easy DKIM, SES looks for a TXT record at selector._domainkey.yourdomain.com. The private key must be RSA 1024 or 2048 bits, base64 encoded, and the public key in DNS must have no header, footer or line breaks.
Once DKIM works, think about the bounce address too: by default SES uses an amazonses.com MAIL FROM domain, so SPF does not align with your domain. See custom MAIL FROM domain for DMARC alignment.
Check that it is fixed
The console should show the identity as Verified and DKIM as Successful. Then send a message through SES to your unique address on the Delivmail home page. The report should show a valid DKIM signature with d=yourdomain.com. You will also see a second signature with d=amazonses.com; SES adds it on purpose and it is harmless. If you get an email from SES saying your DKIM setup will be revoked, it means the records were removed: put them back before the deadline in that email.
Check that it is fixed
DNS changes can take from a few minutes to a few hours. Then send a new test email or scan your domain again.
Related guides
- No SPF record on your domainYour domain does not say which servers may send email for it. Add one TXT record and receivers can tell your real emails from fakes.
- SPF error: too many DNS lookups (permerror)SPF allows at most 10 DNS lookups. Above that, the whole record breaks and receivers treat it as invalid. Here is how to slim it down.
- Several SPF records on one domainA domain must have only one SPF record. With two or more, SPF breaks for every email. Merge them into a single line.
- SPF fails: the sending server is not authorizedYour domain has an SPF record, but the server that sent your email is not in it. Find which service sent the email and add it.
- No DKIM signature on your emailsDKIM adds a digital signature that proves an email really comes from your domain. Turn it on in your email provider and publish its key in DNS.