Browse Source

[Fix] Fix R_BAD_CTE_7BIT rule

Issue: #1590
tags/1.6.0
Vsevolod Stakhov 7 years ago
parent
commit
7c68de49e5
3 changed files with 28 additions and 18 deletions
  1. 20
    0
      rules/misc.lua
  2. 0
    10
      rules/regexp/headers.lua
  3. 8
    8
      src/lua/lua_mimepart.c

+ 20
- 0
rules/misc.lua View File

@@ -590,3 +590,23 @@ rspamd_config.INFO_TO_INFO_LU = {
description = 'info@ From/To address with List-Unsubscribe headers',
score = 2.0
}

-- Detects bad content-transfer-encoding for text parts

rspamd_config.R_BAD_CTE_7BIT = {
callback = function(task)
local tp = task:get_text_parts() or {}

for _,p in ipairs(tp) do
local cte = p:get_mimepart():get_cte() or ''
if cte ~= '8bit' and p:has_8bit_raw() then
return true,1.0,cte
end
end

return false
end,
score = 4.0,
description = 'Detects bad content-transfer-encoding for text parts',
group = 'header'
}

+ 0
- 10
rules/regexp/headers.lua View File

@@ -57,20 +57,6 @@ rspamd_config.MISSING_SUBJECT = {
end
}

local r_ctype_text = 'content_type_is_type(text)'
local r_cte_7bit = 'compare_transfer_encoding(7bit)'
local r_body_8bit = '/[^\\x01-\\x7f]/Qr'
reconf['R_BAD_CTE_7BIT'] = {
re = string.format('(%s) & (%s) & (%s)', r_ctype_text, r_cte_7bit, r_body_8bit),
score = 2.0,
description = 'Detects bad content-transfer-encoding for text parts',
group = 'header'
}

-- Detects missing To header
reconf['MISSING_TO'] = {
re = '!raw_header_exists(To)',

+ 8
- 8
src/lua/lua_mimepart.c View File

@@ -47,18 +47,18 @@ end
LUA_FUNCTION_DEF (textpart, is_utf);

/***
* @method text_part:is_8bit_raw()
* @method text_part:has_8bit_raw()
* Return TRUE if a part has raw 8bit characters
* @return {boolean} true if a part has raw 8bit characters
*/
LUA_FUNCTION_DEF (textpart, is_8bit_raw);
LUA_FUNCTION_DEF (textpart, has_8bit_raw);

/***
* @method text_part:is_8bit()
* @method text_part:has_8bit()
* Return TRUE if a part has raw 8bit characters
* @return {boolean} true if a part has encoded 8bit characters
*/
LUA_FUNCTION_DEF (textpart, is_8bit);
LUA_FUNCTION_DEF (textpart, has_8bit);

/***
* @method text_part:get_content([type])
@@ -146,8 +146,8 @@ LUA_FUNCTION_DEF (textpart, get_mimepart);

static const struct luaL_reg textpartlib_m[] = {
LUA_INTERFACE_DEF (textpart, is_utf),
LUA_INTERFACE_DEF (textpart, is_8bit_raw),
LUA_INTERFACE_DEF (textpart, is_8bit),
LUA_INTERFACE_DEF (textpart, has_8bit_raw),
LUA_INTERFACE_DEF (textpart, has_8bit),
LUA_INTERFACE_DEF (textpart, get_content),
LUA_INTERFACE_DEF (textpart, get_raw_content),
LUA_INTERFACE_DEF (textpart, get_content_oneline),
@@ -395,7 +395,7 @@ lua_textpart_is_utf (lua_State * L)


static gint
lua_textpart_is_8bit_raw (lua_State * L)
lua_textpart_has_8bit_raw (lua_State * L)
{
struct rspamd_mime_text_part *part = lua_check_textpart (L);

@@ -415,7 +415,7 @@ lua_textpart_is_8bit_raw (lua_State * L)
}

static gint
lua_textpart_is_8bit (lua_State * L)
lua_textpart_has_8bit (lua_State * L)
{
struct rspamd_mime_text_part *part = lua_check_textpart (L);


Loading…
Cancel
Save