New guide: how to warm up a dedicated IP without hurting your reputation. Read now →
Log in
MigoSMTP
AuthenticationUpdated 15 Oct 2026

SPF, DKIM or DMARC failing? How to read the result and fix it

When authentication fails, mail lands in spam or is rejected. This guide explains what each result means, how to find it in a message header, and how to fix the usual causes.

SM
Written by Sofia Marino
Technical Support Lead
Reviewed by Ishita Rao
  • Published8 Oct 2026
  • Read time5 min
  • Length1,008 words
Share this guide

At a glance. Where to look: Authentication-Results header · SPF permerror: Two records or over 10 lookups · DMARC fail: Usually an alignment problem · Tool: Free header analyzer

The short version

  1. Find the authentication results. Open a message you sent and view its original source or full headers.
  2. What the SPF results mean. Pass means the sending IP is listed.
  3. What the DKIM results mean. Pass means the signature matched the published key.
  4. What the DMARC results mean. DMARC passes when SPF or DKIM passes and the domain that passed aligns with the From domain.
  5. Fix: no SPF record found. This means the domain has no SPF TXT record, or the lookup is for a different name than the one you published.
  6. Fix: DKIM key not found or invalid. Check the selector in the message's DKIM-Signature header, the s= value, and confirm a TXT record exists at selector._domainkey.yourdomain.com.

Find the authentication results

Open a message you sent and view its original source or full headers. Look for a header called Authentication-Results, added by the receiving server. It shows a result for each check, such as spf=pass, dkim=pass and dmarc=pass, along with the domain each check used.

Our free email header analyzer reads these headers for you if the raw text is hard to follow.

What the SPF results mean

Pass means the sending IP is listed. Fail means it is not and the record says to reject. Softfail means it is not listed and the record says to treat the message with suspicion. Neutral and none mean the record makes no claim or does not exist. Temperror is a temporary DNS problem, and permerror means the record is broken, for example two records or too many lookups.

If you see permerror, fix the record itself. If you see softfail or fail from a service you use, that service is missing from your record.

What the DKIM results mean

Pass means the signature matched the published key. Fail means it did not. The common causes are a message changed after signing, such as a footer added by another system, a DNS record that was copied wrongly, or a selector that does not match what the sender used.

None means the message was not signed at all. Check that DKIM is switched on for the sending service and that your DNS record is published at the exact name it shows.

What the DMARC results mean

DMARC passes when SPF or DKIM passes and the domain that passed aligns with the From domain. So you can see spf=pass and dkim=pass and still get dmarc=fail, because the passing domains belong to the service and not to you.

That is the most confusing case. The fix is to authenticate your own domain with the sending service, so its DKIM signature, and ideally its return path, use your domain.

Fix: no SPF record found

This means the domain has no SPF TXT record, or the lookup is for a different name than the one you published. Check that the record is at the root of the exact domain in the Return-Path, and that you did not put it on a subdomain by accident.

Remember that mail can come from a subdomain, which then needs its own record. See our SPF guide for how to build one.

Fix: DKIM key not found or invalid

Check the selector in the message's DKIM-Signature header, the s= value, and confirm a TXT record exists at selector._domainkey.yourdomain.com. Long keys must be pasted as one value. Some DNS panels split or truncate them, so verify by looking the record up after publishing.

If you recently changed provider or rotated keys, an old selector may still be in use. Publish the new records and wait for DNS to spread before switching signing on.

Fix: DMARC fails but SPF and DKIM pass

Compare the domain in the From header with the domains that passed. If they differ, alignment fails. Set up a custom domain in your sending service so DKIM signs with your domain.

If you are not sure which domains are involved, the DMARC aggregate reports list them by source, and they will show exactly which senders are not aligned.

Fix: it passes everywhere but still goes to spam

Authentication is a requirement, not a guarantee. If everything passes and mail still lands in spam, the cause is usually reputation, content or the list: high complaint rates, purchased addresses, a sudden jump in volume, or a spammy subject line.

Check your complaint and bounce rates, review who you are sending to, and slow down if you recently increased volume. Our deliverability guides cover these steps.

A calm order of work

Start with SPF, because it is quickest to fix. Then check DKIM for each sender. Then look at DMARC alignment. Change one thing at a time and re-test, so you know which change worked.

If you get stuck, send us the message headers and your domain name and we will help you find which check is failing and why.

An example header

A typical result line reads: Authentication-Results: mx.example.net; spf=pass smtp.mailfrom=bounce.yourdomain.com; dkim=pass header.d=yourdomain.com; dmarc=pass header.from=yourdomain.com. Each part names the domain that was checked.

Read it from the right. The header.from domain is what the recipient sees. The dkim header.d and spf smtp.mailfrom domains are the ones the check used. If they differ from header.from and are not subdomains of it, expect an alignment failure.

Further reading and sources

Not sure your records are right? Run our free checker, or send us a header and we will help you read it.

Start free

Frequently asked questions

Where do I see if SPF, DKIM or DMARC failed?

Open the full headers of a received message and find the Authentication-Results header added by the receiving server. It lists spf, dkim and dmarc results.

Why does DMARC fail when SPF and DKIM pass?

Because DMARC needs alignment: the domain that passed SPF or DKIM must match the From domain. A pass for a different domain does not help DMARC.

What does SPF permerror mean?

The record could not be evaluated, usually because the domain has two SPF records or the record needs more than ten DNS lookups.

My authentication passes but mail still goes to spam. Why?

Authentication is a requirement, not a guarantee. Reputation, list quality, content and engagement also matter.

Topics#spf#dkim#dmarc#troubleshooting#authentication
Was this guide helpful?Your answer helps us improve our documentation.

Start sending in minutes.

Create an account, add your domain and send your first email.

Start free Talk to sales