From: Vsevolod Stakhov Date: Fri, 29 Apr 2022 20:13:09 +0000 (+0100) Subject: [Minor] Add one more header to the list check function + rework X-Git-Tag: 3.3~294 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=9b79e33f65b423dbd881b571fac2647bebf0374c;p=rspamd.git [Minor] Add one more header to the list check function + rework Issue: #4132 --- 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