Single reference for how email + DNS works across all domains. Written 2026-10-11.
Verify any record with: host -t MX <domain> / host -t TXT <domain>.
Secrets are not in Obsidian — see "Credentials" below.
1. Architecture (three layers)
Email is split so each concern uses the right tool — mailboxes and sending are deliberately separate (reputation isolation):
INBOUND → Cloudflare DNS (MX) → PurelyMail (mailboxes) → forward → Gmail
OUTBOUND → Amazon SES (verified, SPF+DKIM signed) ← websites / apps
DNS → Cloudflare (authoritative for all domains; also holds site A records)
Layer
Provider
Cost
Role
DNS
Cloudflare (authoritative NS)
$0
All DNS: A, MX, SPF, DKIM, DMARC
Inbound mailboxes
PurelyMail (mailserver.purelymail.com)
~US$10/yr flat, unlimited domains
Real domain mailboxes + forwarding
Reading mail
Gmail (samuelrolfe@gmail.com)
$0
PurelyMail forwards everything into Gmail
Outbound (websites)
Amazon SES (ap-southeast-2)
~$0 at low volume
Transactional sending, DKIM-signed
Why this shape: inbound uses PurelyMail (managed, so no residential-IP blacklist risk), outbound uses SES (deliverability + reputation isolation from the inbox). Neither uses a local home IP for mail.
2. Domains
Domain
Registrar
DNS (NS)
Site hosted
Status
audasmedia.com.au
Squarespace/CrazyDomains
Cloudflare (jo/osmar)
CMS sites still on InMotion (origin 173.231.229.92), proxied via Cloudflare
Email ✅ live; site migration pending
where-woof.com
Squarespace/CrazyDomains
Cloudflare (dane/barbara)
.13 (behind Caddy .35 → .13:3020), A → 144.6.86.11
Live ✅
kontra.day
Cloudflare (registered here)
Cloudflare (barbara/dane)
.13 (planned)
Being built (Go + htmx); email + A records not yet added
kontra.news
—
—
—
❌Expired — never delegated at registry; replaced by kontra.day
3. Email accounts / mailboxes
Address
Provider
Delivers to
Purpose
sam@audasmedia.com.au
PurelyMail
forwards → samuelrolfe@gmail.com
Primary personal/domain address
hello@where-woof.com
PurelyMail
forwards → samuelrolfe@gmail.com
where-woof enquiries
hello@kontra.day
PurelyMail
planned → samuelrolfe@gmail.com
kontra enquiries
(catch-all)
PurelyMail
→ samuelrolfe@gmail.com
Catches any address at the domain
Sending: Gmail "Send mail as" (via PurelyMail SMTP) for personal replies; Amazon SES for websites/apps.
4. DNS records per domain
All three use the same Cloudflare pattern. All mail records are DNS-only (grey cloud).
⚠️ Obsidian is backed up (cloud) — never put secrets in vault notes.
8. Key gotchas
MX must point at PurelyMail (mailserver.purelymail.com), not a local IP — residential IPs get blacklisted for mail.
Cloudflare Email Routing and an external provider (PurelyMail) conflict — Email Routing must be disabled on a domain before pointing MX at PurelyMail (MX records are locked while Email Routing is on).
SPF must merge providers: one TXT listing _spf.purelymail.comandamazonses.com.
DMARC passes via DKIM even with default MAIL FROM.
Add kontra.day to PurelyMail first to get its unique ownership proof, then add records in Cloudflare.