From 25fbf9a11b80c3a7ac2ecffbbd6c35760393c7df Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Wed, 8 Jan 2020 16:07:47 +0000 Subject: [PATCH] [Fix] Fix gpg parts misdetection Issue: #3205 --- rules/misc.lua | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/rules/misc.lua b/rules/misc.lua index 7d3682271..5dcf6ea05 100644 --- a/rules/misc.lua +++ b/rules/misc.lua @@ -685,12 +685,14 @@ local check_encrypted_name = rspamd_config:register_symbol{ local function check_part(part) if part:is_multipart() then local children = part:get_children() or {} + local text_kids = {} for _,cld in ipairs(children) do if cld:is_multipart() then check_part(cld) elseif cld:is_text() then seen_text = true + text_kids[#text_kids + 1] = cld else local type,subtype,_ = cld:get_type_full() @@ -712,6 +714,17 @@ local check_encrypted_name = rspamd_config:register_symbol{ end end end + if seen_text and seen_encrypted then + -- Ensure that our seen text is not really part of pgp #3205 + for _,tp in ipairs(text_kids) do + local t,_ = tp:get_type() + seen_text = false -- reset temporary + if t and t == 'text' then + seen_text = true + break + end + end + end end end end -- 2.39.5