From c31b7e8191f9bb554c0feff4ddba09d13b904b6e Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Mon, 12 Jun 2023 14:56:02 -0700 Subject: [PATCH] dkim_sign: wrap an around the additional_signatures bit over here too --- assets/policy-extras/dkim_sign.lua | 74 ++++++++++++++++-------------- 1 file changed, 39 insertions(+), 35 deletions(-) diff --git a/assets/policy-extras/dkim_sign.lua b/assets/policy-extras/dkim_sign.lua index dbb8fd1c..b2373039 100644 --- a/assets/policy-extras/dkim_sign.lua +++ b/assets/policy-extras/dkim_sign.lua @@ -195,44 +195,48 @@ local function do_dkim_sign(msg, data) signed_domain = true end - for _, signame in ipairs(base.additional_signatures) do - local sig_config = data.signature[signame] + if base.additional_signatures then + for _, signame in ipairs(base.additional_signatures) do + local sig_config = data.signature[signame] - local need_sign = true - if sig_config.policy == 'OnlyIfMissingDomainBlock' and signed_domain then - -- Ideally we'd simply "continue" here, but lua doesn't have continue! - need_sign = false - end - - if need_sign then - local params = { - domain = sig_config.domain, - selector = sig_config.selector or data.base.selector, - headers = sig_config.headers or base.headers, - } - - if base.vault_mount then - params.key = { - vault_mount = base.vault_mount, - vault_path = sig_config.filename or string.format( - '%s/%s/%s.key', - base.vault_path_prefix or 'dkim', - params.domain, - params.selector - ), - } - else - params.key = sig_config.filename - or string.format( - '%s/%s/%s.key', - DKIM_PATH, - params.domain, - params.selector - ) + local need_sign = true + if + sig_config.policy == 'OnlyIfMissingDomainBlock' and signed_domain + then + -- Ideally we'd simply "continue" here, but lua doesn't have continue! + need_sign = false end - local signer = make_signer(params, sig_config.algo) - msg:dkim_sign(signer) + if need_sign then + local params = { + domain = sig_config.domain, + selector = sig_config.selector or data.base.selector, + headers = sig_config.headers or base.headers, + } + + if base.vault_mount then + params.key = { + vault_mount = base.vault_mount, + vault_path = sig_config.filename or string.format( + '%s/%s/%s.key', + base.vault_path_prefix or 'dkim', + params.domain, + params.selector + ), + } + else + params.key = sig_config.filename + or string.format( + '%s/%s/%s.key', + DKIM_PATH, + params.domain, + params.selector + ) + end + + local signer = make_signer(params, sig_config.algo) + msg:dkim_sign(signer) + end end end end