]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Core: Add concept of mime only rules
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 6 Jan 2019 17:00:24 +0000 (17:00 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 6 Jan 2019 17:00:24 +0000 (17:00 +0000)
src/libserver/rspamd_symcache.c
src/libserver/rspamd_symcache.h
src/libserver/task.h
src/lua/lua_config.c

index 62340af3b096992f6f227889d4f0c163564d85b3..f6487f4d8e523c8357e6854281c04d4f5bccef51 100644 (file)
@@ -1382,7 +1382,8 @@ rspamd_symcache_check_symbol (struct rspamd_task *task,
        SET_START_BIT (checkpoint, dyn_item);
 
        if (!item->enabled ||
-               (RSPAMD_TASK_IS_EMPTY (task) && !(item->type & SYMBOL_TYPE_EMPTY))) {
+               (RSPAMD_TASK_IS_EMPTY (task) && !(item->type & SYMBOL_TYPE_EMPTY)) ||
+               (item->type & SYMBOL_TYPE_MIME_ONLY && !RSPAMD_TASK_IS_MIME(task))) {
                check = FALSE;
        }
        else if (item->specific.normal.condition_cb != -1) {
index df495fc8ed244e32fe9b32dd164139955fd7bb2d..ab9c568e1dc196f110f94bf2ff48d76aa5a3adfb 100644 (file)
@@ -47,6 +47,7 @@ enum rspamd_symbol_type {
        SYMBOL_TYPE_IDEMPOTENT = (1 << 12), /* Symbol cannot change metric */
        SYMBOL_TYPE_SQUEEZED = (1 << 13), /* Symbol is squeezed inside Lua */
        SYMBOL_TYPE_TRIVIAL = (1 << 14), /* Symbol is trivial */
+       SYMBOL_TYPE_MIME_ONLY = (1 << 15), /* Symbol is mime only */
 };
 
 /**
index 34e160dc028281a971d767a3dc18c22a22668d77..7cdc0953809f0b5e9b78181e28c24b402c57c120 100644 (file)
@@ -125,6 +125,7 @@ enum rspamd_task_stage {
 #define RSPAMD_TASK_IS_CLASSIFIED(task) (((task)->processed_stages & RSPAMD_TASK_STAGE_CLASSIFIERS))
 #define RSPAMD_TASK_IS_EMPTY(task) (((task)->flags & RSPAMD_TASK_FLAG_EMPTY))
 #define RSPAMD_TASK_IS_PROFILING(task) (((task)->flags & RSPAMD_TASK_FLAG_PROFILE))
+#define RSPAMD_TASK_IS_MIME(task) (((task)->flags & RSPAMD_TASK_FLAG_MIME))
 
 struct rspamd_email_address;
 struct rspamd_lang_detector;
index 1965b490390c869f5d3962dbf5cbf1eb55bf543f..cc0ba7aedf64768eb9a478ffb5fc65cac4bb6b5e 100644 (file)
@@ -1501,6 +1501,9 @@ lua_parse_symbol_flags (const gchar *str)
                if (strstr (str, "trivial") != NULL) {
                        ret |= SYMBOL_TYPE_TRIVIAL;
                }
+               if (strstr (str, "mime") != NULL) {
+                       ret |= SYMBOL_TYPE_MIME_ONLY;
+               }
        }
 
        return ret;