RFC 4408: Sender Policy Framework (SPF)

Original SPF specification. Obsoleted by RFC 7208 in 2014 with stricter language and clarifications.
Alaa
By Alaa
SMTPedia documents email infrastructure end to end: SMTP standards from the RFC archive, delivera...
7 min read Updated Aug 27, 2026 49 views
⚠ Obsoleted by RFC 7208. New implementations should reference the current version.
RFC 4408
Sender Policy Framework (SPF)
Obsoleted
Domain
Authentication
Published
April 2006
Obsoleted by
RFC 7208
SMTP relevance
Historical
↗ Read on rfc-editor.org

What this RFC defined

RFC 4408 defined the original Sender Policy Framework (SPF), specifying how domain owners publish authorised sending IPs in DNS TXT records and how receiving servers check them. It established the core check_host() algorithm and the v=spf1 record syntax that remains in use today under RFC 7208.

Where you would have seen it in practice

If you have SPF records published for your domains today (v=spf1 include:… ~all), they follow the syntax originally defined in RFC 4408 and refined in RFC 7208. The two are largely compatible in practice because RFC 7208 tightened ambiguous language rather than changing the record format.

How it connects to other RFCs

RFC 4408 was obsoleted by RFC 7208 in 2014. RFC 7208 resolved ambiguities around macro expansion, multiple SPF records, and error handling. The DMARC framework (RFC 7489) builds on SPF alignment regardless of which SPF RFC the record follows, since the v=spf1 syntax is identical in both.

Current status

RFC 4408 was obsoleted by RFC 7208 in April 2014. New SPF documentation and implementations should reference RFC 7208. Existing SPF records published under RFC 4408 syntax continue to evaluate correctly under RFC 7208, since the core record syntax was not changed by the update.

The first published SPF standard

RFC 4408 was the first standards-track publication of the Sender Policy Framework in April 2006. Before this document, SPF existed as an experimental idea championed by Meng Weng Wong and various early adopters, but there was no single authoritative reference. RFC 4408 codified the DNS TXT record syntax (v=spf1 include:_spf.google.com ~all), the “mechanisms” (a, mx, ip4, ip6, include, exists, all), the “qualifiers” (+, -, ~, ?), and the evaluation algorithm that receiving MTAs use to check whether a sender IP is authorized for a given domain.

Superseded by RFC 7208

RFC 4408 was declared “experimental” for its lifetime and was obsoleted by RFC 7208 in April 2014. The eight-year gap accumulated significant errata, clarifications, and operational experience. RFC 7208 also removed the SPF-specific DNS record type (which had been assigned but rarely used), leaving TXT records as the single canonical publication method. If your DNS still contains an SPF-type record, it can be safely removed; only the TXT record matters.

The 10-lookup limit and other pitfalls

RFC 4408 introduced the DNS lookup limit of 10 (excluding some cheap lookups), which was carried forward into RFC 7208. This limit exists to prevent SPF from acting as a DNS DoS amplifier. Domains that use nested “include” mechanisms often exceed 10 lookups without realizing it, producing “PermError” results that treat the SPF check as if it were absent. Tools like MXToolbox SPF Survey, dmarcian, and Kitterman SPF query counts help diagnose this. If SPF checks fail intermittently for legitimate senders, exceeding the 10-lookup limit is the most common cause.

Quick Reference

RFC 4408 (April 2006) was the original SPF (Sender Policy Framework) specification. Introduced the v=spf1 DNS TXT record syntax, mechanisms (a, mx, ip4, ip6, include), qualifiers (+, -, ~, ?), and verdicts (pass, fail, softfail, neutral, none, temperror, permerror). Obsoleted by RFC 7208 in April 2014. Historical relevance only: for current SPF implementation, reference RFC 7208. The syntax is essentially identical between the two RFCs; RFC 7208 clarified ambiguities, removed the deprecated SPF DNS record type (in favor of TXT), and refined operational guidance.

RFC 4408 at a glance

AspectDetail
PurposeOriginal SPF specification
StatusObsolete (superseded by RFC 7208)
Record locationDNS TXT (or dedicated SPF type, later deprecated)
Core syntaxIdentical to RFC 7208: v=spf1 + mechanisms + qualifier + all
PublishedApril 2006
Superseded byRFC 7208 (April 2014)

Changes from RFC 4408 to RFC 7208

AspectRFC 4408 (2006)RFC 7208 (2014)
DNS record typeTXT and dedicated SPF record type (both permitted)TXT only (dedicated SPF type removed)
Mechanismsa, mx, ip4, ip6, ptr, exists, includeIdentical (with ptr deprecated)
Qualifiers+, -, ~, ?Identical
Verdictspass, fail, softfail, neutral, none, temperror, permerrorIdentical
DNS lookup limit10 lookups (SHOULD)10 lookups (MUST; permerror if exceeded)
ptr mechanismAllowed but discouragedExplicitly deprecated (SHOULD NOT use)
Header fieldReceived-SPF (recommended)Received-SPF or Authentication-Results per RFC 8601

The dedicated SPF DNS record type (deprecated)

SPF as a dedicated DNS record type has been retired. RFC 4408 allowed SPF policies to be published as TXT records OR as a dedicated SPF record type (RR type 99). In practice, TXT records dominated because they worked with all DNS servers and tools, while the dedicated type required upgrades. RFC 7208 removed the dedicated type entirely; only TXT is permitted. Domains that published only the SPF record type must republish as TXT.

Upgrading from RFC 4408 to RFC 7208

ActionReason
Confirm SPF is in TXT record (not just SPF type)RFC 7208 removes SPF type
Remove any ptr mechanismsDeprecated in RFC 7208 section 5.5
Audit DNS lookup countMUST be 10 or fewer per RFC 7208
Consider Authentication-Results headerStandard way to report SPF verdict in modern deployments
Deploy with DMARC per RFC 7489SPF alone does not protect against From header spoofing

Common mistakes when SPF configuration references RFC 4408

Continuing to publish dedicated SPF record type. Some DNS management tools still allow SPF records via the dedicated type. Modern SPF evaluators query only TXT per RFC 7208. If your infrastructure has both TXT and SPF-type records, they must agree; if only the SPF-type record exists, no evaluator will find your policy.
Using ptr mechanism. Legal in RFC 4408 but explicitly deprecated in RFC 7208. Some evaluators refuse to process it; others always fail it. Remove ptr from all SPF records.
Referencing RFC 4408 in documentation or specs. New implementations should target RFC 7208. Referencing 4408 signals dated specifications; some parsers apply differently based on which RFC is referenced.
Missing the 10-lookup limit enforcement. RFC 4408 recommended (SHOULD) the limit; RFC 7208 requires (MUST) it. Real-world SPF records commonly exceed the limit when many third-party services are included. Fix: flatten SPF using tools like Kitterman SPF query count, dmarcian, or EasyDMARC. Static flattening breaks if third-party IPs change; dynamic flattening tracks.
Treating SPF as sufficient anti-spoofing. SPF authenticates MAIL FROM (envelope sender), not the visible From header. An attacker can pass SPF with their own domain in MAIL FROM while forging your brand in From. DMARC alignment closes this. Deploy SPF as a component of DMARC, not standalone.
SPF evolution and companion RFCs
  • RFC 7208: Current SPF specification (obsoletes RFC 4408)
  • RFC 6376: DKIM (paired authentication mechanism)
  • RFC 7489: DMARC (policy layer over SPF and DKIM)
  • RFC 8601: Authentication-Results header
  • RFC 8617: ARC (preserves SPF verdict across forwarders)
  • RFC 5321: SMTP (defines MAIL FROM identity SPF authenticates)
SMTPedia companion guides

Frequently asked questions

Is RFC 4408 still relevant in 2026?

Only for historical reference. RFC 4408 was superseded by RFC 7208 in April 2014. Current SPF specifications, tools, and receivers reference RFC 7208. Deploy per RFC 7208; reference RFC 4408 only when discussing the historical evolution of SPF or clarifying differences between the two specifications.

Do I need to update my SPF record if it was published under RFC 4408?

Probably not the content; SPF records are typically compatible between RFC 4408 and RFC 7208 syntax. Check for: (1) any records published under the dedicated SPF record type (removed in RFC 7208; must be in TXT), (2) any ptr mechanism (deprecated in RFC 7208; remove), (3) DNS lookup count (was recommended limit under 4408, now hard limit under 7208; fix if exceeded).

What was the SPF DNS record type and why was it removed?

RR type 99, a dedicated DNS record type for SPF policies. RFC 4408 permitted it alongside TXT. In practice, TXT records dominated because they worked with every DNS server and management tool; the SPF type required infrastructure upgrades. Adoption was so unbalanced that RFC 7208 removed the dedicated type entirely; only TXT is now permitted. Any domains still publishing only the SPF type have effectively no SPF policy from the perspective of modern evaluators.

What was different about the ptr mechanism in RFC 4408?

RFC 4408 permitted ptr (reverse DNS check) but noted it was expensive and unreliable. RFC 7208 elevated this to explicit deprecation (SHOULD NOT use). The mechanism triggers many DNS queries and is vulnerable to fake reverse DNS. Most evaluators today either refuse ptr entirely or always fail it. Remove ptr from any SPF record still using it.

Was DKIM available at the time of RFC 4408?

Not standardized. RFC 4408 (April 2006) predates RFC 4871 DKIM (May 2007). Early SPF deployments frequently ran without DKIM. DMARC (RFC 7489) which unified SPF and DKIM as inputs to a common policy came later still (March 2015). The full stack (SPF, DKIM, DMARC) took nearly a decade to assemble; RFC 4408 is the earliest layer.


About the Author

Alaa - SMTPedia author

Alaa · LinkedIn

Email infrastructure specialist with 8+ years of hands-on experience in SMTP, deliverability, and email verification. I’ve configured and troubleshot mail systems across Postfix, Exchange, and cloud relays, managed IP reputation and warmup campaigns, and built verification pipelines processing millions of addresses. My work spans DNS authentication (SPF, DKIM, DMARC, BIMI), bounce handling, blocklist monitoring, and compliance frameworks including CAN-SPAM and GDPR. I write every article on SMTPedia to give email professionals, developers, and marketers the accurate, RFC-grounded reference they need.


About SMTPedia

SMTPedia is an independent email industry reference covering SMTP, IMAP, POP3, email deliverability, marketing platforms, DNS authentication, and email verification. Every article is researched from official provider documentation, IETF RFCs, and industry best practices. Settings and configurations are verified quarterly.

We are cited as a source by ChatGPT, Microsoft Copilot, and thousands of email professionals worldwide. Learn more about our editorial process.