From: Vsevolod Stakhov Date: Tue, 28 Apr 2020 14:38:47 +0000 (+0100) Subject: [Fix] Disable text detection heuristics for encrypted parts X-Git-Tag: 2.6~478 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=a89cf52149a0790378ae21440406e6ea52780b58;p=rspamd.git [Fix] Disable text detection heuristics for encrypted parts Issue: #3349 --- diff --git a/lualib/lua_magic/heuristics.lua b/lualib/lua_magic/heuristics.lua index d9d408170..8aeafae90 100644 --- a/lualib/lua_magic/heuristics.lua +++ b/lualib/lua_magic/heuristics.lua @@ -377,6 +377,19 @@ exports.text_part_heuristic = function(part, log_obj) return true end + local parent = part:get_parent() + + if parent then + local parent_type,parent_subtype = parent:get_type() + + if parent_type == 'multipart' and parent_subtype == 'encrypted' then + -- Skip text heuristics for encrypted parts + lua_util.debugm(N, log_obj, "text part check: parent is encrypted, not a text part") + + return false + end + end + local content = part:get_content() local clen = #content local is_text diff --git a/src/libmime/content_type.c b/src/libmime/content_type.c index 3de9bdb12..1540e6b23 100644 --- a/src/libmime/content_type.c +++ b/src/libmime/content_type.c @@ -709,6 +709,11 @@ rspamd_content_type_parse (const gchar *in, if (rspamd_ftok_casecmp (&res->type, &srch) == 0) { res->flags |= RSPAMD_CONTENT_TYPE_MULTIPART; + + RSPAMD_FTOK_ASSIGN (&srch, "encrypted"); + if (rspamd_ftok_casecmp (&res->subtype, &srch) == 0) { + res->flags |= RSPAMD_CONTENT_TYPE_ENCRYPTED; + } } else { RSPAMD_FTOK_ASSIGN (&srch, "text"); diff --git a/src/libmime/content_type.h b/src/libmime/content_type.h index 49bba4269..3991e6785 100644 --- a/src/libmime/content_type.h +++ b/src/libmime/content_type.h @@ -32,6 +32,7 @@ enum rspamd_content_type_flags { RSPAMD_CONTENT_TYPE_MESSAGE = 1 << 3, RSPAMD_CONTENT_TYPE_DSN = 1 << 4, RSPAMD_CONTENT_TYPE_MISSING = 1 << 5, + RSPAMD_CONTENT_TYPE_ENCRYPTED = 1 << 1, }; enum rspamd_content_param_flags {