Skip to content

The-McGrail-Foundation/Mail-SPF

Repository files navigation

CI for Mail-SPF GitHub release

Mail::SPF -- A Perl implementation of the Sender Policy Framework

Mail::SPF is an object-oriented Perl implementation of the Sender Policy Framework (SPF) e-mail sender authentication system.

See http://www.openspf.net for more information about SPF.

This release of Mail::SPF fully conforms to RFC 4408 and passes the 2009.10 release of the official test-suite http://www.openspf.net/Test_Suite.

The Mail::SPF source package includes the following additional tools:

  • spfquery: A command-line tool for performing SPF checks.
  • spfd: A daemon for services that perform SPF checks frequently.

Mail::SPF is not your mother!

Unlike other SPF implementations, Mail::SPF will not do your homework for you.

In particular, in evaluating SPF policies it will not make any exceptions for your localhost or loopback addresses (127.0.0.*, ::1, etc.). There is no way for Mail::SPF to know exactly which sending IP addresses you would like to treat as trusted relays and which not. If you don't want messages from certain addresses to be subject to SPF processing, then don't invoke Mail::SPF on such messages -- it's that simple. Other libraries have chosen to be more accommodating, but that has usually led to consumers getting spoiled and implementations becoming fraught with feature creep.

Also, parameter parsing is generally very strict. For example, no whitespace or '<>' characters will be removed from e-mail address or IP address parameters passed to Mail::SPF. If you pass in unsanitized values and it doesn't work, don't be surprised.

You may call me a purist.

Sub-Classing

You can easily sub-class Mail::SPF::Server and the Mail::SPF::Result class collection in order to extend or modify their behavior. The hypothetical Mail::SPF::BlackMagic package was once supposed to make use of this.

In your Mail::SPF::Server sub-class simply override the result_base_class() constant, specifying your custom Mail::SPF::Result base sub-class. Then have your result base class specify its associated concrete sub-classes by overriding Mail::SPF::Result's result_classes() constant.

For this to work, any code throwing Mail::SPF::Result(::*) objects directly needs to stop doing so as of Mail::SPF 2.006 and use Mail::SPF::Server:: throw_result() instead.

Authors

(C) 2005-2013 Julian Mehnle julian@mehnle.net
2005 Shevek cpan@anarres.org

Reporting Bugs

Please report bugs in Mail::SPF and its documentation to the CPAN bug tracker: https://github.com/The-McGrail-Foundation/Mail-SPF/issues

License

Mail::SPF is free software. You may use, modify, and distribute it under the terms of the BSD license. See LICENSE for the BSD license text.

About

An object-oriented implementation of Sender Policy Framework

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages