From fe9e2384c6099cb57408f8d74b52f839d9d6326e Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 18 Dec 2018 15:51:27 +0000 Subject: [Feature] Rspamadm: Allow to rewrite headers in messages --- lualib/rspamadm/mime.lua | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'lualib') diff --git a/lualib/rspamadm/mime.lua b/lualib/rspamadm/mime.lua index 423a6910a..96bdfd72c 100644 --- a/lualib/rspamadm/mime.lua +++ b/lualib/rspamadm/mime.lua @@ -142,6 +142,10 @@ modify:option "-r --remove-header" :description "Removes specific header (all occurrences)" :argname "
" :count "*" +modify:option "-R --rewrite-header" + :description "Rewrites specific header, uses Lua string.format pattern" + :argname "" + :count "*" modify:option "-t --text-footer" :description "Adds footer to text/plain parts from a specific file" :argname "" @@ -670,6 +674,20 @@ local function modify_handler(opts) end end + for _,h in ipairs(opts['rewrite_header']) do + local hname,hpattern = h:match('^([^=]+)=(.+)$') + if hname == name then + local new_value = string.format(hpattern, hdr.decoded) + new_value = string.format('%s:%s%s%s', + name, hdr.separator, + rspamd_util.fold_header(name, + rspamd_util.mime_header_encode(new_value), + task:get_newlines_type()), newline_s) + io.write(new_value) + return + end + end + if need_rewrite_ct then if name:lower() == 'content-type' then local nct = string.format('%s: %s/%s; charset=utf-8%s', -- cgit v1.2.3