]> source.dussan.org Git - rspamd.git/commitdiff
[Feature] Set expire for dmarc reports
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 20 Nov 2016 15:32:05 +0000 (15:32 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 20 Nov 2016 15:32:05 +0000 (15:32 +0000)
src/plugins/lua/dmarc.lua

index 400882755dd83173904d3e36f7f56cad537c8a6d..58d1861062d944c03898afe857f9f72fa0cfe29e 100644 (file)
@@ -49,6 +49,8 @@ local dmarc_symbols = {
 -- Default port for redis upstreams
 local redis_params = nil
 local dmarc_redis_key_prefix = "dmarc_"
+-- 2 days
+local dmarc_redis_key_expire = 60 * 60 * 24 * 2
 local dmarc_reporting = false
 local dmarc_actions = {}
 
@@ -330,7 +332,7 @@ local function dmarc_callback(task)
       local report_data = dmarc_report(task, spf_ok, dkim_ok, disposition)
 
       if report_data then
-        rspamd_redis_make_request(task,
+        local ret,conn,upstream = rspamd_redis_make_request(task,
           redis_params, -- connect params
           from[1]['domain'], -- hash key
           true, -- is write
@@ -338,6 +340,11 @@ local function dmarc_callback(task)
           'LPUSH', -- command
           {redis_key, report_data} -- arguments
         )
+        if ret and conn then
+          conn:add_cmd('EXPIRE', {
+            redis_key, tostring(dmarc_redis_key_expire)
+          })
+        end
       end
     end
 
@@ -393,6 +400,14 @@ if opts['key_prefix'] then
   dmarc_redis_key_prefix = opts['key_prefix']
 end
 
+if opts['expire'] then
+  dmarc_redis_key_expire = opts['expire']
+end
+
+if opts['key_expire'] then
+  dmarc_redis_key_expire = opts['key_expire']
+end
+
 -- Check spf and dkim sections for changed symbols
 local function check_mopt(var, m_opts, name)
   if m_opts[name] then