Fixing DMARC Compliance Issue with o=sp but p=reject
Resolve DMARC enforcement issues when o=sp but policy is p=reject. Learn the mechanics, check your configuration, and verify sender domains with.
Why does DMARC fail when o=sp but p=reject?
You set p=reject to block unauthorized mail, and add o=sp to allow internal org-wide senders, but your legitimate emails still bounce. Why?
DMARC doesn’t work like a simple on/off switch. When you apply p=reject with o=sp, enforcement remains strict—alignment checks still apply. The o=sp flag doesn’t reduce the policy’s severity; it only adjusts the alignment rules for your organization’s domains.
Think of it like a building with two gates: one for external visitors (strict access), one for employees (more lenient). If the building owner says “no one enters without clearance” (p=reject), even employee access (o=sp) must still pass the gate’s verification. If a delivery person is misidentified as an employee, the door stays shut.
Key takeaways
- DMARC's p=reject policy enforces strict alignment regardless of o=sp
- o=sp only relaxes alignment rules; it does not weaken policy enforcement
- Subdomain senders and indirect mailers are still at risk when alignment fails under p=reject with o=sp
How does DMARC alignment work when p=reject and o=sp?
When DMARC policy is set to p=reject and o=sp is used, alignment still requires either SPF or DKIM to pass using the organizational domain (e.g., company.com), not the exact sender domain. Even with o=sp, a failure in alignment—due to missing SPF records, misconfigured subdomains, or incorrect delegation—results in message rejection, because p=reject enforces strict compliance.
SPF alignment under o=sp is stricter than it seems
Let’s clarify: o=sp means the SPF check uses the organizational domain, not the full sender domain. So if an email sent from [email protected] uses an SPF record for company.com, that passes alignment. But it only works if SPF is properly set up for company.com and not just subdomains.
Many senders assume using o=sp makes alignment forgiving. It does not. If the SPF record for company.com is missing, incorrect, or doesn’t include the sending IP, the alignment check fails—even with o=sp. And when p=reject is set, the message is blocked.
Why failed alignment leads to outright rejection
DMARC’s purpose is to prevent spoofing. With p=reject, any failure in SPF or DKIM alignment—regardless of o=sp—means the message doesn’t meet the policy. The receiving server doesn’t ask “Is the domain close?”; it just asks “Does it match?”
This is why even well-intentioned configurations fail. A sending IP not included in the company.com SPF record, or a misconfigured subdomain record, breaks the chain. The result: your email is rejected before it reaches the inbox.
For this reason, tools like MailTester’s bulk verification can help you catch these issues before sending. Test your sender domains, check SPF records, and validate alignment in advance to avoid DMARC drops.
For deeper insight into how DMARC policies interact with email infrastructure, refer to the official DMARC specification and the DMARC Analyzer's guide, both maintained by industry experts and foundational to email authentication.
What are common causes of DMARC failure with o=sp and p=reject?
DMARC failures with o=sp and p=reject usually stem from misaligned authentication, unauthorized sending domains, or poor SPF/DKIM configuration. Even with a o=sp tuning tag, rejecting policy still blocks messages that fail SPF or DKIM checks. Common issues include sending from unverified subdomains, using third-party tools without proper alignment, or publishing DKIM keys incorrectly. These errors lead to hard fails and rejected emails, even if your overall domain is compliant.
Sender alignment missteps
- You're sending from a subdomain (like
news.yourcompany.com) that has no SPF record, or its SPF record doesn’t include the parent domain viainclude. Without this, SPF fails, and DMARC rejects the message, regardless ofo=sp. - You’re using a third-party sender (like a marketing platform or CRM) that sends from a domain not authorized in your SPF record. Even if the sender has valid authentication, DMARC checks alignment: if the
Fromdomain doesn’t match the SPF-aligned domain, the message fails. - You're using a third-party sender with improperly configured DKIM. If the selector doesn’t match the published DNS record or the key is missing, DKIM fails — and
p=rejectmeans hard delivery failure.
Authentication flaws
- You're sending from a domain listed in your SPF record without using
includeto authorize it. A bareip4:1.2.3.4orallpolicy without proper alignment won’t cover subdomains or external senders — resulting in SPF fail. - You’re misunderstanding
o=spas a pass-through. It’s not a waiver — it’s a tuning tag that tells receivers “this failure is expected.” But withp=reject, you still won’t deliver when checks fail. The receiver will still reject the email despiteo=sp. - You’ve published a DKIM selector or key that doesn’t match what the sending system uses. Even if the record exists, a mismatch means DKIM validation fails — and DMARC doesn’t care about tuning tags if the core checks fail.
These issues often stem from automation without oversight. Before sending to large lists, test deliverability using real-world conditions. Use an inbox placement test to see if messages land in inboxes or are rejected. You can verify sender alignment and detect DMARC issues early with our inbox tester.
Test how your emails appear in real inboxes before sending.
Step-by-step: Verify DMARC alignment configuration
You’re seeing a DMARC compliance issue with p=reject and o=sp because your DMARC record is set to reject failing messages, but the sp=reject policy (which applies to subdomains) isn’t aligned with how your SPF or DKIM are configured. You must confirm SPF and DKIM are published correctly, use the right domains in From headers, and verify alignment at delivery. Use real tools—not just DNS lookups—to test alignment post-send.
Check the DMARC record
- Confirm your DMARC DNS record includes
p=rejectando=sp. Theo=sptag means the policy applies to subdomains, so if you’re sending from a subdomain likemail.yourcompany.com, it must pass alignment checks. - Use a DNS lookup tool like MXToolbox to verify the record is published and correctly formatted. If the record exists but contains syntax errors, DMARC will fail.
- Make sure the record is published at
_dmarc.yourdomain.com. Records with incorrect subdomains or missing tags will not enforce policy.
Verify SPF and DKIM configuration
- Check your SPF record to ensure it includes every domain or IP that sends mail on your behalf. Use RFC 7208 as a reference: SPF records must include
include:mechanisms for third-party platforms like SendGrid or Mailchimp. - Confirm DKIM is signing messages using the proper domain. If your From header uses
[email protected], DKIM must be signed with that subdomain’s selector. Misalignment here causes DMARC failure even if SPF passes. - Use a tool like DMARCian’s DKIM checker to validate signatures. A missing or incorrect selector breaks DKIM validation.
- Test sending from each origin domain using an inbox placement tool. Only real delivery testing can confirm if alignment is enforced at the receiving end—DNS queries alone won’t catch alignment failures after transit.
After validating DNS records, use MailTester’s inbox placement feature to send test emails from each sending domain and evaluate alignment performance. This step uncovers gaps that static checks miss, especially with dynamic headers or content transformations.
How do you test if a domain is correctly aligned under o=sp?
Send a test email from a valid address in the target domain (e.g., [email protected]) using a real From header. Use MailTester’s inbox-placement test to simulate delivery at a major inbox provider. Check the full email headers for dmarc=fail despite spf=pass and dkim=pass—this often indicates an alignment issue under o=sp. If p=reject is enforced, a failure here will block delivery. Verify that the organizational domain (e.g., company.com) aligns in both SPF (as the source) and DKIM (as the selector).
Step-by-step verification process
- Send a test email from the domain using a real address (e.g., [email protected]) with the full From header matching the sending domain. This simulates real-world sending behavior, which is necessary to trigger proper authentication checks.
- Use MailTester’s inbox-placement tester to send the email to major inbox providers like Gmail, Outlook, or Yahoo. This service reveals how the email is received, including headers and filters, without requiring actual inbox access. Test delivery in real inboxes to catch alignment issues before mass campaigns.
- Inspect the full email headers in the results. Look for
spf=pass,dkim=pass, anddmarc=fail. Admarc=failwithp=rejectindicates the domain’s DMARC policy will block your email, even if SPF and DKIM pass. - Confirm alignment under o=sp in the DMARC record. The SPF record must list the sending domain (or its subdomain) as a valid source, and the DKIM selector must use the organizational domain (e.g.,
selector.company.com) as the public key owner. - Fix misaligned SPF or DKIM. If the SPF record uses a third-party domain (e.g.,
include:servers.sendgrid.net) without proper alignment, or DKIM uses a non-aligned selector (e.g.,mail300), the DMARC check fails. Either update SPF to include the organizational domain, or reconfigure DKIM to use theo=spalignment.
Why o=sp matters in real delivery
DMARC policies with p=reject and o=sp require strict alignment between the From domain and the SPF/DKIM domains. If the o=sp policy is enforced but alignment fails, all mail from that domain gets rejected—even if SPF and DKIM pass in isolation. This is a common cause of high bounce rates and poor inbox placement for companies using marketing automation tools with misconfigured email sources.
For a detailed view of authentication results, check the full email header in the test output. MailTester shows real-world results across providers, including whether the domain aligns under o=sp and if the p=reject policy is being enforced. This level of detail helps you catch issues before your list goes live.
For reference, the DMARC RFC explains how alignment rules apply to SPF and DKIM, and how o=sp enforces organizational domain matching. Always validate your records with real-world test data—rules in theory don’t always behave the same in production.
What does a DMARC failure with p=reject and o=sp tell you about your sender setup?
If your email fails DMARC with p=reject and o=sp, it means your message was rejected by the receiving domain’s policy because the sender’s identity didn’t align with either SPF or DKIM. Even if the email passed SPF or DKIM individually, the lack of domain alignment—especially when using a third-party sender—causes failure. It also confirms the domain owner has enforced rejection: no exceptions are made. You’re not just seeing a warning—you’re blocked.
Domain alignment is mandatory, even with relaxed enforcement
Even when o=sp (organizational policy) is set, that doesn’t mean misaligned senders can bypass checks. DMARC requires that the domain in the From header matches the domain used in SPF or DKIM validation. If you’re sending from a subdomain like [email protected] but the SPF record is set on company.com, and the DMARC policy is strict, even a valid SPF pass won’t save it—unless the alignment is correct.
Let’s say you use a service like SendGrid or Mailchimp to send on behalf of your domain. If their email is not properly aligned to your domain in SPF or DKIM, and you haven’t configured the service to pass alignment checks (like using a custom From with matching DKIM), DMARC will flag it. This is a common failure point.
Why p=reject means no wiggle room
Setting p=reject means the domain owner won’t allow any email through that fails DMARC. There’s no grace period, no soft bounce. Even if the message passes SPF or DKIM in isolation, alignment failure invalidates the entire chain. Receiving servers act on this policy immediately. If you’re seeing these failures, the email is not just delayed—it’s blocked at the gateway.
You can test this in real time with tools that simulate inbound delivery, like MailTester’s inbox placement test, which checks how your messages land across major providers and returns a real email report for each. This helps you identify alignment issues before sending to your full list.
DMARC enforcement is standard in modern email infrastructure. According to RFC 7483, alignment is a required part of DMARC validation, regardless of organizational policy. Misalignment is an immediate rejection vector. Even with o=sp, failure means the message is invalid under the domain’s security rules.
When you see this failure, check your SPF record for domain scope, verify DKIM signing is done with the correct selector and domain, and confirm any third-party sender is configured with aligned identities. Tools like MailTester’s email checker can help identify problematic addresses before they hit the inbox, reducing delivery impact.
How can MailTester help you resolve DMARC compliance issues?
You can use MailTester to catch DMARC compliance issues before they block emails. Its real-time API checks if a sender domain aligns with its DMARC policy, especially when p=reject is enforced. Bulk validation identifies domains that misalign with o=sp or fail enforcement. Inbox placement tests confirm delivery when DMARC is strict. Integrations with SendGrid, Mailchimp, and HubSpot add domain checks at send time. The in-app AI assistant explains DMARC verdicts, like why a domain might be flagged despite passing basic syntax.
Pre-send validation with real-time checks
- Use the real-time verification API to test if a domain enforces
p=rejectand whether your sender alignment passeso=sprequirements. - Automate checks before sending to avoid deliverability blackouts caused by DMARC policy violations.
- Validate domains from your list in seconds—no need to guess if your alignment is correct.
Fix issues at scale and confirm delivery
- Run a bulk list check to find domains that fail DMARC alignment, especially those with strict
p=rejectpolicies. - Spot domains aligned with
o=spbut not properly signed, or ones with missing SPF/DKIM records. - Test inbox placement via controlled campaigns using valid, compliant addresses to prove delivery under strict DMARC rules.
- Integrate MailTester with SendGrid, Mailchimp, or HubSpot so every send is checked for domain policy compliance.
- Use the in-app AI assistant to parse complex DMARC verdicts—understand why a domain is marked “risky” or “invalid” due to alignment or policy enforcement.
DMARC is effective only when enforced strictly. Misaligned or non-compliant addresses fail outright. MailTester doesn’t guess—its 98.9% accuracy helps you verify the actual state of sender domains. This is how you avoid bounces and maintain sender reputation.
What do DMARC verdicts mean on email verification reports?
DMARC verdicts on verification reports tell you whether an email address’s domain has proper authentication alignment (SPF and DKIM) and whether the sender is following the domain’s policy. A pass means both alignment and policy are met. A fail means at least one alignment check failed or the policy wasn’t enforced. None means no DMARC record was found, so authentication isn’t enforced. Even with p=reject and o=sp, failure still leads to rejection if alignment is broken. Understanding these verdicts helps you avoid delivery failures caused by poor authentication.
How DMARC Verdicts Map to Delivery Risk
When a domain uses p=reject and o=sp, it signals that the sender must fully pass both SPF and DKIM alignment checks — otherwise, receiving servers will reject the message. A DMARC verdict of fail here doesn’t just indicate a weak configuration; it means the email will likely be blocked. If you’re sending to an address with this policy and the verification report shows a fail, sending is pointless. Even if the address is technically valid, the authentication failure will trigger rejection.
When a report shows none, it’s a red flag: no DMARC policy means the domain allows unauthenticated messages. This is typical for domains that don’t yet enforce authentication. But it’s also a sign of negligence — such domains are more likely to be spoofed and blocked eventually. You can still send to them, but you’re relying on their lack of enforcement. That changes over time, especially if the domain starts enforcing policies later.
Why This Matters for Email Deliverability
DMARC is a core part of email reputation. If an address has p=reject with o=sp and your message fails alignment, you’re not just dealing with a technical glitch — you’re risking being blocked entirely. This is especially critical in bulk sending. Let’s say your list includes 100 addresses, and 10 of them fail DMARC due to misaligned SPF or DKIM. If you send to all 100, your sending reputation takes a hit. Even if the rest are fine, the aggregate failure can trigger throttling or blacklisting.
That’s why real-time email verification — like the bulk verification tool at MailTester — checks DMARC status alongside syntax, syntax, and inbox placement. It flags issues before you send. The API version lets you check individual addresses at scale, so you can automate rejection of unaligned senders. If you don't verify these settings, you’re sending blind. Authentication isn’t optional — it’s mandatory for delivery. As stated in RFC 7483, DMARC is designed to protect domains from abuse, and its enforcement is increasingly non-negotiable.
Why does o=sp not prevent p=reject from blocking emails?
DMARC’s o=sp adjusts SPF alignment to use the organizational domain, but it doesn’t override the p=reject policy. If your sending domain isn’t properly listed in the SPF record or your DKIM signature isn’t aligned with the org domain, DMARC alignment fails — and p=reject will block the email regardless of o=sp.
How o=sp changes alignment — but not enforcement
When you set o=sp in your DMARC record, it tells receiving mail servers to check SPF alignment against the organization’s domain (e.g., example.com) rather than the exact sending domain (e.g., send.example.com). This is helpful if you’re using subdomains for sending but want to maintain a single, consistent policy.
But o=sp only changes how alignment is evaluated — it does not alter the enforcement policy. If alignment fails due to a missing or incorrect SPF record, or a misaligned DKIM signature, the receiving server applies p=reject as intended.
Why alignment still breaks — even with o=sp
Let’s say your org domain is example.com, and you send from news.example.com. If the SPF record includes include:spf.example.com but omits example.com entirely, the alignment check fails — even with o=sp, since SPF itself is not properly configured.
Similarly, if your DKIM key is signed by a subdomain (e.g., dkim.send.example.com) instead of the root org domain (e.g., example.com), the alignment fails. DMARC’s o=sp doesn’t fix this — it only adjusts the alignment rule for SPF, not DKIM.
DMARC’s p=reject doesn’t care about exceptions or intent. If any of the required checks — SPF alignment, DKIM alignment, or the DMARC policy itself — fail, the message is blocked. This is by design: p=reject enforces consistency, not flexibility.
For a practical check, use a real-time email verification tool to test your domain’s alignment from the receiver’s perspective. We see consistent issues with misaligned SPF or DKIM records, particularly in enterprise environments. You can check your sending infrastructure directly with MailTester’s email checker or audit entire lists with bulk verification.
For deeper technical guidance, the original DMARC specification at RFC 7489 clarifies how o=sp impacts alignment rules. However, even well-documented standards don’t override correct configuration. When in doubt, test your setup using real inbox placement tools — like MailTester’s inbox placement test — to see exactly how your messages are treated.
How to prevent DMARC issues in the future with better list hygiene?
You can prevent DMARC failures caused by o=sp with p=reject by cleaning your list regularly with tools that verify sender domain alignment. Remove addresses from domains missing DMARC, SPF, or DKIM records. Flag domains where o=sp exists but sender authentication doesn’t align with the from domain. Use real-time verification to catch these issues before sending. Monitor inbox placement after campaigns to detect alignment-related delivery drops. This proactive hygiene reduces bounces and blocks.
Use verification tools that check authentication alignment
- Start with a bulk verification tool that checks the sender domain’s DMARC policy, SPF records, and DKIM configuration—not just the email syntax.
- Filter out domains with no published DMARC record, as they lack enforced policies and increase risk of impersonation or delivery failure.
- Pay attention to domains where
o=spis set but the actual sending domain doesn’t match the From domain—this breaks alignment and triggers DMARC rejection withp=reject. - Use MailTester’s bulk verification to test entire lists against current authentication standards and see which domains fail alignment checks before sending.
Monitor and iterate based on real inbox performance
- After sending, run inbox-placement tests using tools like MailTester’s inbox tester to see if campaigns land in inboxes or get blocked by DMARC.
- Compare delivery results across domains with and without DMARC enforcement—this reveals how alignment impacts real-world deliverability.
- Track changes in your sender reputation by monitoring blocklist appearances and feedback loops. A single misaligned domain can degrade your reputation over time.
- Integrate verification into your workflow: use the MailTester API for real-time checks during onboarding or signup.
- Keep a record of domains you’ve removed due to poor authentication—they may indicate systemic list quality issues worth revising in your acquisition strategy.
Proper list hygiene isn’t just about removing bad emails—it’s about maintaining technical alignment with modern email standards like DMARC, which relies on consistent domain signaling.
For guidance on how SPF, DKIM, and DMARC work together, refer to the IETF’s DMARC specification. The core principle remains: if your sending domain doesn’t align with the From domain and lacks proper authentication, recipients will reject you—even if your content is clean.
Conclusion: DMARC compliance is not optional—it’s mandatory
Even if your DMARC policy uses o=sp (soft fail), a p=reject policy actively blocks messages from senders that fail alignment. Misaligned emails—regardless of SPF validity—will not reach inboxes.
Tools like MailTester catch these alignment issues before they trigger bounces or spam complaints. Real-time verification and inbox placement testing expose flaws in your sending setup across domains, protocols, and configurations.
Proactive list hygiene and continuous verification reduce bounce rates, protect sender reputation, and ensure consistent inbox placement. With accurate data and verified deliverability, your email program becomes reliable, scalable, and trusted.
Sources
- Only 22.9% of top domains enforce DMARC with p=quarantine or p=reject, while 29.2% remain in monitoring-only p=none mode that blocks nothing. — EasyDMARC 2026 DMARC Adoption & Enforcement Report (2026)
- Since May 5, 2025, Microsoft Outlook requires SPF, DKIM, and DMARC from domains sending 5,000+ emails per day, rejecting non-compliant mail outright at the SMTP level with error 550 5.7.515. — Microsoft Outlook requirements (via MailOver bulk-sender requirements guide) (2025)
Keep reading
- Anti-spam laws and compliance: CAN-SPAM, GDPR, CASL (complete guide)
- How Domain Reputation Affects Trackable Link Path and 550 5.7.1 Bounces
- s= Selector Case Sensitivity in Gmail and Verification Compliance
- How to Ensure Email Compliance with RFC 2046 by Fixing Base64 MIME Boundary Issues
- Email Authentication Failure Due to OV Tag Ignored by Receiving Server
Ready to put this into practice? MailTester verifies emails with 98.9% accuracy — start with 100 free verifications.
Frequently asked questions
Does o=sp prevent p=reject from blocking emails?
No. o=sp modifies alignment rules but does not change enforcement. If alignment fails, p=reject still blocks the email.
Can I have o=sp and p=reject together?
Yes. o=sp is a configuration option that allows relaxed alignment under organizational domains while maintaining p=reject enforcement.
What happens if a domain has p=reject but no DMARC record?
DMARC policy is not enforced. The email may be delivered, but authentication checks are ignored due to missing policy.
How do I know if my sender domain is aligned under o=sp?
Check the SPF record to see if the org domain is included. Confirm the DKIM signature uses the org domain selector.
Can MailTester detect DMARC compliance during verification?
Yes. MailTester checks SPF, DKIM, and DMARC alignment during real-time and bulk verification, with 98.9% accuracy.
What’s the difference between o=sp and p=none?
o=sp relaxes alignment checks under organizational domains. p=none means no enforcement—emails are not rejected for alignment failures.
Why is my email being rejected despite having o=sp and p=reject?
The sender domain likely failed SPF or DKIM alignment. Misconfigured senders or missing records can still trigger rejection.
How do I fix a DMARC failure with o=sp?
Update SPF records to include org domains, ensure DKIM is properly signed, and verify alignment using tools like MailTester.
Do I need to update my DMARC record if I enable o=sp?
Only if you are changing the policy. o=sp is optional and can coexist with p=reject without requiring record changes.
Can a third-party sender pass DMARC with o=sp?
Only if the third-party configures SPF/DKIM to align with the org domain or uses a valid include mechanism.
What's the best way to test DMARC delivery before sending?
Use MailTester’s inbox-placement test to simulate delivery and verify alignment, sender reputation, and recipient processing.
How often should I check DMARC compliance?
Run checks quarterly or after major email infrastructure changes to maintain alignment and avoid delivery drops.