diff options
author | Andrew Lewis <nerf@judo.za.org> | 2016-08-05 11:05:24 +0200 |
---|---|---|
committer | Andrew Lewis <nerf@judo.za.org> | 2016-08-05 11:14:39 +0200 |
commit | 71b04b7dfcac774be357f9ac2ba44b6b9b31985e (patch) | |
tree | 72f10662f39bfade464ea048f14002433e39e654 /src | |
parent | b679ef76a23e43a88ab1b0af722de4b13bb0cff3 (diff) | |
download | rspamd-71b04b7dfcac774be357f9ac2ba44b6b9b31985e.tar.gz rspamd-71b04b7dfcac774be357f9ac2ba44b6b9b31985e.zip |
[Fix] Fix processing of last element of DMARC policies
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/lua/dmarc.lua | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/plugins/lua/dmarc.lua b/src/plugins/lua/dmarc.lua index f6dd8c75a..bafaa0eb7 100644 --- a/src/plugins/lua/dmarc.lua +++ b/src/plugins/lua/dmarc.lua @@ -37,6 +37,7 @@ local redis_params = nil local dmarc_redis_key_prefix = "dmarc_" local dmarc_domain = nil local elts_re = rspamd_regexp.create_cached("\\\\{0,1};\\s+") +local trim_re = rspamd_regexp.create_cached("(.+)\\\\{0,1};$") local dmarc_reporting = false local dmarc_actions = {} @@ -113,13 +114,17 @@ local function dmarc_callback(task) local elts = elts_re:split(r) if elts then + local trimmed = trim_re:search(elts[#elts], true, true) + if trimmed then + elts[#elts] = trimmed[1][2] + end for _,e in ipairs(elts) do dkim_pol = string.match(e, '^adkim=(.)$') if dkim_pol then if dkim_pol == 's' then strict_dkim = true elseif dkim_pol ~= 'r' then - failed_policy = 'adkim tag has invalid value' + failed_policy = 'adkim tag has invalid value: ' .. dkim_pol return end end @@ -128,7 +133,7 @@ local function dmarc_callback(task) if spf_pol == 's' then strict_spf = true elseif spf_pol ~= 'r' then - failed_policy = 'aspf tag has invalid value' + failed_policy = 'aspf tag has invalid value: ' .. spf_pol return end end @@ -140,7 +145,7 @@ local function dmarc_callback(task) strict_policy = true quarantine_policy = true elseif (policy ~= 'none') then - failed_policy = 'p tag has invalid value' + failed_policy = 'p tag has invalid value: ' .. policy return end end @@ -161,7 +166,7 @@ local function dmarc_callback(task) quarantine_policy = false end else - failed_policy = 'sp tag has invalid value' + failed_policy = 'sp tag has invalid value: ' .. subdomain_policy return end end |