There are multiple SPF libraries available. Many mail servers support SPF natively. Most popular mail servers also have extensions or unofficial patches available.
Reference Implementations
The Perl module Mail::SPF::Query was the very first implementation of SPF and was the de facto reference implementation for quite some time. It roughly conforms to the final SPFv1 specification, however due to its long heritage (reaching back to 2003) there are some deviations. In particular, the library does not support the final processing limits and also supports a number of non-standard features, such as best-guess processing and trusted forwarder accreditation checking.
That being said, there are currently two library implementations that are known to fully conform to the final SPFv1 specification (RFC 4408):
pyspf 2.0: A Python module, which was the first implementation fully conforming to RFC 4408.
Mail::SPF: An object-oriented Perl module that supersedes the old Mail::SPF::Query module. It supports both SPFv1 (v=spf1) and Sender ID (spf2.0) and is very thoroughly documented.
The jspf library is currently being evaluated by the project for RFC 4408 compliance. Libspf2 has not been updated for RFC 4408 compliance, but implements processing limits at least as strict as those required by RFC 4408.
Libraries
Mail Servers that natively support SPF
Extensions and Patches for Mail Servers
Name | Mail Server | Author(s) | Contact |
Courier::Filter SPF Module | Courier | Julian Mehnle | Julian Mehnle |
Courier Python Filter | Courier | Gordon Messmer | Gordon Messmer |
exiscan ACL | Exim <4.52 | Tom Kistner | Tom Kistner |
Exim patch | Exim 4.43 | nslm | nslm |
MEFilter | MailEnable | Martyn Keen | Martyn Keen |
libspf2 Postfix policyd | Postfix | Shevek, Wayne Schlitt | see website |
postfix-policyd-spf-perl | Postfix | Meng Weng Wong | spf-discuss |
tumgreyspf | Postfix | Sean Reifschneider, tummy.com | see website |
Modular Python Postfix Policy Server | Postfix | Petr Vokac | see website |
Postfix Policy Server v2 | Postfix | Michael Lang | see website |
ACL Policy Daemon | Postfix | The Gna! Project | see website |
Whitelister OCAML Policy Daemon | Postfix | Pierre Habouzit | Pierre Habouzit |
libspf2 Postfix Patch | Postfix | Dean Strik | Dean Strik |
libspf2 >= 1.2.0 patch | Postfix | Nigel Kukard | Nigel Kukard |
Qmail Patch | Qmail 1.03 | Christophe Saout | Christophe Saout |
libspf Qmail Patch | Qmail | James Couzens, Sean Comeau | James Couzens |
Plugin included | qpsmtpd | Ask Bjørn Hansen | see website |
libspf/libspf2 spfmilter | Sendmail | Jef Poskanzer | Jef Poskanzer |
smf-spf Milter | Sendmail | Eugene Kurmanin | Eugene Kurmanin |
spf-milter (upstream, RPM, on site) | Sendmail | Mark Kramer | Mark Kramer |
Python Milter | Sendmail | Jim Niemira, Stuart D. Gathman | see website |
milter-spiff | Sendmail | Anthony Howe | see website |
Milter Greylist | Sendmail | Emmanuel Dreyfus et al. | see website |
libspf Sendmail Patch | Sendmail | James Couzens, Sean Comeau | James Couzens |
Policy Patrol Spam Filter | Exchange, Lotus Domino | Red Earth Software | see website |
SPF Event Sink | IIS SMTP Server, Exchange 2000 | Johan Strand | Johan Strand |
MailEssentials | Anti-Spam Filter Plugin for IIS SMTP Server, Exchange | GFI Software | see website |
Sunbelt Messaging Ninja | Exchange 2000/03 | Sunbelt Software | see website |
Extensions for Mail Clients
Note that performing SPF checks in the mail client is problematic because it is often difficult to accurately obtain the required information from delivered messages.
Other Software that supports SPF
Please report SPF-supporting software to the spf-discuss mailing list or by contacting us directly.