| Index | index by Group | index by Distribution | index by Vendor | index by creation date | index by Name | Mirrors | Help | Search |
| Name: perl-Mail-SPF | Distribution: openSUSE Tumbleweed |
| Version: 3.202.611.50 | Vendor: openSUSE |
| Release: 1.1 | Build date: Fri Nov 6 12:33:19 2026 |
| Group: Unspecified | Build host: reproducible |
| Size: 340035 | Source RPM: perl-Mail-SPF-3.202.611.50-1.1.src.rpm |
| Packager: https://bugs.opensuse.org | |
| Url: https://metacpan.org/release/Mail-SPF | |
| Summary: An object-oriented implementation of Sender Policy Framework | |
*Mail::SPF* is an object-oriented implementation of Sender Policy Framework (SPF). See https://tools.ietf.org/html/rfc7208 for more information about SPF. This class collection aims to fully conform to the SPF specification (RFC 4408) so as to serve both as a production quality SPF implementation and as a reference for other developers of SPF implementations.
BSD-3-Clause
* Fri Nov 06 2026 Tina Müller <timueller+perl@suse.de>
- updated to 3.202.611.50 (3.20261105)
see /usr/share/doc/packages/perl-Mail-SPF/Changes
3.20261105 2026-11-06 Australia/Melbourne
* * Thanks to Giovanni <g.bechis@snb.it> for these changes:
- RFC 7208 says there MUST be a limit of no more than 10 MX records
looked up and checked; throw a permerror when the limit is exceeded
instead of silently truncating the list
- RFC 7208 says implementations SHOULD limit "void lookups" to two;
enable the corresponding regression tests
- Ensure every module's $VERSION is set by Dist::Zilla at release time,
and manage the version number in README the same way
- Security: escape untrusted text in the Received-SPF header to
prevent header field injection:
- escape parentheses and backslashes in the explanation comment,
so text from a malformed SPF record or the sender identity can
no longer close the comment early and inject forged fields such
as client-ip=
- escape control characters (e.g. CR/LF) in the envelope-from and
helo fields
- Fix macro expansion stopping at the first line break in a macro
string, leaving later macros unexpanded
- Security: authority_explanation now escapes control and non-ASCII
characters in the explanation string (exp= TXT record) published in
DNS, and document that the result text() may contain untrusted data
- Remove the check for includes of the same domain through CNAME
aliases. Including a domain and a CNAME alias of it is legal in
RFC 7208, but the check tried to throw a hard fail for it. With
a real resolver it read an unpopulated Net::DNS internal field and
so in practice did nothing, but where it did take effect (e.g.
with Net::DNS::Resolver::Programmable) it could wrongly fail
authorized senders, and it used CNAME targets from DNS as
unescaped regular expressions, which could make process() die.
It also made an extra CNAME lookup per include that was not
counted towards the RFC 7208 DNS lookup and void lookup limits.
The test suite's resolver now follows CNAMEs, which is what the
RFC 7208 cname-aliasing test case needed
- Security: an exception thrown by the DNS resolver, including
Net::DNS refusing to compose a query for an invalid domain name,
made the SPF result none, i.e. no policy, rather than temperror.
As invalid names can come from macros expanded with the sender's
local part or HELO name, a sender could turn a domain's -all
policy into none. Invalid domain names (empty label, label longer
than 63 bytes, or name longer than 253 bytes, counted the way
Net::DNS does, i.e. in bytes of UTF-8 and reading escapes such as
"\.") are now treated as non-existent without querying the
resolver, per RFC 7208, and other resolver exceptions result in
temperror
- Check the IP address version in the ip6 mechanism using the public
NetAddr::IP API, rather than enumerating the request's address via
an overloaded array dereference and reading an internal field,
which died if the request's IP address was a large network
- Allow Mail::SPF::Server->process() to evaluate a proposed SPF record
passed in via a new 'record' option, instead of querying DNS for the
authority domain's record, so a not-yet-published record can be tested
against real DNS state
- Prefer SPF1 over SPF2 (Sender ID, which is deprecated) when a record
could be parsed as either
- When a domain publishes both "v=spf1" and "spf2.0" records, always
select the "v=spf1" record. Previously the record was chosen by the
order of the records in the DNS answer, so the result could vary
between queries, although the documentation and RFC 4406 said
"spf2.0" records were preferred. Sender ID is historic (RFC 6686),
so "v=spf1" is now deliberately preferred
- Security: a "p" macro in an explanation string (exp= TXT record)
made a PTR look-up and up to 10 A/AAAA look-ups for every
occurrence, not limited by the RFC 7208 DNS look-up limits, so a
sender could make a single SPF check send thousands of DNS
queries. The "p" macro value is now looked up at most once per SPF
check and authority domain. Also, exceeding the void look-up limit
while expanding the explanation made authority_explanation() die;
it now falls back to the default explanation
- Reject a network (e.g. '10.0.0.0/8') as a request's ip_address
with an EInvalidOptionValue exception. NetAddr::IP accepted it,
which made no sense for SPF and changed the meaning of the
mechanisms' address checks
- Ignore an explanation string (exp= TXT record) that contains
anything other than printable ASCII characters and spaces, as
RFC 7208 requires, and use the default explanation instead.
Control characters were already escaped, but an MTA using the
explanation in an SMTP reply would still have sent the escaped
text of a malicious explanation
- Return none without querying DNS when the identity's domain is
empty (e.g. "MAIL FROM:<a@>", which queried the root zone) or a
single-label name (e.g. "HELO mailhost", which the resolver may
expand with its search list and so query the receiver's internal
domains), as RFC 7208 requires
- Security: spfd now escapes control characters in the values of
its response, so text from DNS or the client cannot add lines to
the response, and in its debug output
- Security: fix spfd's privilege dropping with --set-user and
- -set-group. An unknown user or group name was not reported (due to
an operator precedence bug) and could leave spfd running as root,
the invoking user's supplementary groups (e.g. root's) were kept,
and --set-user without --set-group kept group ID 0. spfd now dies on
unknown names, drops the supplementary groups when started as root,
and changes to the user's primary group if no group is given
- Security: limit spfd to 64 concurrent connections, 60 seconds per
connection, and 32 request lines of at most 1024 bytes, so a local
client can no longer exhaust the process table or memory with idle,
slow or overlong requests. A request still being processed after 60
seconds (e.g. because DNS servers are unreachable) gets a temperror
result. spfd now also logs non-Mail::SPF errors
for a request, and no longer runs the child's code in the listening
process if fork() fails
- Security: spfd now creates its UNIX socket accessible to its owner
only until --socket-user, --socket-group and --socket-perms have
been applied, so other users can't connect to it in the meantime.
Fix --socket-group being ignored unless --socket-user was also
given (a typo compared the socket path instead of the group), and
die with a clear message if the listening socket can't be created
- Security: spfquery now opens the --file argument in explicit read
mode. A file name ending in "|" was run as a shell command, and one
starting with ">" truncated the file
* Wed Apr 01 2026 Tina Müller <timueller+perl@suse.de>
- updated to 3.202.603.310 (3.20260331)
see /usr/share/doc/packages/perl-Mail-SPF/Changes
3.20260331 2026-04-01 Australia/Melbourne
* * Thanks to Giovanni <g.bechis@snb.it> for this change:
- Do not check for multiple CNAMEs if the included domain is a macro
* Thu Aug 28 2025 Tina Müller <timueller+perl@suse.de>
- updated to 3.202.505.50 (3.20250505)
see /usr/share/doc/packages/perl-Mail-SPF/Changes
* Thu Nov 07 2024 Dirk Stoecker <opensuse@dstoecker.de>
- fix conflict with spfd daemon in libspf2
* Sun Jun 23 2024 Tina Müller <tina.mueller@suse.com>
- updated to 3.202.406.170 (3.20240617)
see /usr/share/doc/packages/perl-Mail-SPF/Changes
3.20240617 2024-06-17 Australia/Melbourne
- Update INSTALL file for Dist::Zilla changes
Thanks to Giovanni <g.bechis@snb.it>
- Fix memory leak in Mail::SPF::Server when cacheing a Mail::SPF::MacroString
Thanks to Giovanni <g.bechis@snb.it> and Felipe Gasper
- When mfrom is empty, create a synthetic mfrom (postmaster@helo) and check
that identity using the mfrom scope as specified in RFC7208
Thanks to Giovanni <g.bechis@snb.it>
- Fix missing declare in Mail::SPF::Server
Thanks to Giovanni <g.bechis@snb.it>
- require Mail::SPF::Mech when needed
Thanks to Giovanni <g.bechis@snb.it>
- correctly handle empty labels
Thanks to Giovanni <g.bechis@snb.it>
- use "try" instead of "eval"
Thanks to Giovanni <g.bechis@snb.it>
- error out if the lookup fails
Thanks to Giovanni <g.bechis@snb.it>
* Fri Mar 22 2024 Tina Müller <tina.mueller@suse.com>
- Remove fix_pod.patch, fixed upstream
* Fri Mar 22 2024 Tina Müller <timueller+perl@suse.de>
- updated to 3.20240206
see /usr/share/doc/packages/perl-Mail-SPF/Changes
* Mon Mar 04 2024 pgajdos@suse.com
- Use %autosetup macro. Allows to eliminate the usage of deprecated
%patchN
* Thu Jul 11 2019 Pedro Monreal Gonzalez <pmonrealgonzalez@suse.com>
- Fix permissions in spfd command [bsc#1141089]
- Added test dependency Test::Pod >= 1.00
- Move LICENSE file from doc to license
- Updated spec file with spec-cleaner
* Wed Jul 01 2015 hsk@imb-jena.de
- .spec file: added %{_sbindir}/spfd to %files section
/usr/bin/spfd_perl /usr/bin/spfquery /usr/lib/perl5/vendor_perl/5.44.0/Mail /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Base.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Exception.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/MacroString.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Mech /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Mech.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Mech/A.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Mech/All.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Mech/Exists.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Mech/IP4.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Mech/IP6.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Mech/Include.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Mech/MX.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Mech/PTR.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Mod /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Mod.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Mod/Exp.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Mod/Redirect.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Record.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Request.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Result.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/SenderIPAddrMech.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Server.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Term.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/Util.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/v1 /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/v1/Record.pm /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/v2 /usr/lib/perl5/vendor_perl/5.44.0/Mail/SPF/v2/Record.pm /usr/share/doc/packages/perl-Mail-SPF /usr/share/doc/packages/perl-Mail-SPF/Changes /usr/share/doc/packages/perl-Mail-SPF/README /usr/share/doc/packages/perl-Mail-SPF/TODO /usr/share/licenses/perl-Mail-SPF /usr/share/licenses/perl-Mail-SPF/LICENSE /usr/share/man/man1/spfd_perl.1.gz /usr/share/man/man1/spfquery.1.gz /usr/share/man/man3/Mail::SPF.3pm.gz /usr/share/man/man3/Mail::SPF::Base.3pm.gz /usr/share/man/man3/Mail::SPF::Exception.3pm.gz /usr/share/man/man3/Mail::SPF::MacroString.3pm.gz /usr/share/man/man3/Mail::SPF::Mech.3pm.gz /usr/share/man/man3/Mail::SPF::Mech::A.3pm.gz /usr/share/man/man3/Mail::SPF::Mech::All.3pm.gz /usr/share/man/man3/Mail::SPF::Mech::Exists.3pm.gz /usr/share/man/man3/Mail::SPF::Mech::IP4.3pm.gz /usr/share/man/man3/Mail::SPF::Mech::IP6.3pm.gz /usr/share/man/man3/Mail::SPF::Mech::Include.3pm.gz /usr/share/man/man3/Mail::SPF::Mech::MX.3pm.gz /usr/share/man/man3/Mail::SPF::Mech::PTR.3pm.gz /usr/share/man/man3/Mail::SPF::Mod.3pm.gz /usr/share/man/man3/Mail::SPF::Mod::Exp.3pm.gz /usr/share/man/man3/Mail::SPF::Mod::Redirect.3pm.gz /usr/share/man/man3/Mail::SPF::Record.3pm.gz /usr/share/man/man3/Mail::SPF::Request.3pm.gz /usr/share/man/man3/Mail::SPF::Result.3pm.gz /usr/share/man/man3/Mail::SPF::SenderIPAddrMech.3pm.gz /usr/share/man/man3/Mail::SPF::Server.3pm.gz /usr/share/man/man3/Mail::SPF::Term.3pm.gz /usr/share/man/man3/Mail::SPF::Util.3pm.gz /usr/share/man/man3/Mail::SPF::v1::Record.3pm.gz /usr/share/man/man3/Mail::SPF::v2::Record.3pm.gz
Generated by rpm2html 1.8.1
Fabrice Bellet, Thu Nov 12 22:26:22 2026