summaryrefslogtreecommitdiffstats
path: root/lualib
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2017-06-29 08:05:54 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2017-06-29 08:59:21 +0100
commit5f52812464d4209b93c1665c242f2cd2c3576f60 (patch)
treea2243bfa227b7eae077c1d3802da7e4fe7f2f58a /lualib
parent9b56954e316bd36bae782701e1de4f023aca8c4c (diff)
downloadrspamd-5f52812464d4209b93c1665c242f2cd2c3576f60.tar.gz
rspamd-5f52812464d4209b93c1665c242f2cd2c3576f60.zip
[Minor] Move emails normalization to the lua library
Diffstat (limited to 'lualib')
-rw-r--r--lualib/lua_util.lua40
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