aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Freegard <steve@stevefreegard.com>2017-03-24 19:31:27 +0000
committerSteve Freegard <steve@stevefreegard.com>2017-03-24 19:31:27 +0000
commit5909eaece4fabe11e3224b9416e142ad0284f55c (patch)
treec82298ac0b55b7805a1698db37a2c99cbc629788
parenta04efc35197414102796de2ca934c118656f769b (diff)
downloadrspamd-5909eaece4fabe11e3224b9416e142ad0284f55c.tar.gz
rspamd-5909eaece4fabe11e3224b9416e142ad0284f55c.zip
Add DIRECT_TO_MX rule to once_received plugin
-rw-r--r--conf/modules.d/once_received.conf1
-rw-r--r--src/plugins/lua/once_received.lua14
2 files changed, 15 insertions, 0 deletions
diff --git a/conf/modules.d/once_received.conf b/conf/modules.d/once_received.conf
index 93080d531..233d662ef 100644
--- a/conf/modules.d/once_received.conf
+++ b/conf/modules.d/once_received.conf
@@ -19,6 +19,7 @@ once_received {
bad_host = "dynamic";
symbol_strict = "ONCE_RECEIVED_STRICT";
symbol = "ONCE_RECEIVED";
+ symbol_mx = "DIRECT_TO_MX";
.include(try=true,priority=5) "${DBDIR}/dynamic/once_received.conf"
.include(try=true,priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/once_received.conf"
diff --git a/src/plugins/lua/once_received.lua b/src/plugins/lua/once_received.lua
index 00161159f..e1eea2ca5 100644
--- a/src/plugins/lua/once_received.lua
+++ b/src/plugins/lua/once_received.lua
@@ -18,6 +18,7 @@ limitations under the License.
local symbol = 'ONCE_RECEIVED'
local symbol_rdns = 'RDNS_NONE'
+local symbol_mx = 'DIRECT_TO_MX'
-- Symbol for strict checks
local symbol_strict = nil
local bad_hosts = {}
@@ -40,6 +41,12 @@ local function check_quantity_received (task)
if recvh and #recvh <= 1 then
task:insert_result(symbol, 1)
task:insert_result(symbol_strict, 1)
+ -- Check for MUAs
+ local ua = task:get_header('User-Agent')
+ local xm = task:get_header('X-Mailer')
+ if (ua or xm) then
+ task:insert_result(symbol_mx, 1, (ua or xm))
+ end
end
task:insert_result(symbol_rdns, 1)
else
@@ -169,6 +176,8 @@ if opts then
elseif n == 'whitelist' then
whitelist = rspamd_map_add('once_received', 'whitelist', 'radix',
'once received whitelist')
+ elseif n == 'symbol_mx' then
+ symbol_mx = v
end
end
@@ -182,5 +191,10 @@ if opts then
type = 'virtual',
parent = id
})
+ rspamd_config:register_symbol({
+ name = symbol_mx,
+ type = 'virtual',
+ parent = id
+ })
end
end