if not task:get_symbol(options['spf_allow_symbol']) then
found = false
rspamd_logger.debugx(task, "domain %s has been found in whitelist %s" ..
- "but it doesn't have valid SPF record", domain, symbol)
+ " but it doesn't have valid SPF record", domain, symbol)
end
end
if rule['valid_dkim'] then
- if not task:get_symbol(options['dkim_allow_symbol']) then
+ local sym = task:get_symbol(options['dkim_allow_symbol'])
+ if not sym then
found = false
rspamd_logger.debugx(task, "domain %s has been found in whitelist %s" ..
- "but it doesn't have valid DKIM", domain, symbol)
+ " but it doesn't have valid DKIM", domain, symbol)
+ else
+ -- Check dkim signatures as they might be for different domains
+ found = false
+ local dkim_opts = sym[1]['options']
+
+ if dkim_opts then
+ for i,d in ipairs(dkim_opts) do
+ if d == domain then
+ found = true
+ end
+ end
+ end
+ if not found then
+ rspamd_logger.debugx(task, "domain %s has been found in whitelist %s" ..
+ " but it doesn't have matching DKIM signature", domain, symbol)
+ end
end
end
if rule['valid_dmarc'] then
if not task:get_symbol(options['dmarc_allow_symbol']) then
found = false
rspamd_logger.debugx(task, "domain %s has been found in whitelist %s" ..
- "but it doesn't have valid DMARC", domain, symbol)
+ " but it doesn't have valid DMARC", domain, symbol)
end
end
end