diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-08-07 14:09:14 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-08-07 14:09:14 +0100 |
commit | 4135a3b422a6c14d6fe7e63d1bd5b32a32595616 (patch) | |
tree | 008263e9aea490cd79edc343953949944f047fb5 /rules/rspamd.lua | |
parent | 0da96b74d5351f63630d7c7160ad9c90c446c055 (diff) | |
download | rspamd-4135a3b422a6c14d6fe7e63d1bd5b32a32595616.tar.gz rspamd-4135a3b422a6c14d6fe7e63d1bd5b32a32595616.zip |
Move lua rules to rules dir.
Diffstat (limited to 'rules/rspamd.lua')
-rw-r--r-- | rules/rspamd.lua | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/rules/rspamd.lua b/rules/rspamd.lua new file mode 100644 index 000000000..ce2edd2b3 --- /dev/null +++ b/rules/rspamd.lua @@ -0,0 +1,120 @@ +--[[ +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 + +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' + +-- 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 + +local function file_exists(filename) + local file = io.open(filename) + if file then + io.close(file) + return true + else + return false + end +end + +if file_exists('hfilter.lua') then + dofile('hfilter.lua') +end + +if file_exists('rspamd.local.lua') then + dofile('rspamd.local.lua') +end + +if file_exists('rspamd.classifiers.lua') then + dofile('rspamd.classifiers.lua') +end |