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'
+}
\ No newline at end of file
end
}
--- Detects bad content-transfer-encoding for text parts
--- For text parts (text/plain and text/html mainly)
-local r_ctype_text = 'content_type_is_type(text)'
--- Content transfer encoding is 7bit
-local r_cte_7bit = 'compare_transfer_encoding(7bit)'
--- And body contains 8bit characters
-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)',
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])
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),
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);
}
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);