]> source.dussan.org Git - rspamd.git/commitdiff
[Feature] Support suppressing DMARC reports for some domains
authorAndrew Lewis <nerf@judo.za.org>
Thu, 15 Jun 2017 14:12:23 +0000 (16:12 +0200)
committerAndrew Lewis <nerf@judo.za.org>
Thu, 15 Jun 2017 14:12:23 +0000 (16:12 +0200)
src/plugins/lua/dmarc.lua

index 04382c00b1facc10313282040f0116da033612a0..72a04866e6d7f377af679af88fa35359a456a897 100644 (file)
@@ -33,6 +33,7 @@ end
 
 local N = 'dmarc'
 local no_sampling_domains
+local no_reporting_domains
 local statefile = string.format('%s/%s', rspamd_paths['DBDIR'], 'dmarc_reports_last_sent')
 local VAR_NAME = 'dmarc_reports_last_sent'
 local INTERVAL = 86400
@@ -515,6 +516,13 @@ local function dmarc_callback(task)
 
     if rua and redis_params and dmarc_reporting then
 
+      if no_reporting_domains then
+        if no_reporting_domains:get_key(dmarc_domain) or no_reporting_domains:get_key(rspamd_util.get_tld(dmarc_domain)) then
+          rspamd_logger.infox(task, 'DMARC reporting suppressed for %1', dmarc_domain)
+          return maybe_force_action(disposition)
+        end
+      end
+
       local spf_result
       if spf_ok then
         spf_result = 'pass'
@@ -597,6 +605,7 @@ if not opts or type(opts) ~= 'table' then
   return
 end
 no_sampling_domains = rspamd_map_add(N, 'no_sampling_domains', 'map', 'Domains not to apply DMARC sampling to')
+no_reporting_domains = rspamd_map_add(N, 'no_reporting_domains', 'map', 'Domains not to apply DMARC reporting to')
 
 if opts['symbols'] then
   for k,_ in pairs(dmarc_symbols) do