|
@@ -1,19 +1,27 @@
|
|
|
sign_condition =<<EOD
|
|
|
return function(task)
|
|
|
- local from = task:get_from('smtp')
|
|
|
- if from and from[1]['addr'] then
|
|
|
- lastAtSymbol = from[1]['addr']:find("[^%@]+$")
|
|
|
- local domain = from[1]['addr']:sub(lastAtSymbol, #from[1]['addr'])
|
|
|
- local keyfile = io.open("/etc/rspamd/dkim/keys/" .. domain .. ".default")
|
|
|
- if keyfile then
|
|
|
- keyfile:close()
|
|
|
- return {
|
|
|
- key = "/etc/rspamd/dkim/keys/" .. domain .. ".default",
|
|
|
- domain = domain,
|
|
|
- selector = "default"
|
|
|
- }
|
|
|
- end
|
|
|
- end
|
|
|
- return false
|
|
|
+ local from = task:get_from('smtp')
|
|
|
+ local rspamd_logger = require "rspamd_logger"
|
|
|
+ if not task:get_user() then
|
|
|
+ rspamd_logger.infox(task, "Skip DKIM signing for unauthorized user")
|
|
|
+ return false
|
|
|
+ end
|
|
|
+ if from and from[1]['addr'] then
|
|
|
+ lastAtSymbol = from[1]['addr']:find("[^%@]+$")
|
|
|
+ local domain = from[1]['addr']:sub(lastAtSymbol, #from[1]['addr'])
|
|
|
+ local keyfile = io.open("/data/dkim/keys/" .. domain .. ".dkim")
|
|
|
+ if keyfile then
|
|
|
+ rspamd_logger.infox(task, "DKIM signing mail for authorized user of domain %s", domain)
|
|
|
+ keyfile:close()
|
|
|
+ return {
|
|
|
+ key = "/data/dkim/keys/" .. domain .. ".dkim",
|
|
|
+ domain = domain,
|
|
|
+ selector = "dkim"
|
|
|
+ }
|
|
|
+ else
|
|
|
+ rspamd_logger.infox(task, "Authorized user, but no key file for domain %s - skipped DKIM signing", domain)
|
|
|
+ end
|
|
|
+ end
|
|
|
+ return false
|
|
|
end
|
|
|
EOD;
|