]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Feature] Rspamadm: Allow to rewrite headers in messages
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 18 Dec 2018 15:51:27 +0000 (15:51 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 18 Dec 2018 15:51:27 +0000 (15:51 +0000)
lualib/rspamadm/mime.lua

index 423a6910aec7b088cc281bb68d37959e785bdfc6..96bdfd72c0f03631caa533a85b7796dc10c8a24f 100644 (file)
@@ -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',