The rollout
From p=none to p=reject, safely
Jumping straight to p=reject is the classic mistake: the first invoice run from an accounts package nobody remembered gets rejected by every client. A safe rollout goes in stages.
- Find every sender. Microsoft 365, plus anything else that sends as you: accounting and invoicing software, website contact forms, your CRM, newsletters, scanners and booking systems.
- Fix SPF and DKIM. One tidy SPF record, and DKIM signing switched on for Microsoft 365 and every other service that supports it.
- Publish p=none with reporting. Nothing is blocked yet. The reports show who is sending as your domain and whether each genuine service passes.
- Move to p=quarantine. Once your genuine mail is passing, failing mail is treated as suspicious, usually landing in junk folders. Keep reading the reports.
- Move to p=reject. Failing mail is refused outright. This is the setting that properly stops exact-domain spoofing, and the goal for every domain you send from.
Don’t forget
Parked domains and reports
Domains you own but never send email from are easy to spoof. Give each one an SPF record of v=spf1 -all and a DMARC record of v=DMARC1; p=reject;, which tells the world no genuine email ever comes from them. Microsoft recommends the same DMARC record for your organisation’s .onmicrosoft.com domain if you don’t send email from it.
How long the rollout takes depends on how many systems send as you. A business that only sends from Microsoft 365 can move quickly. One with several other services needs longer at each stage, because some only send monthly, such as statement runs.
Aggregate reports arrive as compressed XML files, typically one a day from each receiving service, and they’re hard to read by hand. A DMARC reporting service turns them into a readable list of senders, which is how a forgotten system gets spotted before p=reject blocks it.