diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-06-29 08:05:54 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-06-29 08:59:21 +0100 |
commit | 5f52812464d4209b93c1665c242f2cd2c3576f60 (patch) | |
tree | a2243bfa227b7eae077c1d3802da7e4fe7f2f58a /lualib | |
parent | 9b56954e316bd36bae782701e1de4f023aca8c4c (diff) | |
download | rspamd-5f52812464d4209b93c1665c242f2cd2c3576f60.tar.gz rspamd-5f52812464d4209b93c1665c242f2cd2c3576f60.zip |
[Minor] Move emails normalization to the lua library
Diffstat (limited to 'lualib')
-rw-r--r-- | lualib/lua_util.lua | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/lualib/lua_util.lua b/lualib/lua_util.lua index 1f53d51ed..bdb0045d5 100644 --- a/lualib/lua_util.lua +++ b/lualib/lua_util.lua @@ -40,4 +40,44 @@ exports.template = function(tmpl, keys) return lpeg.match(template_grammar, tmpl) end +exports.remove_email_aliases = function(addr) + local function check_address(addr) + if addr.user then + local cap, pluses = string.match(addr.user, '^([^%+][^%+]*)(%+.*)$') + if cap then + return cap, rspamd_str_split(pluses, '+') + end + end + + return nil + end + + local function set_addr(addr, new_user) + addr.user = new_user + + if addr.domain then + addr.addr = string.format('%s@%s', addr.user, addr.domain) + else + addr.addr = string.format('%s@', addr.user) + end + + if addr.name and #addr.name > 0 then + addr.raw = string.format('"%s" <%s>', addr.name, addr.addr) + else + addr.raw = string.format('<%s>', addr.addr) + end + end + + if addr then + local nu, tags = check_address(addr) + if nu then + set_addr(addr, nu) + + return nu, tags + end + + return nil + end +end + return exports |