diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-04-14 09:46:17 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-04-14 09:46:35 +0100 |
commit | 958715d7faef07ad788b90591e2f2d6fafb9e383 (patch) | |
tree | fec961c928695266888178ca31e93d6e1844e716 | |
parent | 560d27b0de840d090666d295b0444c070f2c0a19 (diff) | |
download | rspamd-958715d7faef07ad788b90591e2f2d6fafb9e383.tar.gz rspamd-958715d7faef07ad788b90591e2f2d6fafb9e383.zip |
[Feature] Allow configurable sign headers for DKIM
Issue: #1595
-rw-r--r-- | src/libserver/dkim.c | 4 | ||||
-rw-r--r-- | src/plugins/dkim_check.c | 42 |
2 files changed, 30 insertions, 16 deletions
diff --git a/src/libserver/dkim.c b/src/libserver/dkim.c index fe7e5e8ea..eb8c193b5 100644 --- a/src/libserver/dkim.c +++ b/src/libserver/dkim.c @@ -365,7 +365,7 @@ rspamd_dkim_parse_hdrlist_common (struct rspamd_dkim_common_ctx *ctx, gchar *h; gboolean from_found = FALSE; guint count = 0; - struct rspamd_dkim_header *new, *check; + struct rspamd_dkim_header *new; GHashTable *htb; p = param; @@ -405,7 +405,7 @@ rspamd_dkim_parse_hdrlist_common (struct rspamd_dkim_common_ctx *ctx, g_ptr_array_add (ctx->hlist, new); - if ((check = g_hash_table_lookup (htb, h)) != NULL) { + if (g_hash_table_lookup (htb, h) != NULL) { new->count++; } else { diff --git a/src/plugins/dkim_check.c b/src/plugins/dkim_check.c index db5a431b0..dd61de67f 100644 --- a/src/plugins/dkim_check.c +++ b/src/plugins/dkim_check.c @@ -274,6 +274,15 @@ dkim_module_init (struct rspamd_config *cfg, struct module_ctx **ctx) 0, NULL, 0); + rspamd_rcl_add_doc_by_path (cfg, + "dkim", + "Headers used in signing", + "sign_headers", + UCL_STRING, + NULL, + 0, + NULL, + 0); return 0; } @@ -315,21 +324,21 @@ dkim_module_config (struct rspamd_config *cfg) if ((value = rspamd_config_get_module_opt (cfg, "options", "check_local")) != NULL) { - dkim_module_ctx->check_local = ucl_obj_toboolean (value); + dkim_module_ctx->check_local = ucl_object_toboolean (value); } else { dkim_module_ctx->check_local = FALSE; } if ((value = rspamd_config_get_module_opt (cfg, "options", "check_authed")) != NULL) { - dkim_module_ctx->check_authed = ucl_obj_toboolean (value); + dkim_module_ctx->check_authed = ucl_object_toboolean (value); } else { dkim_module_ctx->check_authed = FALSE; } if ((value = rspamd_config_get_module_opt (cfg, "dkim", "symbol_reject")) != NULL) { - dkim_module_ctx->symbol_reject = ucl_obj_tostring (value); + dkim_module_ctx->symbol_reject = ucl_object_tostring (value); } else { dkim_module_ctx->symbol_reject = DEFAULT_SYMBOL_REJECT; @@ -337,28 +346,28 @@ dkim_module_config (struct rspamd_config *cfg) if ((value = rspamd_config_get_module_opt (cfg, "dkim", "symbol_tempfail")) != NULL) { - dkim_module_ctx->symbol_tempfail = ucl_obj_tostring (value); + dkim_module_ctx->symbol_tempfail = ucl_object_tostring (value); } else { dkim_module_ctx->symbol_tempfail = DEFAULT_SYMBOL_TEMPFAIL; } if ((value = rspamd_config_get_module_opt (cfg, "dkim", "symbol_allow")) != NULL) { - dkim_module_ctx->symbol_allow = ucl_obj_tostring (value); + dkim_module_ctx->symbol_allow = ucl_object_tostring (value); } else { dkim_module_ctx->symbol_allow = DEFAULT_SYMBOL_ALLOW; } if ((value = rspamd_config_get_module_opt (cfg, "dkim", "symbol_na")) != NULL) { - dkim_module_ctx->symbol_na = ucl_obj_tostring (value); + dkim_module_ctx->symbol_na = ucl_object_tostring (value); } else { dkim_module_ctx->symbol_na = DEFAULT_SYMBOL_NA; } if ((value = rspamd_config_get_module_opt (cfg, "dkim", "symbol_permfail")) != NULL) { - dkim_module_ctx->symbol_permfail = ucl_obj_tostring (value); + dkim_module_ctx->symbol_permfail = ucl_object_tostring (value); } else { dkim_module_ctx->symbol_permfail = DEFAULT_SYMBOL_PERMFAIL; @@ -366,7 +375,7 @@ dkim_module_config (struct rspamd_config *cfg) if ((value = rspamd_config_get_module_opt (cfg, "dkim", "dkim_cache_size")) != NULL) { - cache_size = ucl_obj_toint (value); + cache_size = ucl_object_toint (value); } else { cache_size = DEFAULT_CACHE_SIZE; @@ -374,7 +383,7 @@ dkim_module_config (struct rspamd_config *cfg) if ((value = rspamd_config_get_module_opt (cfg, "dkim", "time_jitter")) != NULL) { - dkim_module_ctx->time_jitter = ucl_obj_todouble (value); + dkim_module_ctx->time_jitter = ucl_object_todouble (value); } else { dkim_module_ctx->time_jitter = DEFAULT_TIME_JITTER; @@ -398,7 +407,7 @@ dkim_module_config (struct rspamd_config *cfg) "DKIM domains", rspamd_kv_list_read, rspamd_kv_list_fin, (void **)&dkim_module_ctx->dkim_domains)) { msg_warn_config ("cannot load dkim domains list from %s", - ucl_obj_tostring (value)); + ucl_object_tostring (value)); } else { got_trusted = TRUE; @@ -411,7 +420,7 @@ dkim_module_config (struct rspamd_config *cfg) "DKIM domains", rspamd_kv_list_read, rspamd_kv_list_fin, (void **)&dkim_module_ctx->dkim_domains)) { msg_warn_config ("cannot load dkim domains list from %s", - ucl_obj_tostring (value)); + ucl_object_tostring (value)); } else { got_trusted = TRUE; @@ -421,7 +430,7 @@ dkim_module_config (struct rspamd_config *cfg) if ((value = rspamd_config_get_module_opt (cfg, "dkim", "strict_multiplier")) != NULL) { - dkim_module_ctx->strict_multiplier = ucl_obj_toint (value); + dkim_module_ctx->strict_multiplier = ucl_object_toint (value); } else { dkim_module_ctx->strict_multiplier = 1; @@ -429,7 +438,7 @@ dkim_module_config (struct rspamd_config *cfg) if ((value = rspamd_config_get_module_opt (cfg, "dkim", "trusted_only")) != NULL) { - dkim_module_ctx->trusted_only = ucl_obj_toboolean (value); + dkim_module_ctx->trusted_only = ucl_object_toboolean (value); } else { dkim_module_ctx->trusted_only = FALSE; @@ -437,12 +446,17 @@ dkim_module_config (struct rspamd_config *cfg) if ((value = rspamd_config_get_module_opt (cfg, "dkim", "skip_multi")) != NULL) { - dkim_module_ctx->skip_multi = ucl_obj_toboolean (value); + dkim_module_ctx->skip_multi = ucl_object_toboolean (value); } else { dkim_module_ctx->skip_multi = FALSE; } + if ((value = + rspamd_config_get_module_opt (cfg, "dkim", "sign_headers")) != NULL) { + dkim_module_ctx->sign_headers = ucl_object_tostring (value); + } + if (dkim_module_ctx->trusted_only && !got_trusted) { msg_err_config ( "trusted_only option is set and no trusted domains are defined; disabling dkim module completely as it is useless in this case"); |