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();
+