@@ -0,0 +1,32 @@ | |||
*** Settings *** | |||
Suite Setup DKIM Milter Setup | |||
Suite Teardown Generic Teardown | |||
Library Process | |||
Library ${TESTDIR}/lib/rspamd.py | |||
Resource ${TESTDIR}/lib/rspamd.robot | |||
Variables ${TESTDIR}/lib/vars.py | |||
*** Variables *** | |||
${RSPAMD_SCOPE} Suite | |||
${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat | |||
*** Test Cases *** | |||
SINGLE SIGNATURE | |||
Milter Test dkim_one.lua | |||
MULTIPLE SIGNATURES | |||
Milter Test dkim_many.lua | |||
*** Keywords *** | |||
DKIM Milter Setup | |||
Generic Setup CONFIG=${TESTDIR}/configs/dkim_signing/milter.conf | |||
Milter Test | |||
[Arguments] ${mtlua} | |||
${result} = Run Process miltertest -Dport\=${PORT_PROXY} -Dhost\=${LOCAL_ADDR} -s ${TESTDIR}/lua/miltertest/${mtlua} | |||
... cwd=${TESTDIR}/lua/miltertest | |||
Follow Rspamd Log | |||
Should Match Regexp ${result.stderr} ^$ | |||
Log ${result.rc} | |||
Log ${result.stdout} | |||
Should Be Equal As Integers ${result.rc} 0 msg=${result.stdout} values=false |
@@ -0,0 +1,76 @@ | |||
options = { | |||
filters = ["dkim"] | |||
url_tld = "${URL_TLD}" | |||
pidfile = "${TMPDIR}/rspamd.pid" | |||
lua_path = "${INSTALLROOT}/share/rspamd/lib/?.lua" | |||
dns { | |||
nameserver = ["8.8.8.8", "8.8.4.4"]; | |||
retransmits = 10; | |||
timeout = 2s; | |||
} | |||
} | |||
logging = { | |||
type = "file", | |||
level = "debug" | |||
filename = "${TMPDIR}/rspamd.log" | |||
} | |||
metric = { | |||
name = "default", | |||
actions = { | |||
reject = 100500, | |||
} | |||
unknown_weight = 1 | |||
} | |||
worker { | |||
type = normal | |||
bind_socket = ${LOCAL_ADDR}:${PORT_NORMAL} | |||
count = 1 | |||
task_timeout = 60s; | |||
} | |||
worker { | |||
type = controller | |||
bind_socket = ${LOCAL_ADDR}:${PORT_CONTROLLER} | |||
count = 1 | |||
secure_ip = ["127.0.0.1", "::1"]; | |||
stats_path = "${TMPDIR}/stats.ucl" | |||
} | |||
worker { | |||
type = "rspamd_proxy"; | |||
count = 1; | |||
timeout = 120; | |||
upstream { | |||
local { | |||
hosts = "${LOCAL_ADDR}:${PORT_NORMAL}"; | |||
default = true; | |||
} | |||
} | |||
bind_socket = "${LOCAL_ADDR}:${PORT_PROXY}"; | |||
milter = true; | |||
} | |||
dkim_signing { | |||
domain { | |||
cacophony.za.org { | |||
selectors = { | |||
path: "${TESTDIR}/configs/dkim.key"; | |||
selector: "dkim"; | |||
} | |||
selectors = { | |||
path: "${TESTDIR}/configs/dkim-eddsa.key"; | |||
selector: "eddsa"; | |||
} | |||
} | |||
invalid.za.org { | |||
selectors = [ | |||
{ path: "${TESTDIR}/configs/dkim-eddsa.key"; | |||
selector: "eddsa"; } | |||
] | |||
} | |||
} | |||
allow_pubkey_mismatch: true; | |||
} | |||
modules { | |||
path = "${TESTDIR}/../../src/plugins/lua/dkim_signing.lua" | |||
} | |||
lua = "${TESTDIR}/lua/test_coverage.lua"; | |||
lua = "${INSTALLROOT}/share/rspamd/rules/rspamd.lua" | |||
lua = "${TESTDIR}/lua/params.lua" |
@@ -0,0 +1,23 @@ | |||
multi_hdrs = { | |||
['Message-ID'] = '<a44q4StVFY04V4_4gOMYXjTgMDvmlSFzZxnoyJPHFwM@cacophony.za.org>', | |||
['From'] = 'Rspamd <foo@cacophony.za.org>', | |||
['To'] = 'nerf@example.org', | |||
['Subject'] = 'dkim test message', | |||
['User-Agent'] = 'Vi IMproved 8.1', | |||
['Content-Type'] = 'text/plain; charset=utf-8;', | |||
['MIME-Version'] = '1.0', | |||
['Date'] = 'Sat, 02 Feb 2019 10:34:54 +0000', | |||
} | |||
single_hdr = { | |||
['Message-ID'] = '<a44q4StVFY04V4_4gOMYXjTgMDvmlSFzZxnoyJPHFwM@cacophony.za.org>', | |||
['From'] = 'Rspamd <foo@invalid.za.org>', | |||
['To'] = 'nerf@example.org', | |||
['Subject'] = 'dkim test message', | |||
['User-Agent'] = 'Vi IMproved 8.1', | |||
['Content-Type'] = 'text/plain; charset=utf-8;', | |||
['MIME-Version'] = '1.0', | |||
['Date'] = 'Sat, 02 Feb 2019 10:34:54 +0000', | |||
} | |||
innocuous_msg = 'hello' |
@@ -0,0 +1,11 @@ | |||
print('Check we get multiple dkim signatures') | |||
dofile './lib.lua' | |||
dofile './data_dkim.lua' | |||
setup() | |||
send_message(innocuous_msg, multi_hdrs, 'test-id', 'foo@cacophony.za.org', {'nerf@example.org'}) | |||
check_headers(2) | |||
teardown() |
@@ -0,0 +1,11 @@ | |||
print('Check we get single dkim signature') | |||
dofile './lib.lua' | |||
dofile './data_dkim.lua' | |||
setup() | |||
send_message(innocuous_msg, single_hdr, 'test-id', 'foo@invalid.za.org', {'nerf@example.org'}) | |||
check_headers(1) | |||
teardown() |
@@ -108,3 +108,12 @@ function check_subject_rw(subj, tmpl) | |||
error "subject not rewritten" | |||
end | |||
end | |||
function check_headers(count) | |||
for i=0, count-1 do | |||
local hdr = mt.getheader(conn, "DKIM-Signature", i) | |||
if not hdr then | |||
error (string.format("Signature %s not added", i)) | |||
end | |||
end | |||
end |