Complete Guide to Protecting Your Domain from Email Spoofing & Phishing
Email authentication can seem overwhelming, but it boils down to this:
Setting this up protects your brand, boosts deliverability, and keeps scammers from pretending to be you.
If you send email from your domain (even via tools like Mailchimp or Klaviyo), you need SPF, DKIM, and DMARC to:
A couple of questions you maybe be ask before reading through the setup:
Use a tool like MXToolbox to check SPF, DKIM, and DMARC records for your domain before making changes.
Terms like TXT record, @, and _dmarc can feel like another language to you.
🔧 Need access?
You (or your IT team) will need to log into your DNS host — usually GoDaddy, Cloudflare, or wherever your domain is registered. If you're unsure, ask whoever set up your website or email.
The fear of breaking email is real.
What would help: Add some reassurance and define what quarantine/reject mean in plain terms:
🔐 Don’t panic.
Starting with p=none
means nothing will be blocked — you're just monitoring. You can safely collect data and escalate later.
OK lets get to it.
SPF authorizes specific servers to send email on behalf of your domain. If someone else tries to send from your domain and they're not listed in your SPF record, the email can be flagged or rejected.
makefile
CopyEdit
v=spf1 include:_spf.google.com include:mailgun.org ~all
This record does three things:v=spf1
= versioninclude:
= allow other domains to send on your behalf~all
= soft fail (can also be all
for hard fail, but that’s riskier)@
(or leave blank depending on your provider)TXT
🧠 Pro Tip: You can only have one SPF record per domain. If you have more, they’ll be ignored. Combine all your services into a single string.
Use tools like:
DKIM adds a digital signature to each email. It proves that the email content wasn’t altered and that the sender is authorized by the domain owner.
s1._domainkey.yourdomain.com
TXT
v=DKIM1; k=rsa; p=...
🔁 Some providers (like Mailgun or Postmark) use rotating selectors — e.g. 202406._domainkey.domain.com. Keep them up to date.
Use:
DMARC builds on SPF and DKIM. It tells mailbox providers:
_dmarc.yoursendingdomain.com
TXT
ini
CopyEdit
v=DMARC1; p=none; rua=mailto:info@mailyser.com
v=DMARC1
: Versionp=none
: No enforcement yet (just monitor)rua=
: Aggregate report email addressruf=mailto:
→ Forensic reports (detailed failures)pct=50
→ Only apply to 50% of mail (during testing)aspf=s
→ Strict SPF alignmentadkim=s
→ Strict DKIM alignmentfo=1
→ Get failure reports even if just SPF or DKIM failsini
CopyEdit
v=DMARC1; p=quarantine; pct=100; rua=mailto:info@mailyser.com; ruf=mailto:forensic@yourdomain.com; adkim=s; aspf=s; fo=1
NOTE: we are using info@mailyser.com in the example as that is the email address we use when using Mailyser DMARC. If you are not using Mailyser, you use an email address that you monitor.
Once your DMARC policy is live, mailbox providers will send XML-format aggregate reports daily. These show:
Mailyser does this for you. We take the message sent back and analyse this in our Vitals sections:
https://www.mailyser.com/vitals
After 2–4 weeks of monitoring:
ini
CopyEdit
v=DMARC1; p=none; rua=mailto:info@mailyser.com
ini
CopyEdit
v=DMARC1; p=quarantine; pct=50; rua=mailto:info@mailyser.com
ini
CopyEdit
v=DMARC1; p=quarantine; pct=100
ini
CopyEdit
v=DMARC1; p=reject
This tells inbox providers to block unauthenticated mail completely.
StepComplete?SPF configured and tested✅ / ☐DKIM configured and tested✅ / ☐DMARC policy (p=none) live✅ / ☐Reports received and reviewed✅ / ☐Escalated to p=quarantine✅ / ☐Final policy set to p=reject✅ / ☐