Browse Source

rules/headers_checks.lua: make CHECK_FROM callback a bit more efficient

pull/3346/head
Jan Smutny 6 years ago
parent
commit
2367506006
  1. 50
      rules/headers_checks.lua

50
rules/headers_checks.lua

@ -626,33 +626,35 @@ local check_from_id = rspamd_config:register_symbol{
callback = function(task)
local envfrom = task:get_from(1)
local from = task:get_from(2)
if (from and from[1] and (from[1].name == nil or from[1].name == '' )) then
task:insert_result('FROM_NO_DN', 1.0)
elseif (from and from[1] and from[1].name and
if (from and from[1]) then
if (from[1].name == nil or from[1].name == '' ) then
task:insert_result('FROM_NO_DN', 1.0)
elseif (from[1].name and
util.strequal_caseless(from[1].name, from[1].addr)) then
task:insert_result('FROM_DN_EQ_ADDR', 1.0)
elseif (from and from[1] and from[1].name and from[1].name ~= '') then
task:insert_result('FROM_HAS_DN', 1.0)
-- Look for Mr/Mrs/Dr titles
local n = from[1].name:lower()
local match, match_end
match, match_end = n:find('^mrs?[%.%s]')
if match then
task:insert_result('FROM_NAME_HAS_TITLE', 1.0, n:sub(match, match_end-1))
end
match, match_end = n:find('^dr[%.%s]')
if match then
task:insert_result('FROM_NAME_HAS_TITLE', 1.0, n:sub(match, match_end-1))
end
-- Check for excess spaces
if n:find('%s%s') then
task:insert_result('FROM_NAME_EXCESS_SPACE', 1.0)
task:insert_result('FROM_DN_EQ_ADDR', 1.0)
elseif (from[1].name and from[1].name ~= '') then
task:insert_result('FROM_HAS_DN', 1.0)
-- Look for Mr/Mrs/Dr titles
local n = from[1].name:lower()
local match, match_end
match, match_end = n:find('^mrs?[%.%s]')
if match then
task:insert_result('FROM_NAME_HAS_TITLE', 1.0, n:sub(match, match_end-1))
end
match, match_end = n:find('^dr[%.%s]')
if match then
task:insert_result('FROM_NAME_HAS_TITLE', 1.0, n:sub(match, match_end-1))
end
-- Check for excess spaces
if n:find('%s%s') then
task:insert_result('FROM_NAME_EXCESS_SPACE', 1.0)
end
end
end
if (envfrom and from and envfrom[1] and from[1] and
if (envfrom and envfrom[1] and
util.strequal_caseless(envfrom[1].addr, from[1].addr))
then
task:insert_result('FROM_EQ_ENVFROM', 1.0)
then
task:insert_result('FROM_EQ_ENVFROM', 1.0)
end
elseif (envfrom and envfrom[1] and envfrom[1].addr) then
task:insert_result('FROM_NEQ_ENVFROM', 1.0, ((from or E)[1] or E).addr or '', envfrom[1].addr)
end

Loading…
Cancel
Save