SPF Record Checker
Advanced DNS-over-HTTPS SPF checker. Visualizes nested lookups, validates RFC 7208 compliance, and audits the 10-lookup limit instantly from your browser.
About
Email deliverability hinges on trust. When an email server receives a message claiming to be from your domain, it consults the Sender Policy Framework (SPF) to verify the sender's identity. If this handshake fails, your critical communications end up in the spam folder, or worse, are rejected entirely.
This tool acts as a forensic scanner for your SPF records. Unlike standard lookup tools that rely on cached server-side queries, this system utilizes DNS-over-HTTPS (DoH) to fetch live records directly from authoritative sources via your browser. This ensures privacy and eliminates propagation delays.
The validator rigorously enforces RFC 7208 standards, paying special attention to the notorious 10-lookup limit. It recursively unpacks every include mechanism, mapping out the entire dependency tree to identify unauthorized senders, broken chains, or syntax errors that threaten your domain reputation.
Formulas
The core constraint of SPF is the lookup limit aimed at preventing Denial of Service attacks. The validator calculates the cost C using the following summation:
Where m represents a mechanism and the condition for validity is:
If C exceeds this threshold, the SPF record returns a PermError, and emails may be rejected. Note that ip4 and ip6 mechanisms have a cost of 0, while mx, a, and include incur a cost of 1.
Reference Data
| Mechanism | Syntax Example | DNS Cost | Description |
|---|---|---|---|
| Version | v=spf1 | 0 | Mandatory start of the record. Identifies the text string as an SPF record. |
| IPv4 | ip4:192.0.2.0/24 | 0 | Authorizes a specific IPv4 address or CIDR range. No DNS lookup required. |
| IPv6 | ip6:2001:db8::/32 | 0 | Authorizes a specific IPv6 address or CIDR range. No DNS lookup required. |
| Include | include:_spf.google.com | 1 | Triggers a recursive lookup of another domain's SPF record. Counts towards the limit. |
| A Record | a or a:mail.example.com | 1 | Authorizes the IP address listed in the domain's A record. |
| MX Record | mx | 1 | Authorizes the IPs of the servers listed in the domain's MX records. |
| All | -all or ~all | 0 | The catch-all policy. - (Hard Fail), ~ (Soft Fail), ? (Neutral). |
| Redirect | redirect=example.net | 1 | Replaces the current record entirely with the target domain's record. |