This is one of the more helpful rejections in email, because Gmail usually tells you exactly which check failed. The bounce arrives in two common shapes, and which one you got narrows the fix considerably.
550-5.7.26 This mail has been blocked because the sender is unauthenticated.
550-5.7.26 Gmail requires all senders to authenticate with either SPF or DKIM.
550-5.7.26 Authentication results:
550-5.7.26 DKIM = did not pass
550-5.7.26 SPF [example.com] with ip: [203.0.113.25] = did not pass550-5.7.26 Unauthenticated email from example.com is not accepted due to
550-5.7.26 domain's DMARC policy. Please contact the administrator of
550-5.7.26 example.com domain if this was a legitimate mail.Shape 1 means you have no working SPF and no working DKIM for the sending path. Shape 2 means the domain owner has published p=quarantine or p=reject and this particular message failed alignment — which is a different problem, and usually a more subtle one.
What does Gmail actually require?
Google publishes sender requirements with two tiers. Every sender must meet the baseline; senders who exceed Google's bulk-sending threshold must meet a stricter set. Google states the exact volume threshold and the current spam-rate figure in its own sender guidelines and in Postmaster Tools, and those numbers do get revised — check the current published values rather than a figure copied from a blog post.
| Requirement | All senders | Bulk senders |
|---|---|---|
| SPF or DKIM passing for the sending domain | Required | Both required |
DMARC record published for the From: domain | Not required | Required (p=none is enough to satisfy it) |
From: domain aligned with SPF or DKIM | Not strictly required | Required |
| Valid forward-confirmed PTR on the sending IP | Required | Required |
| TLS on the SMTP connection | Required | Required |
| One-click unsubscribe (RFC 8058) on marketing mail | Not applicable | Required |
| Reported spam rate kept below Google's published threshold | Expected | Enforced |
spf=pass *and* dkim=pass and still be treated as unauthenticated, because both passed for a domain that is not the one in the From: header. Gmail cares about the domain your recipients see.How do you confirm what failed?
Send a message from the affected system to a Gmail address you control — if it is being rejected outright, send to a Gmail-hosted address on a different domain, or use any external mailbox and read the header there. In Gmail, open the message, use "Show original", and read the Authentication-Results line.
Authentication-Results: mx.google.com;
dkim=pass [email protected] header.s=selector1 header.b=Ab1Cd2Ef;
spf=pass (google.com: domain of [email protected] designates
203.0.113.25 as permitted sender) smtp.mailfrom=mail.example.com;
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=example.comspf=passwithsmtp.mailfrom=on a vendor domain → SPF authenticates but does not align. Fix with a custom Return-Path on your domain.dkim=passwithheader.d=on a vendor domain → DKIM authenticates but does not align. Ask the vendor to sign with a key on your domain.spf=permerror→ your record is structurally broken, most often more than ten DNS lookups or twov=spf1records.spf=temperror→ DNS failed to answer during evaluation. Check nameserver health with the NS lookup and DNSSEC checker.dkim=neutral (body hash did not verify)→ the message is being modified after signing. See body hash did not verify.dkim=none→ nothing signed the message at all.
The fix, in order
1. Publish a single, valid SPF record
# Must return exactly one v=spf1 string
dig +short TXT example.com | grep spf1
dig +short TXT example.com | grep -c spf1Include every service that sends with your domain in the Return-Path, keep the total DNS-querying mechanism count at ten or below, and end with ~all while you are still discovering senders. Build it with the SPF generator and count the chain with the SPF checker. If you are on Google Workspace, the correct record is one short include.
2. Turn on DKIM signing and publish the key
DKIM is the more valuable of the two, because it survives forwarding and mailing lists in a way SPF does not. Generate the key in your mail platform, publish it at selector._domainkey.example.com, and only then enable signing — publishing after you enable produces a window of dkim=fail that is worse than no signature.
# Google Workspace default selector
dig +short TXT google._domainkey.example.com
# Microsoft 365 publishes two CNAMEs, not TXT records
dig +short CNAME selector1._domainkey.example.com
dig +short CNAME selector2._domainkey.example.comDo not know your selector? How to find your DKIM selector covers reading it from a message header, provider defaults, and discovery. The DKIM checker will probe common selectors for you.
3. Fix alignment
You need one of these two, not both. Whichever is easier with your vendor:
- SPF alignment — configure a custom Return-Path / bounce domain at the ESP, typically something like
mail.example.com, and publish that subdomain's SPF record with the vendor's include in it. The MAIL FROM domain then shares your organizational domain and aligns under DMARC's default relaxed mode. - DKIM alignment — have the vendor generate a key for your domain and publish the record they give you (usually a CNAME to their key). The
d=tag on the signature then readsexample.comand aligns.
4. Publish DMARC
Start at p=none with an aggregate report address. It satisfies the bulk-sender requirement for having a policy, and the reports are the only reliable inventory of who sends as your domain.
_dmarc.example.com. 3600 IN TXT "v=DMARC1; p=none; rua=mailto:[email protected]; fo=1"Build it with the DMARC generator, verify with the DMARC checker, and tighten it using the staged plan in p=none vs quarantine vs reject.
5. Fix PTR and TLS
# Reverse must resolve, and forward must come back to the same IP
dig +short -x 203.0.113.25
dig +short A mail.example.com
# Confirm the MTA offers STARTTLS and a valid certificate
openssl s_client -starttls smtp -connect mail.example.com:587 -crlf < /dev/null 2>&1 \
| grep -E "subject=|Verify return code"PTR is configured by whoever owns the IP block, not in your DNS zone — see set a PTR record on your VPS and check it with the reverse DNS lookup. The same requirement now applies at Yahoo and Microsoft, covered in PTR records are now required.
What if you are a bulk sender?
Authentication gets you accepted; it does not get you into the inbox. Once 5.7.26 stops, the remaining work is complaint rate and list hygiene. Add a List-Unsubscribe header with the RFC 8058 one-click POST form, honour unsubscribes quickly, stop mailing addresses that have not engaged, and watch your reported spam rate in Postmaster Tools. A domain that authenticates perfectly and generates complaints will still be filtered — Gmail simply stops telling you about it in a bounce.
From: header to your own domain unless you understand what that does to replies.Once the records are published, run the deliverability test for a combined view, then send a real message and read the header. Authentication is evaluated per message, so the moment Gmail's resolvers see the corrected records, the rejection stops.