Someone is sending email from your domain: what to do right now
Bounce-backs for messages you never sent, or a customer asking about an invoice you didn't send, usually mean one of two things: someone is forging your address, or someone has got into one of your email accounts. Here's how to tell which, what to do first, and how to make forgeries of your domain easy for mail servers to block.
The short answer
Bounce-backs for messages you never sent usually mean someone is forging your address (spoofing). Messages in your Sent folder that you didn't write, or forwarding rules you didn't create, mean someone is inside one of your accounts. If you see any sign of the second, lock that account down first. Then check your domain's SPF and DMARC records: an enforced DMARC policy is what asks other mail servers to block forgeries of your domain.
Spoofed or hacked? Tell them apart
| What you notice | What it usually means |
|---|---|
| Bounce-backs ("undeliverable") for email you never sent | Spoofing. When forged mail with your address in the From line reaches an address that doesn't exist, the receiving server sends the bounce to you. Microsoft calls this backscatter (Microsoft). |
| Messages in your Sent or Deleted folder that you didn't write | A hacked mailbox (Microsoft). |
| Inbox rules or forwarding you didn't set up, or mail going missing | A hacked mailbox. Attackers add rules that forward your mail to unknown addresses or move messages into folders you don't check (Microsoft). |
| Password changes you didn't make, or unexplained lockouts | Possibly a hacked account (same Microsoft guide). |
The From address is a slightly different domain, like examp1e.com | A lookalike domain. Your records and accounts aren't involved; see what DMARC can't stop. |
| A customer got a fake invoice "from you" | Could be either. Check the message itself, as below. |
The message itself is the best evidence. Ask the person who received it to forward it as an attachment or send you its full headers (in Gmail, More → Show original: Gmail Help; in Outlook, view the message headers). Find the Authentication-Results header:
dmarc=fail, on a message that didn't come from you or any service you use: it was forged.dmarc=pass: it went through a server that's allowed to send for your domain. That's one of your accounts, or a service someone set up, such as an invoicing or newsletter tool. Treat it as a possible hacked account until you've ruled that out.
An empty Sent folder doesn't rule out a hacked account: Microsoft lists missing or deleted email among the signs of one.
If an account was hacked: lock it down first
Do this before anything else, from a device you trust. Microsoft's guide for business mailboxes and Google's steps for a hacked account cover the same ground (Microsoft; Google):
- Change the password to a new, unique one. Don't send the new password by email, since the attacker may still be reading it.
- Turn on multi-factor authentication, and remove any sign-in methods or devices you don't recognize. CISA calls security keys and passkeys the phishing-resistant option (CISA).
- Sign out every other session and device.
- Delete inbox rules, filters and forwarding you didn't create.
- Remove apps you don't recognize that have access to the account.
- Check whether anyone sent your bank, customers or suppliers new payment instructions in your name.
If an IT person or provider manages your email, call them now: in Microsoft 365 and Google Workspace, some of these steps need an admin.
If you were spoofed: what SPF, DKIM and DMARC do
Email's delivery protocol doesn't verify senders: as Microsoft's documentation puts it, SMTP by design makes no effort to validate that the sender is who they claim to be. The FTC warns that without email authentication, scammers can use your domain name for phishing emails that look like they came from you. Three DNS records are the fix:
| Record | Where it lives | What it proves |
|---|---|---|
| SPF | A TXT record on your domain starting v=spf1 | Which servers may send mail for your domain. It checks the hidden envelope sender, not the From address people see (RFC 7208). |
| DKIM | A key at selector._domainkey on your domain | A signature showing which domain signed the message and that it wasn't altered in transit (RFC 6376). |
| DMARC | A TXT record at _dmarc on your domain | Ties SPF and DKIM to the visible From address, tells receivers what to do when both fail (nothing, quarantine or reject) and where to send reports (RFC 9989). |
The key idea is alignment: a message passes DMARC only if SPF or DKIM passes for your domain, the one in the From address, or by default one of its subdomains (RFC 9989 §3.2.10; Microsoft). Without that check, a scammer can pass SPF with a domain they own while showing yours (Microsoft).
Check your domain in five minutes
Open Terminal on a Mac, or Command Prompt on Windows, and run the lookups below with your own domain in place of example.com. Prefer a browser? Google's free Admin Toolbox Dig does the same lookups.
1. SPF
nslookup -type=TXT example.com
Find the line that starts with v=spf1. There should be exactly one.
2. DMARC
nslookup -type=TXT _dmarc.example.com
Look for v=DMARC1 and note the p= value.
3. DKIM
First find your selector. Open a message you sent, view its full headers and find the DKIM-Signature header: s= is the selector and d= is the signing domain (RFC 6376 §3.5). Google Workspace's default selector is google (Google); Microsoft 365 uses selector1 and selector2 (Microsoft). Other services and custom setups use their own names. Then look it up:
nslookup -type=TXT google._domainkey.example.com
Swap google for your selector
An answer with a long p= value, usually after v=DKIM1, means the key is published. An empty p= means the key was revoked (RFC 6376 §3.6.1).
4. A real message
Send yourself a message at a Gmail address and choose More → Show original. The Authentication-Results header shows the spf=, dkim= and dmarc= results for that message. You want all three to say pass.
How to read what you find
Our report grades SPF and DMARC together, because DMARC is what decides whether forged mail gets blocked. The ratings below are what our full report shows.
SPF
| What you see | What it means | While DMARC isn't enforcing | Once DMARC is enforcing (quarantine or reject) |
|---|---|---|---|
No v=spf1 record | No list of allowed senders. Once DMARC is enforcing, forged mail still fails DMARC, but your real mail can pass only through DKIM. | High | Medium |
Two or more v=spf1 records, or a redirect= to a record that isn't there | SPF is broken: receivers return a permanent error (RFC 7208 §4.5). | High | Medium |
SPF ends +all | Authorizes every server on the internet, so forged mail passes SPF and, through it, DMARC too. | High | High |
SPF ends ?all, or has no all (and no redirect= to a record that has one) | No verdict for servers you haven't listed (RFC 7208 §4.7). | High | Low |
SPF ends ~all | Unlisted servers "soft fail": accepted but marked. Google recommends this ending; Microsoft recommends -all. If you send through Microsoft 365, our report also suggests -all; once DMARC is enforcing, that's a note that doesn't count against you. | Low | No finding |
SPF ends -all | Unlisted servers fail. Some receivers then reject the message before DMARC runs, even if it would have passed DMARC through DKIM (RFC 9989 §7.1). | No finding | No finding |
"Enforcing" means the policy receivers will actually apply is quarantine or reject. p=quarantine in test mode (t=y or pct=0) counts as not enforcing, and so do two DMARC records; p=reject in test mode still counts, because receivers then apply quarantine (see the DMARC table below). One exception for ~all: if a pct= tag limits p=quarantine to part of your mail, the Low note stays.
DMARC
| What you see | What it means | In our full report |
|---|---|---|
| No DMARC record | Receivers get no instruction about forged mail. | High |
| Two or more DMARC records | Receivers discard them all, so no DMARC policy applies, even if one says p=reject (RFC 9989 §4.10). | High |
p=none, or no valid p= | Monitoring only; a record without p= counts as p=none (RFC 9989 §4.7). Forged mail is delivered unless the receiver's own filters catch it. | High |
p=quarantine with t=y or pct=0 | Test mode: receivers apply one level less, so in practice p=none (same section). Our scan reads the older pct=0 the same way. | High |
p=quarantine | Forged mail is treated as suspicious, usually sent to spam. | Medium |
p=reject with t=y or pct=0 | Test mode: receivers apply p=quarantine instead. Our scan reads pct=0 the same way. | Medium |
p=reject with pct= from 1 to 99 | Receivers that still read pct= refuse only that share of forged mail and quarantine the rest. RFC 9989 retired the tag (Appendix A.6), so remove it. | Low |
p=reject | Receivers are asked to refuse forged mail. This is the goal. | No finding |
One cause, one High finding. When SPF is missing, broken, or ends ?all or with no all, and DMARC isn't enforcing, nothing asks receivers to block forgeries of your domain. Our report shows that as a single High finding, "Criminals can send email that looks like it's from you", with both fixes. The SPF and DMARC problems behind it are listed under it as Low findings, each with its own evidence and fix, instead of as two more Highs. SPF ending +all is that same High finding whatever your DMARC policy says. The report also lists DKIM as a note for you to confirm, because the selector name can't be reliably found from outside.
How to close each gap
- No SPF: publish one that names your email provider. There are ready-made examples in step 1 of our DMARC guide.
- Two SPF records, or a broken
redirect=: merge them into one record and delete the extra, or pointredirect=at a name that has exactly one SPF record. +all,?allor noall: once every legitimate sender is listed, end the record in~allor-all. Either works once DMARC is enforcing; the DMARC guide explains the trade-off.- No DMARC, or
p=none: follow how to set up DMARC, step by step to reachp=quarantineand thenp=rejectwithout blocking your own mail (Google). - DKIM off: turn on DKIM signing in your email admin console and at every service that sends as you.
- Domains that never send email, such as old names and parked domains: publish these two records so receivers reject mail that claims to come from them (Microsoft: SPF, DMARC).
@v=spf1 -all
SPF for a domain that never sends email
_dmarcv=DMARC1; p=reject;
DMARC for a domain that never sends email
The FTC's advice to small businesses is simple: if your business email uses your company's domain, make sure your email provider has all three tools, SPF, DKIM and DMARC (FTC). DMARC blocks spoofing only once it's enforced, and only at receiving servers that check it.
Warn customers and vendors
If a fake invoice or payment request went out in your name, tell the people most likely to act on it: customers with open invoices, and suppliers you pay. Keep it short, and make one rule clear: you never change payment details by email alone. The FBI's Internet Crime Complaint Center advises confirming changes to account details through a separate channel (IC3), and the FTC says to call a number you know is correct, not one in the email (FTC).
Subject: Please ignore emails asking you to change how you pay us We've learned that someone is sending emails that pretend to come from [Your Business]. Some ask for payment or give new bank details. We have not changed our payment details, and we never change them by email alone. If you get an email asking you to pay us differently, don't reply and don't pay. Call us to check, using the number on our website or a past invoice, not a number in the email. If you've already paid in response to one of these emails, contact your bank right away, then let us know. Thank you, [Name], [Your Business]
Report it
- If money was sent, call your bank at once and ask for a recall or reversal of the payment (IC3).
- File a complaint with the FBI's Internet Crime Complaint Center at ic3.gov. IC3 asks people to file even when they're unsure whether it counts.
- If an account was hacked, tell your email provider or IT support too.
What DMARC can't stop
Three different tricks get called spoofing, and they need different defenses:
- Exact-domain spoofing: the From address is
billing@example.com, your real domain. SPF, DKIM and an enforced DMARC policy are built to stop this. - Lookalike domains:
examp1e.comorexample-billing.com. DMARC doesn't cover these (RFC 9989 §2.2). - Display-name tricks: "Example Billing" in front of a free webmail address. Also outside DMARC's scope (same section).
For the last two, the defense is process: when an email asks for money, new payment details or sensitive information, call the sender on a number you know is correct (FTC), and look closely at the sender's address, especially on a phone (IC3).
What our free scan checks: it reads your domain's public SPF and DMARC records and checks them for the problems in the tables above; the $7 report shows each one's rating and the exact fix. It's passive: the same DNS lookups anyone can make. It can't see inside your mailboxes, so it won't spot a hacked account. Check your domain free.
Common questions
If I have SPF, am I protected?
Not on its own. SPF checks the hidden envelope sender, not the From address your customers see, so a scammer can pass SPF with a domain they own while showing yours (Microsoft). DMARC is what ties the check to the visible From address, and it only asks receivers to act once it's set to quarantine or reject.
A customer got an email from my real address that I didn't send. Was I spoofed?
Ask them to forward it as an attachment, or to send you its full headers, and check the Authentication-Results line. If it shows dmarc=fail and the message didn't come from you or a service you use, it was forged; an enforced DMARC policy (quarantine or reject) asks receivers to block those. If it shows dmarc=pass, it went through a server allowed to send for your domain: one of your accounts, which means changing that password and turning on multi-factor authentication, or a service you or a colleague set up, such as an invoicing or marketing tool. Legitimate mail can also fail DMARC after forwarding, or when it comes from a service that isn't set up for your domain (Microsoft), so check your DMARC reports before you enforce.
Why doesn't the scan confirm DKIM?
A DKIM key is published under a selector name. The name is in the DKIM-Signature of every message you send, but providers and custom setups use different names, so an outside scan can't reliably find yours. That's why our full report lists DKIM as a note rather than an issue. Use the steps above to find your selector and confirm it yourself.
Sources
- Microsoft Learn — Backscatter in Microsoft 365
- Microsoft Learn — Respond to a compromised email account in Microsoft 365
- Google Account Help — Secure a hacked or compromised Google Account
- Microsoft Learn — Email authentication in Microsoft 365
- FTC — Cybersecurity for Small Business: Email Authentication
- FTC — Cybersecurity for Small Business: Common Cyberattacks
- FBI Internet Crime Complaint Center (IC3) — Business Email Compromise
- FBI Internet Crime Complaint Center (IC3) — File a complaint
- IETF — RFC 9989: Domain-Based Message Authentication, Reporting, and Conformance (DMARC), May 2026
- IETF — RFC 7208: Sender Policy Framework (SPF)
- IETF — RFC 6376: DomainKeys Identified Mail (DKIM) Signatures
- Microsoft Learn — Set up DMARC to validate email in Microsoft 365
- Microsoft Learn — Set up SPF to identify valid email sources for your Microsoft 365 domain
- Microsoft Learn — How to use DKIM for email in your custom domain
- Google Workspace Admin Help — Set up SPF
- Google Workspace Admin Help — Set up DKIM
- Google Workspace Admin Help — Set up DMARC
- Gmail Help — Trace an email with its full header
- Microsoft Support — View internet message headers in Outlook
- Google Admin Toolbox — Dig
- CISA — More than a Password (multifactor authentication)
Standards and provider settings change. If your provider's current documentation differs from this guide, follow the provider.
Changes to this guide
- : First published.