You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by he...@apache.org on 2022/04/25 17:00:36 UTC
svn commit: r1900272 - in /spamassassin/trunk: lib/Mail/SpamAssassin/Plugin/DMARC.pm rules/25_dmarc.cf t/dmarc.t
Author: hege
Date: Mon Apr 25 17:00:36 2022
New Revision: 1900272
URL: http://svn.apache.org/viewvc?rev=1900272&view=rev
Log:
Add DMARC stock rules
Added:
spamassassin/trunk/rules/25_dmarc.cf
Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DMARC.pm
spamassassin/trunk/t/dmarc.t
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DMARC.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DMARC.pm?rev=1900272&r1=1900271&r2=1900272&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DMARC.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DMARC.pm Mon Apr 25 17:00:36 2022
@@ -26,21 +26,35 @@ Mail::SpamAssassin::Plugin::DMARC - chec
loadplugin Mail::SpamAssassin::Plugin::DMARC
ifplugin Mail::SpamAssassin::Plugin::DMARC
- header DMARC_NONE eval:check_dmarc_none()
- priority DMARC_NONE 500
- describe DMARC_NONE DMARC none policy
+ header DMARC_PASS eval:check_dmarc_pass()
+ describe DMARC_PASS DMARC pass policy
+ priority DMARC_PASS 500
+ tflags DMARC_PASS net nice
+ score DMARC_PASS -0.001
+
+ header DMARC_REJECT eval:check_dmarc_reject()
+ describe DMARC_REJECT DMARC reject policy
+ priority DMARC_REJECT 500
+ tflags DMARC_REJECT net
+ score DMARC_REJECT 0.001
header DMARC_QUAR eval:check_dmarc_quarantine()
- priority DMARC_QUAR 500
describe DMARC_QUAR DMARC quarantine policy
+ priority DMARC_QUAR 500
+ tflags DMARC_QUAR net
+ score DMARC_QUAR 0.001
- header DMARC_REJECT eval:check_dmarc_reject()
- priority DMARC_REJECT 500
- describe DMARC_REJECT DMARC reject policy
+ header DMARC_NONE eval:check_dmarc_none()
+ describe DMARC_NONE DMARC none policy
+ priority DMARC_NONE 500
+ tflags DMARC_NONE net
+ score DMARC_NONE 0.001
header DMARC_MISSING eval:check_dmarc_missing()
- priority DMARC_MISSING 500
describe DMARC_MISSING Missing DMARC policy
+ priority DMARC_MISSING 500
+ tflags DMARC_MISSING net
+ score DMARC_MISSING 0.001
endif
=head1 DESCRIPTION
Added: spamassassin/trunk/rules/25_dmarc.cf
URL: http://svn.apache.org/viewvc/spamassassin/trunk/rules/25_dmarc.cf?rev=1900272&view=auto
==============================================================================
--- spamassassin/trunk/rules/25_dmarc.cf (added)
+++ spamassassin/trunk/rules/25_dmarc.cf Mon Apr 25 17:00:36 2022
@@ -0,0 +1,62 @@
+# SpamAssassin - DMARC rules
+#
+# Please don't modify this file as your changes will be overwritten with
+# the next update. Use @@LOCAL_RULES_DIR@@/local.cf instead.
+# See 'perldoc Mail::SpamAssassin::Conf' for details.
+#
+# <@LICENSE>
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# </...@LICENSE>
+#
+###########################################################################
+
+# Requires the Mail::SpamAssassin::Plugin::DMARC plugin be loaded.
+
+# Backwards compatible name (was renamed to DMARC in trunk before 4.0.0)
+ifplugin Mail::SpamAssassin::Plugin::Dmarc
+
+header DMARC_PASS eval:check_dmarc_pass()
+describe DMARC_PASS DMARC pass policy
+priority DMARC_PASS 500
+tflags DMARC_PASS net nice
+score DMARC_PASS -0.001
+
+header DMARC_REJECT eval:check_dmarc_reject()
+describe DMARC_REJECT DMARC reject policy
+priority DMARC_REJECT 500
+tflags DMARC_REJECT net
+score DMARC_REJECT 0.001
+
+header DMARC_QUAR eval:check_dmarc_quarantine()
+describe DMARC_QUAR DMARC quarantine policy
+priority DMARC_QUAR 500
+tflags DMARC_QUAR net
+score DMARC_QUAR 0.001
+
+header DMARC_NONE eval:check_dmarc_none()
+describe DMARC_NONE DMARC none policy
+priority DMARC_NONE 500
+tflags DMARC_NONE net
+score DMARC_NONE 0.001
+
+header DMARC_MISSING eval:check_dmarc_missing()
+describe DMARC_MISSING Missing DMARC policy
+priority DMARC_MISSING 500
+tflags DMARC_MISSING net
+score DMARC_MISSING 0.001
+
+endif
+
Modified: spamassassin/trunk/t/dmarc.t
URL: http://svn.apache.org/viewvc/spamassassin/trunk/t/dmarc.t?rev=1900272&r1=1900271&r2=1900272&view=diff
==============================================================================
--- spamassassin/trunk/t/dmarc.t (original)
+++ spamassassin/trunk/t/dmarc.t Mon Apr 25 17:00:36 2022
@@ -18,7 +18,7 @@ plan skip_all => "Net tests disabled" un
plan skip_all => "Needs Mail::SPF" unless HAS_MAILSPF;
plan skip_all => "Needs Mail::DMARC::PurePerl" unless HAS_MAILDMARC;
plan skip_all => "Needs Mail::DKIM::Verifier >= 0.31" unless HAS_DKIM_VERIFIER ;
-plan tests => 9;
+plan tests => 18;
tstpre ("
loadplugin Mail::SpamAssassin::Plugin::DMARC
@@ -30,6 +30,10 @@ ifplugin Mail::SpamAssassin::Plugin::Dma
if plugin ( Mail::SpamAssassin::Plugin::Dmarc)
ifplugin Mail::SpamAssassin::Plugin::DMARC
+header DMARC_PASS eval:check_dmarc_pass()
+priority DMARC_PASS 500
+describe DMARC_PASS DMARC pass policy
+
header DMARC_NONE eval:check_dmarc_none()
priority DMARC_NONE 500
describe DMARC_NONE DMARC none policy
@@ -51,82 +55,85 @@ endif
endif
");
-%patterns = ();
-%anti_patterns = (
- q{ DMARC_NONE } => 'DMARC none policy',
- );
-
-sarun ("-t < data/nice/dmarc/noneok.eml", \&patterns_run_cb);
-ok_all_patterns();
-clear_pattern_counters();
+##
+## PASS
+##
-%anti_patterns = ();
%patterns = (
- q{ DMARC_NONE } => 'DMARC none policy',
- );
+ q{ DMARC_PASS } => '',
+);
+%anti_patterns = (
+ q{/DMARC_(?!PASS)/} => '',
+);
-sarun ("-t < data/spam/dmarc/noneko.eml", \&patterns_run_cb);
+sarun ("-t < data/nice/dmarc/noneok.eml", \&patterns_run_cb);
ok_all_patterns();
-clear_pattern_counters();
-
-%patterns = ();
-%anti_patterns = (
- q{ DMARC_QUAR } => 'DMARC quarantine policy',
- );
sarun ("-t < data/nice/dmarc/quarok.eml", \&patterns_run_cb);
ok_all_patterns();
-clear_pattern_counters();
-
-%anti_patterns = ();
-%patterns = (
- q{ DMARC_QUAR } => 'DMARC quarantine policy',
- );
-sarun ("-t < data/spam/dmarc/quarko.eml", \&patterns_run_cb);
+sarun ("-t < data/nice/dmarc/rejectok.eml", \&patterns_run_cb);
ok_all_patterns();
-clear_pattern_counters();
-
-%patterns = ();
-%anti_patterns = (
- q{ DMARC_REJECT } => 'DMARC reject policy',
- );
-sarun ("-t < data/nice/dmarc/rejectok.eml", \&patterns_run_cb);
+sarun ("-t < data/nice/dmarc/strictrejectok.eml", \&patterns_run_cb);
ok_all_patterns();
-clear_pattern_counters();
-%anti_patterns = ();
+##
+## REJECT
+##
+
%patterns = (
- q{ DMARC_REJECT } => 'DMARC reject policy',
- );
+ q{ DMARC_REJECT } => '',
+);
+%anti_patterns = (
+ q{/DMARC_(?!REJECT)/} => '',
+);
sarun ("-t < data/spam/dmarc/rejectko.eml", \&patterns_run_cb);
ok_all_patterns();
-clear_pattern_counters();
-%patterns = ();
+sarun ("-t < data/spam/dmarc/strictrejectko.eml", \&patterns_run_cb);
+ok_all_patterns();
+
+##
+## QUAR
+##
+
+%patterns = (
+ q{ DMARC_QUAR } => '',
+);
%anti_patterns = (
- q{ DMARC_REJECT } => 'DMARC reject policy',
- );
+ q{/DMARC_(?!QUAR)/} => '',
+);
-sarun ("-t < data/nice/dmarc/strictrejectok.eml", \&patterns_run_cb);
+sarun ("-t < data/spam/dmarc/quarko.eml", \&patterns_run_cb);
ok_all_patterns();
-clear_pattern_counters();
-%anti_patterns = ();
+##
+## NONE
+##
+
%patterns = (
- q{ DMARC_REJECT } => 'DMARC reject policy',
- );
+ q{ DMARC_NONE } => '',
+);
+%anti_patterns = (
+ q{/DMARC_(?!NONE)/} => '',
+);
-sarun ("-t < data/spam/dmarc/strictrejectko.eml", \&patterns_run_cb);
+sarun ("-t < data/spam/dmarc/noneko.eml", \&patterns_run_cb);
ok_all_patterns();
-clear_pattern_counters();
-%anti_patterns = ();
+##
+## MISSING
+##
+
%patterns = (
- q{ DMARC_MISSING } => 'Missing DMARC policy',
- );
+ q{ DMARC_MISSING } => '',
+);
+%anti_patterns = (
+ q{/DMARC_(?!MISSING)/} => '',
+);
sarun ("-t < data/spam/dmarc/nodmarc.eml", \&patterns_run_cb);
ok_all_patterns();
+