commit 9b79e33: [Minor] Add one more header to the list check function + rework

Vsevolod Stakhov vsevolod at rspamd.com
Fri Apr 29 20:14:03 UTC 2022


Author: Vsevolod Stakhov
Date: 2022-04-29 21:13:09 +0100
URL: https://github.com/rspamd/rspamd/commit/9b79e33f65b423dbd881b571fac2647bebf0374c (HEAD -> master)

[Minor] Add one more header to the list check function + rework
Issue: #4132

---
 src/plugins/lua/maillist.lua | 82 +++++++++++++++++++-------------------------
 1 file changed, 36 insertions(+), 46 deletions(-)

diff --git a/src/plugins/lua/maillist.lua b/src/plugins/lua/maillist.lua
index 895614c99..81e046928 100644
--- a/src/plugins/lua/maillist.lua
+++ b/src/plugins/lua/maillist.lua
@@ -191,52 +191,42 @@ local function check_generic_list_headers(task)
   local score = 0
   local has_subscribe, has_unsubscribe
 
-  if task:has_header('List-Id') then
-    score = score + 0.75
-    lua_util.debugm(N, task, 'has List-Id header, score = %s', score)
-  end
-
-  local header = task:get_header('Precedence')
-  if header and (header == 'list' or header == 'bulk') then
-    score = score + 0.25
-    lua_util.debugm(N, task, 'has header "Precedence: %s", score = %s',
-        header, score)
-  end
-
-  if task:has_header('List-Archive') then
-    score = score + 0.125
-    lua_util.debugm(N, task, 'has header List-Archive, score = %s',
-        score)
-  end
-  if task:has_header('List-Owner') then
-    score = score + 0.125
-    lua_util.debugm(N, task, 'has header List-Owner, score = %s',
-        score)
-  end
-  if task:has_header('List-Help') then
-    score = score + 0.125
-    lua_util.debugm(N, task, 'has header List-Help, score = %s',
-        score)
-  end
-
-  -- Subscribe and unsubscribe
-  if task:has_header('List-Subscribe') then
-    has_subscribe = true
-    score = score + 0.125
-    lua_util.debugm(N, task, 'has header List-Subscribe, score = %s',
-        score)
-  end
-  if task:has_header('List-Unsubscribe') then
-    has_unsubscribe = true
-    score = score + 0.125
-    lua_util.debugm(N, task, 'has header List-Unsubscribe, score = %s',
-        score)
-  end
-
-  if task:has_header('X-Loop') then
-    score = score + 0.125
-    lua_util.debugm(N, task, 'has header X-Loop, score = %s',
-        score)
+  local common_list_headers = {
+    ['List-Id'] = 0.75,
+    ['List-Archive'] = 0.125,
+    ['List-Owner'] = 0.125,
+    ['List-Help'] = 0.125,
+    ['List-Post'] = 0.125,
+    ['X-Loop'] = 0.125,
+    ['List-Subscribe'] = function()
+      has_subscribe = true
+      return 0.125
+    end,
+    ['List-Unsubscribe'] = function()
+      has_unsubscribe = true
+      return 0.125
+    end,
+    ['Precedence'] = function()
+      local header = task:get_header('Precedence')
+      if header and (header == 'list' or header == 'bulk') then
+        return 0.25
+      end
+    end,
+  }
+
+  for hname,hscore in pairs(common_list_headers) do
+    if task:has_header(hname) then
+      if type(hscore) == 'number' then
+        score = score + hscore
+        lua_util.debugm(N, task, 'has %s header, score = %s', hname, score)
+      else
+        local score_change = hscore()
+        if score then
+          score = score + score_change
+          lua_util.debugm(N, task, 'has %s header, score = %s', hname, score)
+        end
+      end
+    end
   end
 
   if has_subscribe and has_unsubscribe then


More information about the Commits mailing list