# CWP Email DNS Checker

> Check a domain's MX, SPF and DMARC records and get a plain explanation of what's wrong. The three records that decide whether your email reaches the inbox.

Source: https://cwp.sg/tools/email-dns-checker/  
Last verified: 2026-08-04

**In short:** CWP Email DNS Checker is a free browser-based tool at https://cwp.sg/tools/email-dns-checker/ — no signup, no rate limit, and lookups go straight from your browser to public resolvers, so CWP never sees them.

## The three records that decide your deliverability

**MX** says where mail for your domain is delivered. No MX record means nobody can email you at all.

**SPF** is a TXT record listing which servers may send mail claiming to be from your domain. Receivers check it on every message.

**DMARC** is a TXT record at `_dmarc.yourdomain.com` telling receivers what to do when SPF or DKIM fails: ignore it, quarantine it, or reject it. It also asks for reports.

Get these three right and your mail behaves. Get them wrong and it silently lands in spam, which is much harder to notice than a bounce.

## The mistakes this tool looks for

**Two SPF records.** The most common serious fault. The spec permits exactly one `v=spf1` record per domain — with two, receivers treat SPF as permanently broken and stop trusting the domain. It usually happens when a second provider is added and appends its own record instead of merging.

**More than ten DNS lookups in SPF.** Each `include:`, `a`, `mx`, `ptr`, `exists` and `redirect` costs a lookup, and the limit is ten. Over that, SPF returns `permerror` and fails. Chained `include:` statements pull in other people's lookups too, so this creeps up on you.

**`+all` at the end.** This tells the world that any server may send as your domain. It's the same as having no SPF at all, and worse, because it looks configured. Use `-all` (hard fail) or `~all` (soft fail).

**No DMARC, or `p=none` forever.** `p=none` is a monitoring mode. It's the right place to start and the wrong place to stay — it asks receivers to do nothing. Move to `quarantine` and then `reject` once your reports are clean.

## If you're on free hosting

Nearly every free host blocks outbound SMTP, so `mail()` and contact forms silently fail no matter how good your DNS is. That's a deliberate anti-spam measure and no DNS record works around it.

Send over an HTTP API instead — Resend, SendGrid, Mailgun and Postmark all have free tiers and all work over port 443, which isn't blocked. Then add that provider to your SPF record. There's more on this in [how to host a website for free](/guides/how-to-host-a-website/free/).

---

Content Website Platform (cwp.sg) operates the free hosting it writes about; see https://cwp.sg/about/ for the methodology and the commercial disclosure.
