/usr/share/doc/opendkim/examples/final.lua.sample is in opendkim 2.11.0~alpha-11build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | --
-- Copyright (c) 2009, 2010, 2012, The Trusted Domain Project.
-- All rights reserved.
--
-- final.lua.sample -- sample version of the "final" script that demonstrates
-- all of the features of the configuration file
--
-- The final script is executed after the entire message body has been
-- received and processed but before the filter renders its final verdict.
-- The main use of this script is to determine whether or not the message
-- is acceptable to the verifier, and what final filtering action should be
-- taken. For exmaple, if the message failed Author Domain Signing
-- Practises tests, or had additional data appended to it beyond what the
-- signature covered, or even if the signature simply failed to verify,
-- this script can detect such things and take whatever action is desired.
-- Retrieve signature count
nsigs = odkim.get_sigcount(ctx)
if nsigs == nil then
return nil
end
-- Enact ADSP.
-- 1) If it reported NXDOMAIN, reject.
if odkim.get_presult(ctx) == DKIM_PRESULT_NXDOMAIN then
odkim.set_reply(ctx, "554", "5.7.1", "sender domain does not exist")
odkim.set_result(ctx, SMFIS_REJECT)
return nil
end
-- 2) Test for discardable. We'll handle "unknown" and "all" through RFC5451.
if odkim.get_presult(ctx) == DKIM_PRESULT_FOUND and
odkim.get_policy(ctx) == DKIM_POLICY_DISCARDABLE then
discard = true
for n = 1, nsigs
sig = odkim.get_sighandle(ctx, n)
sigres = odkim.sig_result(sig)
sdomain = odkim.sig_getdomain(sig)
if sigres == 0 and sdomain == fromdomain then
discard = false
end
end
if discard then
odkim.set_result(ctx, SMFIS_REJECT)
return nil
end
end
-- If the message had too much stuff added to it (more than 120 bytes)
-- then bounce it
for n = 1, nsigs do
sig = odkim.get_sighandle(ctx, n)
bodylen = odkim.sig_bodylength(sig)
canonlen = odkim.sig_canonlength(sig)
if bodylen > canonlen + 120 then
odkim.set_reply(ctx, "554", "",
"Too much data after DKIM-protected body")
odkim.set_result(ctx, SMFIS_REJECT)
end
end
-- That's it!
return nil
|