commit d83e366: [Minor] Improve MISSING_MIME_VERSION rule

Anton Yuzhaninov citrin+git at citrin.ru
Tue Mar 17 11:49:06 UTC 2020


Author: Anton Yuzhaninov
Date: 2020-03-17 11:34:12 +0000
URL: https://github.com/rspamd/rspamd/commit/d83e366e88923900e4087021c809e2b177e07699 (refs/pull/3301/head)

[Minor] Improve MISSING_MIME_VERSION rule
Previous condition have a complex condition which prevented adding the
symbol for some MIME messages without MIME-Version header.

---
 rules/headers_checks.lua | 37 +++++++++++++++----------------------
 1 file changed, 15 insertions(+), 22 deletions(-)

diff --git a/rules/headers_checks.lua b/rules/headers_checks.lua
index ab51c8e03..ae5c61836 100644
--- a/rules/headers_checks.lua
+++ b/rules/headers_checks.lua
@@ -338,47 +338,40 @@ local check_mime_id = rspamd_config:register_symbol{
   group = 'headers',
   score = 0.0,
   callback = function(task)
-    local parts = task:get_parts()
-    if not parts then return false end
-
-    -- Make sure there is a MIME-Version header
-    local mv = task:get_header('MIME-Version')
+    -- Check if there is a MIME-Version header
     local missing_mime = false
-    if (not mv) then
+    if not task:get_header('MIME-Version') then
       missing_mime = true
     end
 
+    -- Check presense of MIME specific headers
+    local ct_header = task:get_header('Content-Type')
+    local cte_header = task:get_header('Content-Transfer-Encoding')
+
+    -- Add the symbol if we have MIME headers, but no MIME-Version
+    -- (do not add the symbol for RFC822 messages)
+    if (ct_header or cte_header) and missing_mime then
+      task:insert_result('MISSING_MIME_VERSION', 1.0)
+    end
+
     local found_ma = false
     local found_plain = false
     local found_html = false
-    local cte_7bit = false
 
-    for _,p in ipairs(parts) do
-      local mtype,subtype = p:get_type()
+    for _, p in ipairs(task:get_parts()) do
+      local mtype, subtype = p:get_type()
       local ctype = mtype:lower() .. '/' .. subtype:lower()
       if (ctype == 'multipart/alternative') then
         found_ma = true
       end
       if (ctype == 'text/plain') then
-        if p:get_cte() == '7bit' then
-          cte_7bit = true
-        end
         found_plain = true
       end
       if (ctype == 'text/html') then
-        if p:get_cte() == '7bit' then
-          cte_7bit = true
-        end
         found_html = true
       end
     end
 
-    if missing_mime then
-      if not (not found_ma and ((found_plain or found_html) and cte_7bit)) then
-        task:insert_result('MISSING_MIME_VERSION', 1.0)
-      end
-    end
-
     if (found_ma) then
       if (not found_plain) then
         task:insert_result('MIME_MA_MISSING_TEXT', 1.0)
@@ -395,7 +388,7 @@ rspamd_config:register_symbol{
   score = 2.0,
   parent = check_mime_id,
   type = 'virtual',
-  description = 'MIME-Version header is missing',
+  description = 'MIME-Version header is missing in MIME message',
   group = 'headers',
 }
 rspamd_config:register_symbol{


More information about the Commits mailing list