2023-07-19 15:52:08 +00:00
|
|
|
#
|
|
|
|
# spec file for package perl-Mail-DMARC
|
|
|
|
#
|
2025-02-11 07:10:38 +00:00
|
|
|
# Copyright (c) 2025 SUSE LLC
|
2023-07-19 15:52:08 +00:00
|
|
|
#
|
|
|
|
# All modifications and additions to the file contributed by third parties
|
|
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
|
|
# upon. The license for this file, and modifications and additions to the
|
|
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
|
|
# license for the pristine package is not an Open Source License, in which
|
|
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
|
|
# published by the Open Source Initiative.
|
|
|
|
|
|
|
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
|
|
%define cpan_name Mail-DMARC
|
|
|
|
Name: perl-Mail-DMARC
|
2025-06-24 07:15:23 +00:00
|
|
|
Version: 1.202.506.100
|
2023-07-19 15:52:08 +00:00
|
|
|
Release: 0
|
2025-06-24 07:15:23 +00:00
|
|
|
# 1.20250610 -> normalize -> 1.202.506.100
|
|
|
|
%define cpan_version 1.20250610
|
2023-07-19 15:52:08 +00:00
|
|
|
License: Artistic-1.0 OR GPL-1.0-or-later
|
|
|
|
Summary: Perl implementation of DMARC
|
|
|
|
URL: https://metacpan.org/release/%{cpan_name}
|
2025-06-24 07:15:23 +00:00
|
|
|
Source0: https://cpan.metacpan.org/authors/id/M/MB/MBRADSHAW/%{cpan_name}-%{cpan_version}.tar.gz
|
2023-07-19 15:52:08 +00:00
|
|
|
Source1: cpanspec.yml
|
2025-08-12 18:15:13 +02:00
|
|
|
Source100: README.md
|
2023-07-19 15:52:08 +00:00
|
|
|
BuildArch: noarch
|
|
|
|
BuildRequires: perl
|
|
|
|
BuildRequires: perl-macros
|
|
|
|
BuildRequires: perl(Config::Tiny)
|
2025-06-24 07:15:23 +00:00
|
|
|
BuildRequires: perl(DBD::SQLite) >= 1.310
|
|
|
|
BuildRequires: perl(DBIx::Simple) >= 1.350
|
2023-07-19 15:52:08 +00:00
|
|
|
BuildRequires: perl(Email::MIME)
|
|
|
|
BuildRequires: perl(Email::Sender)
|
2025-06-24 07:15:23 +00:00
|
|
|
BuildRequires: perl(Email::Sender::Simple) >= 1.300.32
|
2023-07-19 15:52:08 +00:00
|
|
|
BuildRequires: perl(Email::Simple)
|
2025-06-24 07:15:23 +00:00
|
|
|
BuildRequires: perl(File::ShareDir) >= 1.0.0
|
|
|
|
BuildRequires: perl(File::ShareDir::Install) >= 0.60
|
2023-07-19 15:52:08 +00:00
|
|
|
BuildRequires: perl(HTTP::Tiny)
|
|
|
|
BuildRequires: perl(IO::Compress::Gzip)
|
|
|
|
BuildRequires: perl(IO::Compress::Zip)
|
|
|
|
BuildRequires: perl(IO::Socket::SSL)
|
|
|
|
BuildRequires: perl(IO::Uncompress::Gunzip)
|
|
|
|
BuildRequires: perl(IO::Uncompress::Unzip)
|
2024-04-06 13:01:10 +00:00
|
|
|
BuildRequires: perl(Module::Build) >= 0.3601
|
2025-02-11 07:10:38 +00:00
|
|
|
BuildRequires: perl(Module::Load)
|
2023-07-19 15:52:08 +00:00
|
|
|
BuildRequires: perl(Net::DNS::Resolver)
|
2024-04-06 13:01:10 +00:00
|
|
|
BuildRequires: perl(Net::DNS::Resolver::Mock)
|
2023-07-19 15:52:08 +00:00
|
|
|
BuildRequires: perl(Net::IDN::Encode)
|
|
|
|
BuildRequires: perl(Net::IP)
|
|
|
|
BuildRequires: perl(Net::SSLeay)
|
|
|
|
BuildRequires: perl(Regexp::Common) >= 2013031301
|
2025-06-24 07:15:23 +00:00
|
|
|
BuildRequires: perl(Socket6) >= 0.230
|
2023-07-19 15:52:08 +00:00
|
|
|
BuildRequires: perl(Test::Exception)
|
|
|
|
BuildRequires: perl(Test::File::ShareDir)
|
|
|
|
BuildRequires: perl(Test::Output)
|
|
|
|
BuildRequires: perl(URI)
|
|
|
|
BuildRequires: perl(XML::LibXML)
|
|
|
|
Requires: perl(Config::Tiny)
|
2025-06-24 07:15:23 +00:00
|
|
|
Requires: perl(DBD::SQLite) >= 1.310
|
|
|
|
Requires: perl(DBIx::Simple) >= 1.350
|
2023-07-19 15:52:08 +00:00
|
|
|
Requires: perl(Email::MIME)
|
|
|
|
Requires: perl(Email::Sender)
|
2025-06-24 07:15:23 +00:00
|
|
|
Requires: perl(Email::Sender::Simple) >= 1.300.32
|
2023-07-19 15:52:08 +00:00
|
|
|
Requires: perl(Email::Simple)
|
2025-06-24 07:15:23 +00:00
|
|
|
Requires: perl(File::ShareDir) >= 1.0.0
|
2023-07-19 15:52:08 +00:00
|
|
|
Requires: perl(HTTP::Tiny)
|
|
|
|
Requires: perl(IO::Compress::Gzip)
|
|
|
|
Requires: perl(IO::Compress::Zip)
|
|
|
|
Requires: perl(IO::Socket::SSL)
|
|
|
|
Requires: perl(IO::Uncompress::Gunzip)
|
|
|
|
Requires: perl(IO::Uncompress::Unzip)
|
2025-02-11 07:10:38 +00:00
|
|
|
Requires: perl(Module::Load)
|
2023-07-19 15:52:08 +00:00
|
|
|
Requires: perl(Net::DNS::Resolver)
|
|
|
|
Requires: perl(Net::IDN::Encode)
|
|
|
|
Requires: perl(Net::IP)
|
|
|
|
Requires: perl(Net::SSLeay)
|
|
|
|
Requires: perl(Regexp::Common) >= 2013031301
|
2025-06-24 07:15:23 +00:00
|
|
|
Requires: perl(Socket6) >= 0.230
|
2023-07-19 15:52:08 +00:00
|
|
|
Requires: perl(Test::File::ShareDir)
|
|
|
|
Requires: perl(URI)
|
|
|
|
Requires: perl(XML::LibXML)
|
2024-08-25 17:44:24 +00:00
|
|
|
Provides: perl(Mail::DMARC) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Base) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::HTTP) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Policy) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::PurePerl) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::Aggregate) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::Aggregate::Metadata) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::Aggregate::Record) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::Aggregate::Record::Auth_Results) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::Aggregate::Record::Auth_Results::DKIM) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::Aggregate::Record::Auth_Results::SPF) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::Aggregate::Record::Identifiers) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::Aggregate::Record::Row) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::Aggregate::Record::Row::Policy_Evaluated) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::Receive) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::Send) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::Send::HTTP) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::Send::SMTP) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::Sender)
|
|
|
|
Provides: perl(Mail::DMARC::Report::Store) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::Store::SQL) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::Store::SQL::Grammars::MySQL) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::Store::SQL::Grammars::PostgreSQL) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::Store::SQL::Grammars::SQLite) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Report::URI) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Result) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Result::Reason) = %{version}
|
|
|
|
Provides: perl(Mail::DMARC::Test::Transport)
|
|
|
|
%undefine __perllib_provides
|
2023-07-19 15:52:08 +00:00
|
|
|
Recommends: perl(Mail::DKIM)
|
|
|
|
Recommends: perl(Net::IMAP::Simple)
|
|
|
|
Recommends: perl(Net::SMTPS)
|
|
|
|
%{perl_requires}
|
|
|
|
# MANUAL BEGIN
|
|
|
|
BuildRequires: perl(CGI)
|
|
|
|
BuildRequires: perl(JSON)
|
|
|
|
BuildRequires: perl(Net::DNS::Resolver::Mock)
|
|
|
|
BuildRequires: perl(Net::HTTP)
|
|
|
|
BuildRequires: perl(Net::Server::HTTP)
|
|
|
|
BuildRequires: perl(XML::Validator::Schema)
|
|
|
|
# MANUAL END
|
|
|
|
|
|
|
|
%description
|
|
|
|
This module is a suite of tools for implementing DMARC. It adheres to the
|
|
|
|
2013 DMARC draft, intending to implement every MUST and every SHOULD.
|
|
|
|
|
|
|
|
This module can be used by...
|
|
|
|
|
|
|
|
* MTAs and filtering tools like SpamAssassin to validate that incoming
|
|
|
|
messages are aligned with the purported sender's policy.
|
|
|
|
|
|
|
|
* email senders, to receive DMARC reports from other mail servers and display
|
|
|
|
them via CLI and web interfaces.
|
|
|
|
|
|
|
|
* MTA operators to send DMARC reports to DMARC author domains.
|
|
|
|
|
|
|
|
When a message arrives via SMTP, the MTA or filtering application can pass
|
|
|
|
in a small amount of metadata about the connection (envelope details, SPF
|
|
|
|
and DKIM results) to Mail::DMARC. When the *validate* method is called,
|
|
|
|
Mail::DMARC will determine if:
|
|
|
|
|
|
|
|
a. the header_from domain exists
|
|
|
|
b. the header_from domain publishes a DMARC policy
|
|
|
|
c. if a policy is published...
|
|
|
|
d. does the message conform to the published policy?
|
|
|
|
e. did the policy request reporting? If so, save details.
|
|
|
|
|
|
|
|
The validation results are returned as a Mail::DMARC::Result object. If the
|
|
|
|
author domain requested a report, it was saved to the Report Store. The
|
|
|
|
Store class includes a SQL implementation that is tested with SQLite, MySQL
|
|
|
|
and PostgreSQL.
|
|
|
|
|
|
|
|
There is more information available in the $result object. See
|
|
|
|
Mail::DMARC::Result for complete details.
|
|
|
|
|
|
|
|
Reports are viewed with the dmarc_view_reports program or with a web
|
|
|
|
browser and the dmarc_httpd program.
|
|
|
|
|
|
|
|
Aggregate reports are sent to their requestors with the dmarc_send_reports
|
|
|
|
program.
|
|
|
|
|
|
|
|
For aggregate reports that you have been sent, the dmarc_receive program
|
|
|
|
will parse the email messages (from IMAP, Mbox, or files) and save the
|
|
|
|
report results into the Report Store.
|
|
|
|
|
|
|
|
The report store can use the same database to store reports you have
|
|
|
|
received as well as reports you will send. There are several ways to
|
|
|
|
identify the difference, including:
|
|
|
|
|
|
|
|
* received reports will have a null value for report_policy_published.rua
|
|
|
|
|
|
|
|
* outgoing reports will have null values for report.uuid and
|
|
|
|
report_record.count
|
|
|
|
|
|
|
|
%prep
|
2025-06-24 07:15:23 +00:00
|
|
|
%autosetup -n %{cpan_name}-%{cpan_version} -p1
|
2023-07-19 15:52:08 +00:00
|
|
|
|
|
|
|
find . -type f ! -path "*/t/*" ! -name "*.pl" ! -path "*/bin/*" ! -path "*/script/*" ! -path "*/scripts/*" ! -name "configure" -print0 | xargs -0 chmod 644
|
|
|
|
|
|
|
|
%build
|
|
|
|
perl Build.PL --installdirs=vendor
|
|
|
|
./Build build --flags=%{?_smp_mflags}
|
|
|
|
|
|
|
|
%check
|
|
|
|
./Build test
|
|
|
|
|
|
|
|
%install
|
|
|
|
./Build install --destdir=%{buildroot} --create_packlist=0
|
|
|
|
%perl_gen_filelist
|
|
|
|
|
|
|
|
%files -f %{name}.files
|
|
|
|
%doc Changes.md DEVELOP.md example FAQ.md README.md TODO.md
|
|
|
|
%license LICENSE
|
|
|
|
|
|
|
|
%changelog
|