Fix: Your Own Domain's Email Is Flagged as Spoofing
Gmail flagged your own domain as spoofing? Three causes, three fixes. Subdomains, relays, display names.
Gmail flagged your own domain as spoofing? Three causes, three fixes. Subdomains, relays, display names.
You send an invoice from billing@yourdomain.com. Gmail slaps a banner on it warning that the message may not have been sent by yourdomain.com. Your own domain, your own mail server, your own authenticated sender. A customer who sees that banner will reasonably ask whether you've been hacked.
You haven't, most likely. But there are three ways to trip this warning even when you're completely legitimate, and none of them are obvious from the banner itself.
This guide comes from the JustEmails team — JustEmails is built by Velocity Digital Labs. The spoofing banner looks scary, and the fix isn't always "add a DNS record." Sometimes it's a sender nobody remembered setting up, sometimes it's a display name quirk, sometimes it's a relay that passes authentication but looks odd to heuristic filters.
Let's diagnose it.
Before we get into fixes, understand that "spoofing" warnings come from two different systems working in parallel:
Authentication checks (SPF, DKIM, DMARC) — technical, pass/fail, based on DNS records. If these fail, you'll see DMARC failures in headers and aggregate reports. We've covered ramping DMARC to p=reject and fixing third-party DKIM issues separately.
Heuristic spoofing detection — Gmail, Outlook, and other providers run additional checks beyond DMARC. These look at display names, sending patterns, metadata consistency, and known spoofing signatures. You can pass DMARC and still trigger these warnings.
The three common self-spoofing scenarios:
notifications@mail.yourdomain.com, but the SPF and DKIM for that mail don't align with the subdomain in the From address. DMARC fails, and the apex policy is applied to it.Let's fix each one.
You've got DMARC set up on your apex domain — _dmarc.yourdomain.com — and everything from @yourdomain.com works fine. Then someone sets up a transactional sender on mail.yourdomain.com or notifications.yourdomain.com. Mail goes out with that subdomain in the From address, and Gmail flags it.
First, a common misconception. Your apex DMARC record already covers subdomains. Without an sp= tag, subdomains inherit the p= policy, so adding sp= or publishing a subdomain DMARC record changes how failing mail is treated. It cannot make failing mail pass.
What makes DMARC pass is alignment: either SPF or DKIM must pass and match the domain in the From address. Relaxed alignment (the default) accepts the apex or any subdomain of it, so a d=yourdomain.com DKIM signature aligns with mail.yourdomain.com. The usual failure is a sender that signs with its own domain and uses its own Return-Path, so neither check lines up with your From.
Check your current DMARC record:
dig +short TXT _dmarc.yourdomain.com
If you see something like:
"v=DMARC1; p=reject; rua=mailto:dmarc@yourdomain.com"
that policy applies to the subdomain too. So with p=reject, misaligned subdomain mail isn't just flagged; receivers may refuse it outright.
Fix: Make the sender's authentication align with the subdomain
In the sender's domain-authentication settings, add the subdomain you actually send from. Publish the DKIM record they give you (so mail is signed with d= set to your domain or the subdomain) and, if they offer one, a custom Return-Path domain so SPF aligns too. One aligned method is enough for DMARC to pass, but having both is sturdier.
Option: Give the subdomain its own policy (optional)
If you want different enforcement on a subdomain — say p=quarantine while you're still testing — you can publish a record on it:
_dmarc.mail.yourdomain.com. TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@yourdomain.com"
This softens the consequence of a failure. It doesn't repair the failure, so treat it as a temporary cushion.
Option: Don't send from subdomains
If the subdomain sending was accidental or unnecessary, configure the service to send from your apex domain instead. One less thing to maintain.
To verify after fixing, send a test from the subdomain to Gmail, open "Show original," and check:
dmarc=pass header.from=mail.yourdomain.com
If it still says fail, look at the dkim= and spf= lines above it to see which domain each one authenticated.
This is the frustrating one. Your CRM, helpdesk, or transactional sender is configured "correctly" — DKIM enabled, SPF includes added — and DMARC passes. But Gmail still shows the spoofing banner.
Why? Because DMARC passing may not be the only thing a receiver weighs. (If it were that simple, we'd all be done here.) Mailbox providers don't publish their full rules, but plausible extra signals include:
A likely culprit: the vendor recently changed IPs or rotated infrastructure, or you only just enabled custom DKIM, so the sending pattern is new to the receiver.
Fix: Wait and keep sending
To be blunt, this advice feels like a cop-out. But if authentication is passing (verify with "Show original"), a warning tied to a new sending pattern may fade as legitimate mail accumulates. Don't keep changing configurations in the meantime. That only resets the pattern again.
Fix: Check for duplicate or conflicting DKIM signatures
Some vendors sign messages twice — once with their domain, once with yours. This is usually fine, but occasionally the dual signatures confuse filters. Check "Show original" for multiple DKIM-Signature headers. If one uses d=yourdomain.com and another uses d=sendgrid.net (or similar), and the order is unusual, contact the vendor about single-signature configuration.
Fix: Verify Return-Path alignment
Even if DMARC passes via DKIM alignment, a completely misaligned Return-Path can trigger additional heuristics. Open "Show original" and find the Return-Path header. Ideally, it should be on your domain or a subdomain of your domain:
Return-Path: [bounce@em1234.yourdomain.com](mailto:bounce@em1234.yourdomain.com)
Not:
Return-Path: [bounce@sendgrid.net](mailto:bounce@sendgrid.net)
Many vendors let you configure a custom Return-Path domain, though each names it differently. If yours doesn't show your domain, look in the vendor's domain authentication settings for the option, or check their docs.
This one has nothing to do with DNS. Your authentication is perfect. DMARC passes. But your display name looks like this:
From: "admin@yourdomain.com" [noreply@yourdomain.com](mailto:noreply@yourdomain.com)
Or this:
From: "support@yourdomain.com via HelpDesk" [helpdesk-noreply@helpdesktool.com](mailto:helpdesk-noreply@helpdesktool.com)
Gmail's impersonation detection sees an email address in the display name that differs from the actual From address. Even if both addresses are on your domain, the pattern matches what spoofers do — put a trusted-looking address in the display name to fool recipients who don't check the actual From.
Fix: Use human-readable display names
From: "Your Company Support" [support@yourdomain.com](mailto:support@yourdomain.com)
Not:
From: "support@yourdomain.com" [support@yourdomain.com](mailto:support@yourdomain.com)
The redundancy looks robotic. The display name should be a name, not an email address. Email-as-display-name is a bad convention, and plenty of tools still default to it.
Fix: Remove "via" constructions when possible
Many helpdesk tools append "via ToolName" to display names. Some recipients' spam filters may treat this pattern with suspicion. If your tool allows it, disable the "via" suffix. If it doesn't, and spoofing warnings persist, consider subdomain delegation where the From address actually comes from your domain infrastructure rather than theirs.
Fix: Don't mix domains in the same From
If your display name mentions yourdomain.com but the actual From is helpdesktool.com, that's an impersonation signal. Either configure the tool to send from your domain (with proper DKIM), or use a display name that doesn't reference your domain at all.
When you get the spoofing warning, resist the urge to immediately start changing DNS records. Work through this sequence first:
Step 1: Get the raw headers
Gmail: Open message → three dots → "Show original" Outlook: Open message → File → Properties → Internet headers Apple Mail: View → Message → Raw Source
Step 2: Check authentication results
Look for the Authentication-Results header. You want to see:
dkim=pass header.d=yourdomain.com
spf=pass
dmarc=pass header.from=yourdomain.com
If any of these show fail, that's your primary problem — fix authentication before worrying about heuristic detection. Our DMARC ramp guide and third-party DKIM fix guide cover those scenarios.
Step 3: Check for subdomain issues
If header.from shows a subdomain, verify that:
d= set to your domain or that subdomain (relaxed alignment accepts either)Your apex DMARC policy already applies to subdomains by default, so there's no separate coverage to add.
Step 4: Check the display name
In raw headers, find the From: line and examine the display name in quotes. Does it contain an email address? Does it look like an impersonation attempt? Clean it up.
Step 5: Check Return-Path domain
Find Return-Path: in headers. If it's on a completely different domain with no relation to yours, that's a signal. Not always a problem — DMARC can pass via DKIM alone — but it contributes to suspicion scores.
Step 6: Check DMARC reports for the sender IP
If you have DMARC aggregate reports (rua=mailto: in your record), look for the IP address that sent the message. Is it showing consistent pass results, or intermittent failures? Intermittent issues suggest a misconfiguration on the vendor side or rotating infrastructure.
Pause. Before assuming it's a false positive, verify you are the legitimate sender.
Check with your team:
A "spoofing" warning can be correct. Picture a marketing teammate who signs up for a newsletter tool under a personal email and sets it to send "from" the company domain. DKIM isn't set up, SPF doesn't include the tool, DMARC fails, and the receiver rightly flags it.
The fix there isn't technical. It's tracking down who set it up and either properly onboarding that sender or shutting it down. Awkward conversation? Yes. Necessary? Also yes.
Once you've fixed the immediate issue, set up guardrails:
Document all authorized senders. Maintain a list of every service that sends email as your domain — transactional, marketing, helpdesk, CRM, invoicing, monitoring alerts. For each one, document which domain/subdomain it uses and confirm DKIM/SPF are configured.
Monitor DMARC reports. If you're not already parsing aggregate reports, start. You should be. Tools like dmarcian or Postmark DMARC Digests turn XML into readable dashboards. Set alerts for new sending sources or authentication failures.
Know what your DMARC policy covers. Subdomains inherit p= unless you set sp=. Add sp= only if you deliberately want subdomains treated differently, such as sp=quarantine while you're ramping. It's a policy choice, not an authentication fix.
Audit display names across all senders. Check that every tool sending as your domain uses a clean, human-readable display name that doesn't include email addresses or suspicious patterns.
Test before going live. When adding a new vendor or subdomain, send test emails to Gmail, Outlook, and Yahoo before production use. Check headers. Verify authentication. Catch spoofing warnings in testing, not from customer complaints. It takes five minutes. Do it. On JustEmails those tests count toward a daily sending ceiling that ramps up after domain verification: no more than 50 a day in the first week, 200 in the second, and up to 500 from day 15. Mailbox sends and API sends share the same count, and the clock starts at domain verification rather than signup, so a domain you verified today starts at the bottom of that ramp even on a long-standing account.
Gmail's spoofing detection looks for mismatches between the visible From address and the authenticated sender. Common triggers: email sent from a subdomain whose SPF and DKIM don't align with the From address, a third-party relay (CRM, helpdesk, transactional sender) where DKIM isn't configured to sign with your domain, or a display name that looks like an email address (e.g., 'admin@yourdomain.com noreply@yourdomain.com'). Any of these can trip a spoofing warning even when you're the legitimate sender.
DMARC failure means authentication checks failed — SPF or DKIM didn't align with the From domain. Spoofing warnings are a separate heuristic layer. You can pass DMARC and still get flagged for spoofing if the display name looks suspicious, or if the message metadata patterns match known spoofing signatures. Fixing DMARC alignment is necessary but not always sufficient — you may also need to clean up display names and ensure consistent sending patterns.
Send a test email from the subdomain to Gmail, open it, click the three dots, and select 'Show original.' Look for the Authentication-Results header. If DMARC shows 'fail' with 'header.from=subdomain.yourdomain.com', neither SPF nor DKIM passed with a domain that matches the subdomain. Your apex DMARC policy already applies to subdomains, so look at the dkim= and spf= lines to see which domain each authenticated, then fix the sender's SPF or DKIM setup so at least one aligns.
Yes. Gmail and Outlook look at display names, not just headers. If your display name contains an email address — especially one that differs from the actual From — it triggers suspicion. 'John Smith john@yourdomain.com' is fine. 'john@yourdomain.com noreply@yourdomain.com' looks like someone trying to impersonate john@ while sending from noreply@. Even if authentication passes, the pattern is a red flag. Clean up display names to use human-readable text, not email addresses.
Unlimited custom domain email hosting for $49/year flat — unlimited domains, unlimited mailboxes, 10 GB storage, full IMAP/SMTP. Built for agencies, freelancers, and anyone managing email across more than one domain.