summaryrefslogtreecommitdiffstats
path: root/lualib/rspamadm
diff options
context:
space:
mode:
Diffstat (limited to 'lualib/rspamadm')
-rw-r--r--lualib/rspamadm/mime.lua18
1 files changed, 18 insertions, 0 deletions
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 "<header>"
:count "*"
+modify:option "-R --rewrite-header"
+ :description "Rewrites specific header, uses Lua string.format pattern"
+ :argname "<header=pattern>"
+ :count "*"
modify:option "-t --text-footer"
:description "Adds footer to text/plain parts from a specific file"
:argname "<file>"
@@ -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',