diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-08-07 16:03:07 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-08-07 16:03:07 +0100 |
commit | fb13363c7c6f0be6ad9818e0cd32a75f907edd37 (patch) | |
tree | 5b802170b3f5e35cef291ce8c8b75db4557cda80 /rules | |
parent | 2e09ca145ec44ced965c984745265ce09a445e5b (diff) | |
download | rspamd-fb13363c7c6f0be6ad9818e0cd32a75f907edd37.tar.gz rspamd-fb13363c7c6f0be6ad9818e0cd32a75f907edd37.zip |
Move misclenaous rules to a separate file.
Diffstat (limited to 'rules')
-rw-r--r-- | rules/misc.lua | 92 | ||||
-rw-r--r-- | rules/rspamd.lua | 88 |
2 files changed, 106 insertions, 74 deletions
diff --git a/rules/misc.lua b/rules/misc.lua new file mode 100644 index 000000000..cbcdff0fc --- /dev/null +++ b/rules/misc.lua @@ -0,0 +1,92 @@ +--[[ +Copyright (c) 2011-2015, Vsevolod Stakhov <vsevolod@highsecure.ru> +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +]]-- + +-- This is main lua config file for rspamd + +local util = require "rspamd_util" + +local reconf = config['regexp'] + + +-- Uncategorized rules + +-- Local rules +local r_bgcolor = '/BGCOLOR=/iP' +local r_font_color = '/font color=[\\"\']?\\#FFFFFF[\\"\']?/iP' +reconf['R_WHITE_ON_WHITE'] = string.format('(!(%s) & (%s))', r_bgcolor, r_font_color) +reconf['R_FLASH_REDIR_IMGSHACK'] = '/^(?:http:\\/\\/)?img\\d{1,5}\\.imageshack\\.us\\/\\S+\\.swf/U' + +-- Different text parts +rspamd_config.R_PARTS_DIFFER = function(task) + local distance = task:get_mempool():get_variable('parts_distance', 'int') + + if distance then + local nd = tonumber(distance) + + if nd < 50 then + local score = 1 - util.tanh(nd / 100.0) + + task:insert_result('R_PARTS_DIFFER', score, tostring(nd) .. '%') + end + end + + return false +end + +-- Date issues +rspamd_config.MISSING_DATE = function(task) + if rspamd_config:get_api_version() >= 5 then + if not task:get_header_raw('Date') then + return true + end + end + + return false +end +rspamd_config.DATE_IN_FUTURE = function(task) + if rspamd_config:get_api_version() >= 5 then + local dm = task:get_date{format = 'message'} + local dt = task:get_date{format = 'connect'} + -- An 2 hour + if dm > 0 and dm - dt > 7200 then + return true + end + end + + return false +end +rspamd_config.DATE_IN_PAST = function(task) + if rspamd_config:get_api_version() >= 5 then + local dm = task:get_date{format = 'message', gmt = true} + local dt = task:get_date{format = 'connect', gmt = true} + -- A day + if dm > 0 and dt - dm > 86400 then + return true + end + end + + return false +end diff --git a/rules/rspamd.lua b/rules/rspamd.lua index ce2edd2b3..b96ef5e02 100644 --- a/rules/rspamd.lua +++ b/rules/rspamd.lua @@ -26,76 +26,20 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- This is main lua config file for rspamd -config['regexp'] = {} - -dofile('regexp/headers.lua') -dofile('regexp/lotto.lua') -dofile('regexp/fraud.lua') -dofile('regexp/drugs.lua') -dofile('html.lua') - -local reconf = config['regexp'] local util = require "rspamd_util" --- Uncategorized rules - --- Local rules -local r_bgcolor = '/BGCOLOR=/iP' -local r_font_color = '/font color=[\\"\']?\\#FFFFFF[\\"\']?/iP' -reconf['R_WHITE_ON_WHITE'] = string.format('(!(%s) & (%s))', r_bgcolor, r_font_color) -reconf['R_FLASH_REDIR_IMGSHACK'] = '/^(?:http:\\/\\/)?img\\d{1,5}\\.imageshack\\.us\\/\\S+\\.swf/U' +config['regexp'] = {} +local reconf = config['regexp'] --- Different text parts -rspamd_config.R_PARTS_DIFFER = function(task) - local distance = task:get_mempool():get_variable('parts_distance', 'int') - - if distance then - local nd = tonumber(distance) - - if nd < 50 then - local score = 1 - util.tanh(nd / 100.0) - - task:insert_result('R_PARTS_DIFFER', score, tostring(nd) .. '%') - end - end - - return false -end +local local_conf = rspamd_paths['CONFDIR'] +local local_rules = rspamd_paths['RULESDIR'] --- Date issues -rspamd_config.MISSING_DATE = function(task) - if rspamd_config:get_api_version() >= 5 then - if not task:get_header_raw('Date') then - return true - end - end - - return false -end -rspamd_config.DATE_IN_FUTURE = function(task) - if rspamd_config:get_api_version() >= 5 then - local dm = task:get_date{format = 'message'} - local dt = task:get_date{format = 'connect'} - -- An 2 hour - if dm > 0 and dm - dt > 7200 then - return true - end - end - - return false -end -rspamd_config.DATE_IN_PAST = function(task) - if rspamd_config:get_api_version() >= 5 then - local dm = task:get_date{format = 'message', gmt = true} - local dt = task:get_date{format = 'connect', gmt = true} - -- A day - if dm > 0 and dt - dm > 86400 then - return true - end - end - - return false -end +dofile(local_rules .. '/regexp/headers.lua') +dofile(local_rules .. '/regexp/lotto.lua') +dofile(local_rules .. '/regexp/fraud.lua') +dofile(local_rules .. '/regexp/drugs.lua') +dofile(local_rules .. '/html.lua') +dofile(local_rules .. '/misc.lua') local function file_exists(filename) local file = io.open(filename) @@ -107,14 +51,10 @@ local function file_exists(filename) end end -if file_exists('hfilter.lua') then - dofile('hfilter.lua') -end - -if file_exists('rspamd.local.lua') then - dofile('rspamd.local.lua') +if file_exists(local_conf .. 'rspamd.local.lua') then + dofile(local_conf .. 'rspamd.local.lua') end -if file_exists('rspamd.classifiers.lua') then - dofile('rspamd.classifiers.lua') +if file_exists(local_rules .. 'rspamd.classifiers.lua') then + dofile(local_rules .. 'rspamd.classifiers.lua') end |