You add your company address to a newsletter service and send a test. The message headers show SPF PASS and DKIM PASS. DMARC, however, says FAIL. If both authentication checks passed, what is missing?
Look at the domain next to each PASS. Authentication for the sending service's domain does not, by itself, authenticate your company's From address. We will diagnose a fictional newsletter from Gaon Trading, correct its configuration, and check the result in a new message.
Find three domains in one failed message
Gaon sends its newsletter through an external service using news@example.com. Here is an illustrative set of headers from the receiving server. Long signature values and unrelated fields have been omitted.
From: Gaon Trading News <news@example.com>
Return-Path: <bounce@mailer.example.net>
DKIM-Signature: v=1; d=mailer.example.net; s=send; ...
Authentication-Results: mx.receiver.example;
spf=pass smtp.mailfrom=mailer.example.net;
dkim=pass header.d=mailer.example.net;
dmarc=fail header.from=example.comWrite down the domain after @ in the From address. This is the domain DMARC checks against. Then compare it with smtp.mailfrom in the SPF result and header.d in the DKIM result.
Scroll sideways to read the full table.
| Field | Value in this message | Meaning |
|---|---|---|
| From | example.com | The company domain shown to the reader |
| SPF: smtp.mailfrom | mailer.example.net | The domain whose SPF policy authorized the sending IP |
| DKIM: header.d | mailer.example.net | The domain of the signature that was successfully verified |
MAIL FROM is the envelope address used during server-to-server delivery, including for delivery failure notices. You can usually find it in the received message's Return-Path, but use the receiver's authentication results to establish what SPF actually checked. DMARC does not compare the display name or the address in Reply-To. SPF and the MAIL FROM identity ↗
Open the received original and identify the trusted result
In Gmail on the web, open the received message, select the More menu beside Reply, and choose Show original. Other mail applications provide a message-source or internet-headers view. Use the copy at the receiving end; the sender's Sent folder does not show the receiving server's checks. Viewing full headers in Gmail ↗
A message may contain several Authentication-Results headers. Do not choose whichever comes first or happens to say PASS. Senders can insert a header with the same name, and even a familiar server name in that header is not proof that it is trustworthy. Use results recorded within the receiving service's trusted boundary. If you cannot identify them, ask its administrator to review the original message and sending time. Forged authentication headers and trust boundaries ↗
If authentication results are missing, or the message bounced before you could obtain a received original, do not assume a DMARC failure. Collect the delivery log and bounce response and establish what the receiver reported.
Authentication and alignment must succeed through the same method
Gaon's SPF PASS says the connecting server is authorized by mailer.example.net. Its DKIM PASS says the signature for mailer.example.net is valid. Neither result establishes authorized use of example.com.
DMARC compares a successfully authenticated domain with the From domain. When the two meet its matching rules, they are aligned. A message needs at least one complete passing route below. DMARC alignment rules ↗
Two ways to pass DMARC
SPF PASSThat MAIL FROM domain aligns with From
ORDKIM PASSThat signature's d= domain aligns with From
The passing result and the aligned domain must belong to the same authentication method
Suppose SPF passes for the service domain but DKIM fails for the company domain. You cannot combine SPF's PASS with DKIM's company name to produce a DMARC pass. Seeing d=example.com in a signature is insufficient; that signature must also verify successfully.
With multiple DKIM signatures, match each domain to its own result
A service may attach both its own signature and its customer's signature. Read each signature's d= domain, s= selector, and verification result together. One valid signature aligned with the From domain is enough for DMARC to pass through DKIM. DKIM signing domains and multiple signatures ↗
Scroll sideways to read the full table.
| Company signature | Service signature | DMARC result |
|---|---|---|
| d=example.com · FAIL | d=mailer.example.net · PASS | FAIL: no signature both passes and aligns |
| d=example.com · PASS | d=mailer.example.net · PASS | PASS: the company signature qualifies |
| d=example.com · PASS | d=mailer.example.net · FAIL | PASS: the other failure does not cancel a valid, aligned company signature |
The first row is the easy one to misread: the passing signature and the company-domain signature are different signatures. If a tool collapses several results into one summary, open its detailed view or obtain the full headers.
Relaxed and strict alignment define how domains must match
Some services use a company subdomain such as bounce.example.com for the return address. Whether that aligns with a From domain of example.com depends on aspf and adkim.
aspf controls SPF alignment; adkim controls DKIM alignment. Both default to relaxed mode, r, which allows domains with the same organizational domain. Strict mode, s, requires an exact domain match. The comparison concerns domains, so different mailbox names such as news@ and bounce@ do not themselves cause alignment failure. Microsoft's explanation of alignment modes ↗
Scroll sideways to read the full table.
| Authenticated domain | Relaxed: r | Strict: s |
|---|---|---|
example.com | Aligned | Aligned |
bounce.example.com | Aligned | Not aligned |
example.net | Not aligned | Not aligned |
examp1e.com | Not aligned | Not aligned |
example.com.attacker.example.net | Not aligned | Not aligned |
The final domain contains the company name at the beginning, but it is not a subdomain of example.com. The similar-looking examp1e.com is a separate domain too. Relaxed alignment does not accept similar spellings.
Nor can you always identify an organizational domain by taking the last two labels. Public suffixes such as co.uk span multiple labels, and the current DMARC standard defines a DNS tree walk to establish organizational boundaries. For a complex subdomain structure, check the policy actually applied and the receiver's result. Organizational domains and DNS policy discovery ↗
adkim=r; aspf=r is a practical starting point when legitimate services use your subdomains. Choose s when exact matching serves a specific requirement and the relevant sending routes can meet it. Before changing an existing strict setting, understand why it was selected. In Gaon's example, changing to relaxed mode would not help: the service authenticates an entirely different organizational domain.
Configure the newsletter service to sign with the company domain
Suppose Gaon's newsletter provider supports custom DKIM. It can add a valid signature for the company domain while leaving the service's return address unchanged.
- Register the sending domain with the newsletter service
Add example.com in the actual service's domain authentication settings. Enabling DKIM in Google Workspace or Microsoft 365 does not sign mail sent independently by the newsletter provider.
- Publish the DNS records issued by that service
Copy each record's name, type, and value or target as a set. Add every record the provider requires. Do not combine a key or CNAME target issued to another organization with your own domain.
- Verify DNS and enable signing
Check whether the DNS interface appends your domain automatically. Finish the service's verification and turn on signing. Domain ownership verification alone may not enable DKIM on real campaigns.
- Send a fresh test through the same campaign route
Use news@example.com and an external test mailbox. Check the received original for DKIM PASS on the company domain, even if the service's dashboard already says setup is complete.
For a signature containing d=example.com; s=nl2026, the public-key lookup is nl2026._domainkey.example.com. That example explains where the receiver looks; use the selector and DNS values actually issued to you. Some providers publish the key in TXT, while others use CNAME to point to a provider-managed key. How DKIM finds the public key ↗
Google likewise treats publishing DNS, starting authentication, and checking received mail as separate steps. A key can exist without the sender actually using it. Google's DKIM activation and verification steps ↗
From: Gaon Trading News <news@example.com>
Return-Path: <bounce@mailer.example.net>
DKIM-Signature: v=1; d=example.com; s=nl2026; ...
Authentication-Results: mx.receiver.example;
spf=pass smtp.mailfrom=mailer.example.net;
dkim=pass header.d=example.com header.s=nl2026;
dmarc=pass header.from=example.comMAIL FROM is still mailer.example.net, so SPF still does not align. But DKIM now passes for example.com, which matches From, and DMARC passes. This shortened example shows only the company signature. A provider signature may also remain on the real message.
To align through SPF, the service needs a custom MAIL FROM
If the provider supports it, you can use a company subdomain such as bounce.example.com for the envelope return address. Configure custom MAIL FROM in that service and publish the DNS records it issues. Amazon SES, for example, requires SPF and MX records for this return domain. Follow the provider's specific requirements; substituting your employee-mail MX is not equivalent. Custom MAIL FROM in Amazon SES ↗
Then check for SPF PASS with smtp.mailfrom=bounce.example.com. With From set to example.com, it aligns under aspf=r but not aspf=s. Correcting alignment for external senders ↗
If neither method is supported, ask the provider whether it can send through a route authenticated for your company; changing service may be necessary. Changing only From to a company subdomain does not resolve a mismatch with the provider's separate domain.
If direct delivery passes, compare what changes during forwarding
Suppose Gaon's corrected newsletter fails only when it passes through a customer's automatic forwarding address. Compare what the intermediary changes. This example concerns automatic forwarding that preserves the original From address.
- 01Newsletter service
Sends with From at example.com and a company-domain DKIM signature.
- 02Customer's forwarding server
Relays the message to another mailbox. The connecting IP changes; the return address or content may change too.
- 03Final receiving mailbox
Checks SPF against the current IP and envelope domain, then verifies the remaining DKIM signatures.
If the forwarder preserves MAIL FROM, the final receiver checks the forwarder's IP against the original domain's SPF policy. SPF may fail if that IP is not authorized. A valid, aligned company DKIM signature can still allow DMARC to pass. How forwarding affects authentication ↗
SRS can help SPF without restoring alignment
Some forwarding services use Sender Rewriting Scheme, or SRS, to replace MAIL FROM with an address at their own domain. SPF may then pass. But if that domain is forwarder.example.net and From remains example.com, it does not align. Microsoft explicitly notes that SRS alone does not resolve DMARC problems. Microsoft on SRS and DMARC ↗
A mailing list or security gateway can also break DKIM by changing a signed subject or appending text to the body. Distinguish a company-domain signature that fails verification from a passing signature with the wrong domain. The former calls for checking keys and changes after signing; the latter calls for checking the sending-domain configuration. Original messages from both sides of the change and the verification error help narrow the cause. Message modifications and DKIM ↗
ARC carries an intermediary's authentication observations in a signed chain. The final receiver can consider the chain's validity and its trust in that intermediary when deciding what to do. Valid ARC does not force DMARC to PASS. A receiver accepting a message despite a DMARC failure is different from the message passing DMARC. The purpose and operation of ARC ↗
Collect a directly received copy and a forwarded copy. Compare the connecting IP, MAIL FROM, and company DKIM result, then ask the forwarding administrator about signature preservation, SRS, and ARC. Adding every external forwarder to the company SPF record is not a sound starting point.
Test with a new message and separate the remaining causes
Changing DNS cannot change the FAIL stored in yesterday's message. It records what happened then. Once DNS and service settings are ready, send a new message through the route that originally failed.
Use the same newsletter service, From address, and type of campaign. Confirm company DKIM PASS and DMARC PASS, then test any forwarding route separately. A successful message sent manually from an employee's Gmail account does not verify the newsletter fix.
Scroll sideways to read the full table.
| Observed result | Evidence to collect | Likely area to investigate |
|---|---|---|
| SPF and DKIM PASS; DMARC FAIL | Both authenticated domains, From, and the applied aspf/adkim values | Company-domain signing or MAIL FROM configuration |
| No company DKIM signature; only another d= | Service domain selection, campaign settings, and signing status | DKIM on the actual sending route |
| Correct company d=; DKIM does not pass | Public-key lookup for s=, verification error, and message changes | Key or selector errors; changes after signing |
| SPF permerror or temperror | Actual MAIL FROM SPF policy, DNS responses, and evaluation error | Duplicate records, lookup limits, DNS problems, or the specific reported cause |
| Direct delivery PASS; forwarded delivery FAIL | IP, MAIL FROM, and DKIM differences between both originals | The forwarding route and final receiver's handling |
permerror means the SPF policy could not be correctly interpreted or evaluated. temperror indicates a temporary problem, such as a DNS failure. Neither is SPF PASS, even if the domain looks right. Read the specific error instead of grouping every failure under alignment. SPF result definitions ↗
If a valid aligned method appears to be present but DMARC still fails, revisit your interpretation. You may be combining results from different receivers or overlooking a subdomain policy. Ask the receiving administrator which From domain and policy were evaluated before adding more DNS records.
After a real campaign, check aggregate reports for improvement on the same sending route. RUA is aggregated, so investigate an individual message through its original headers and delivery logs. DMARC aggregate reporting ↗ Authentication can pass while spam placement or other rejection reasons remain, so record those delivery outcomes separately.
Changing policy to p=none or adding a sender to an inbox allowlist does not correct alignment. A completed fix should let you show which authenticated domain changed and which method now allows a fresh message to pass.
Genharden DMARC · Updated 2026-09-22. Based on the SPF, DKIM and DMARC standards and the official documentation linked above. Companies, domains, IP addresses and report figures are illustrative unless stated otherwise.