Locking down domains that never send email
Unused domains are easy spoofing targets. Publish a null MX, a deny-all SPF record and a reject DMARC policy so nobody can send mail as them.

On this page(11 sections)
- Why parked domains get abused
- Record 1: null MX
- Record 2: SPF that authorizes nothing
- Record 3: DMARC at reject
- The reporting address
- Optional: an empty DKIM policy
- The full set
- Domains that host a website but send no mail
- Rolling it out across a portfolio
- What happens when a parked domain becomes active
- Checklist
- Key takeaways
Most organizations own more domains than they use: old brand names, typo variants bought defensively, country-code versions, product names that never launched. Every one of them can be spoofed in email unless you tell receivers that it never sends mail.
Doing that takes three DNS records and about ten minutes per domain.
Why parked domains get abused
A domain with no email-related DNS records gives receivers nothing to work with. SPF returns none, there is no DKIM, and there is no DMARC policy. Receivers have to judge spoofed mail from that domain purely on content and reputation signals.
Attackers know this. A defensively registered typo domain or an old brand name is a convincing From address precisely because it really belongs to you. Phishing and invoice fraud using such domains can look more credible than mail from an obviously unrelated domain.
The fix is to publish records that say, unambiguously, "this domain sends no email and accepts no email."
Record 1: null MX
RFC 7505 defines a "null MX" record, which declares that a domain does not accept mail:
parked-example.com. MX 0 .
That is an MX record with preference 0 and a target of a single dot, the DNS root. It tells sending servers not to attempt delivery, so they fail fast with a clear error instead of retrying against A records for days.
Why does inbound mail matter for spoofing? Some receivers check whether the sender domain can receive mail, and treat domains that explicitly refuse it with suspicion when they appear as senders. More importantly, bounces and replies to spoofed messages no longer bounce around trying to reach a domain that has no mail server.
A null MX must be the only MX record on the name.
Record 2: SPF that authorizes nothing
parked-example.com. TXT "v=spf1 -all"
No mechanisms, then -all. Any IP sending with this domain in the envelope sender fails SPF. For a domain that truly never sends, there is no legitimate source that could be broken by a hard fail, so -all is the right choice here even if you use ~all on active domains.
Record 3: DMARC at reject
_dmarc.parked-example.com. TXT "v=DMARC1; p=reject; rua=mailto:[email protected]"
With no SPF-authorized senders and no DKIM keys, every message using the domain in the From header fails DMARC, and p=reject asks receivers to refuse it. Because sp defaults to p, subdomains are covered too. If your reporting tools support the newer DMARC specification, you can add np=reject explicitly for non-existent subdomains, although with p=reject and no sp, it inherits reject anyway.
The reporting address
Including rua is optional but useful. Aggregate reports for a parked domain should be nearly empty. When they show volume, someone is spoofing that domain, which is valuable to know. If the report address is at a different domain, as in this example where the parked domain reports to example.com, the receiving domain must publish an authorization record:
parked-example.com._report._dmarc.example.com. TXT "v=DMARC1"
Optional: an empty DKIM policy
There is no standard way to say "no DKIM keys exist" for a whole domain, since keys live at individual selectors. Some guides suggest publishing a wildcard revocation:
*._domainkey.parked-example.com. TXT "v=DKIM1; p="
This makes any selector an attacker might name resolve to a revoked key. It is harmless and some operators like it, but it adds little beyond what DMARC p=reject already achieves, so treat it as optional.
The full set
| Name | Type | Value |
|---|---|---|
parked-example.com |
MX | 0 . |
parked-example.com |
TXT | v=spf1 -all |
_dmarc.parked-example.com |
TXT | v=DMARC1; p=reject; rua=mailto:[email protected] |
*._domainkey.parked-example.com |
TXT | v=DKIM1; p= (optional) |
Domains that host a website but send no mail
The same records work for a domain that serves a website but never sends email, such as a marketing site on a separate domain. The MX, SPF and DMARC records do not interfere with A, AAAA or CNAME records for the web server.
Be careful with one case: if the domain might need to send transactional mail later (a contact form, for example), start with the lockdown and loosen it deliberately when you add a sender, rather than leaving it open "just in case."
Rolling it out across a portfolio
If you own dozens of domains, manage them as a group:
- Inventory every domain from your registrar accounts, including domains bought by marketing or legal.
- Classify each as sending, receiving only, or parked.
- Apply the parked template to every parked domain, ideally through infrastructure as code or a script against your DNS provider's API.
- Point all
ruaaddresses to one mailbox or reporting service, with authorization records in place. - Review quarterly. New domains get registered, and occasionally a parked domain is quietly put into use.
A quick check script:
for d in parked-example.com example-old.com examp1e.com; do
echo "== $d"
dig +short MX "$d"
dig +short TXT "$d" | grep -i spf1
dig +short TXT "_dmarc.$d"
done
Every parked domain should show 0 ., "v=spf1 -all" and a p=reject policy.
What happens when a parked domain becomes active
Domains change roles. A defensive registration becomes a product name, or an old brand is revived for a campaign. When that happens, reverse the lockdown in a deliberate order: add the new sender's SPF include and DKIM keys first, verify that test messages pass authentication, temporarily lower DMARC to p=none or p=quarantine while you watch reports, and only then remove the null MX if the domain also needs to receive mail. Doing it in the opposite order leaves a window where the domain is neither protected nor working.
Checklist
- Null MX (
MX 0 .) as the only MX record. v=spf1 -allas the only SPF record.- DMARC with
p=rejectand an aggregate report address. - Authorization record at the receiving domain if reports go elsewhere.
- Portfolio-wide inventory and quarterly review.
Key takeaways
- Unused domains are attractive for spoofing because they genuinely belong to you.
- A null MX, a deny-all SPF record and a reject DMARC policy declare that a domain neither sends nor receives mail.
- Aggregate reports for parked domains act as an early warning for spoofing attempts.
- Treat your domain portfolio as a group, with templates and regular reviews.
Start with Koltrix
Your domain, one inbox, and an API that sends.
A team inbox where AI sorts and drafts (nothing is sent without your click), plus the transactional API and SMTP relay your product sends with. 7 days free, no card.


