Email spoofing: SPF and DMARC for your domain
You bought a domain for your app, and with it the risk that someone else sends email from it. SPF and DMARC are two DNS records that tell mail servers what to do with messages that only pretend to be yours. Many new domains have neither.
Public Runs on every scan. We only read what a browser or a public lookup would.
What it is
SPF is a TXT record that lists the servers allowed to send mail for your domain, for example v=spf1 include:_spf.google.com ~all. DKIM signs your outgoing mail with a key published in DNS. DMARC, a TXT record at _dmarc.yourdomain.com, ties them together: it tells receivers whether to accept, quarantine or reject mail that fails the checks, and where to send reports. You need all three for receivers to trust your mail and distrust forgeries.
What can happen
Without DMARC enforcement, anyone can send an email with your domain in the From line: a fake password reset, an invoice from “billing@yourapp.com”, a message to your users asking them to log in on a lookalike site. Your users cannot tell the difference. As a side effect, your own transactional mail is more likely to land in spam, because receivers cannot tell your real messages from fakes.
How Shypset checks it
This is a Public check: we read your public DNS records, the same lookup any mail server makes. We report:
- No SPF record, or more than one, which makes SPF invalid.
- SPF that allows everyone (
+all) or only says “neutral” (?all). - SPF over the limit of 10 DNS lookups, which makes it fail at receivers.
- No DMARC record, a
p=nonepolicy that only monitors, or a policy applied to only part of the mail. - Missing DMARC aggregate reports (
rua) and no DKIM key on common selectors.
We also look at MTA-STS, TLS-RPT and BIMI, and combine everything into an email security grade in the report.
How to fix it
- Publish one SPF record listing every service that sends mail for you (your mailbox provider, your transactional email service), ending in
~allor-all. - Turn on DKIM in each of those services and add the DNS records they give you.
- Add
_dmarcwithv=DMARC1; p=none; rua=mailto:dmarc@yourdomain.comto start collecting reports. - After a couple of weeks with clean reports, move to
p=quarantine, thenp=reject. - If the domain sends no mail at all, publish
v=spf1 -allandp=reject.
Example finding
How the finding looks in a report, with its fix prompt.
Evidence
DNS TXT _dmarc.example.com: no record SPF: v=spf1 include:_spf.google.com ~all
Fix prompt
Our domain example.com has SPF but no DMARC record. Give me the exact DNS records to add: a DMARC TXT record at _dmarc with p=none and an rua address for reports, plus the DKIM records for the services in our SPF. Then give me a short plan for moving to p=quarantine and p=reject.
Questions
- My app does not send email. Do I still need this?
- Yes. A domain with no records is easy to spoof. Publish a reject-all SPF and DMARC policy.
- Do you send any email to test this?
- No. We only read public DNS records.
Check your email records
Paste your URL on the home page; email security is part of every scan.
Check your domain