From 39adeb78973b782a8ce50b9e365f2ba639ceec0c Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Fri, 3 Mar 2017 15:54:35 +0000 Subject: [PATCH] [Minor] Deal with DSN messages --- rules/misc.lua | 2 +- src/libmime/content_type.c | 9 ++++++++- src/libmime/content_type.h | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/rules/misc.lua b/rules/misc.lua index de088ae4c..6b2ed8ce6 100644 --- a/rules/misc.lua +++ b/rules/misc.lua @@ -188,7 +188,7 @@ rspamd_config.BROKEN_CONTENT_TYPE = { return fun.any(function(p) return p:is_broken() end, task:get_parts()) end, - score = 3.0, + score = 1.5, group = 'header', description = 'Message has part with broken content type' } diff --git a/src/libmime/content_type.c b/src/libmime/content_type.c index ba4807e0f..28dadbc13 100644 --- a/src/libmime/content_type.c +++ b/src/libmime/content_type.c @@ -144,7 +144,14 @@ rspamd_content_type_parse (const gchar *in, RSPAMD_FTOK_ASSIGN (&srch, "message"); if (rspamd_ftok_cmp (&res->type, &srch) == 0) { - res->flags |= RSPAMD_CONTENT_TYPE_MESSAGE; + RSPAMD_FTOK_ASSIGN (&srch, "delivery-status"); + + if (rspamd_ftok_cmp (&res->subtype, &srch) == 0) { + res->flags |= RSPAMD_CONTENT_TYPE_TEXT|RSPAMD_CONTENT_TYPE_DSN; + } + else { + res->flags |= RSPAMD_CONTENT_TYPE_MESSAGE; + } } } } diff --git a/src/libmime/content_type.h b/src/libmime/content_type.h index 69086fa7f..25283d365 100644 --- a/src/libmime/content_type.h +++ b/src/libmime/content_type.h @@ -26,6 +26,7 @@ enum rspamd_content_type_flags { RSPAMD_CONTENT_TYPE_MULTIPART = 1 << 1, RSPAMD_CONTENT_TYPE_TEXT = 1 << 2, RSPAMD_CONTENT_TYPE_MESSAGE = 1 << 3, + RSPAMD_CONTENT_TYPE_DSN = 1 << 4, }; #define IS_CT_MULTIPART(ct) ((ct)->flags & RSPAMD_CONTENT_TYPE_MULTIPART) -- 2.39.5