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/misc.lua | |
parent | 2e09ca145ec44ced965c984745265ce09a445e5b (diff) | |
download | rspamd-fb13363c7c6f0be6ad9818e0cd32a75f907edd37.tar.gz rspamd-fb13363c7c6f0be6ad9818e0cd32a75f907edd37.zip |
Move misclenaous rules to a separate file.
Diffstat (limited to 'rules/misc.lua')
-rw-r--r-- | rules/misc.lua | 92 |
1 files changed, 92 insertions, 0 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 |