# dkim_verify ```lua message:dkim_verify(OPT_RESOLVER_NAME) ``` {{since('2023.11.28-b5252a41')}} This method will verify each DKIM signature that is present at the top level of the message, up to a limit of 10 signatures. The limit is in place to limit the scope of a DoS attack being carried out through maliciously constructed messages. For each signature, an [authenticationresult](../authenticationresult.md) object will be constructed and an array of those results will be returned to the caller. The `OPT_RESOLVER_NAME` parameter {{since('2025.12.02-67ee9e96', inline=True)}} is an optional string parameter that specifies the name of a alternate resolver defined via [kumo.dns.define_resolver](../kumo.dns/define_resolver.md). You can omit this parameter and the default resolver will be used. ## Example: obtaining DKIM authentication results ```lua kumo.on('smtp_server_message_received', function(msg) -- Verify the dkim signature and return the results. -- Note that this example isn't making any policy decisions; -- it is only annotating the message with the results and -- allowing it to be relayed local verify = msg:dkim_verify() print('dkim', kumo.json_encode_pretty(verify)) -- Add the results to the message msg:add_authentication_results(msg:get_meta 'hostname', verify) end) ``` might print something like this to the diagnostic log: ``` dkim [ { "props": { "header.d": "github.com", "header.i": "@github.com", "header.s": "pf2023", "header.a": "rsa-sha256", "header.b": "jo0EO4dX" }, "result": "pass", "method": "dkim", "reason": null, "method_version": null } ] ``` and produce an `Authentication-Results` header: ``` Authentication-Results: hostname.example.com; dkim=pass header.a=rsa-sha256 header.b=jo0EO4dX header.d=github.com header.i=@github.com header.s=pf2023 ``` ## See Also: * [msg:add_authentication_results()](add_authentication_results.md)