diff options
author | John McKay <adenosine3p@gmail.com> | 2019-02-02 11:26:14 +0000 |
---|---|---|
committer | John McKay <adenosine3p@gmail.com> | 2019-02-02 11:26:14 +0000 |
commit | 161184eb72bd570e7002d15a689f2dac56392d21 (patch) | |
tree | 1f2d02bb0d50fc77a1a94ec3b914bf0b46f50c65 /test | |
parent | 2349c384e084848de73949f0f8628014913275a0 (diff) | |
download | rspamd-161184eb72bd570e7002d15a689f2dac56392d21.tar.gz rspamd-161184eb72bd570e7002d15a689f2dac56392d21.zip |
add tests for dkim signatures with milter
Diffstat (limited to 'test')
-rw-r--r-- | test/functional/cases/131_dkim_signing/006_milter.robot | 32 | ||||
-rw-r--r-- | test/functional/configs/dkim_signing/milter.conf | 76 | ||||
-rw-r--r-- | test/functional/lua/miltertest/data_dkim.lua | 23 | ||||
-rw-r--r-- | test/functional/lua/miltertest/dkim_many.lua | 11 | ||||
-rw-r--r-- | test/functional/lua/miltertest/dkim_one.lua | 11 | ||||
-rw-r--r-- | test/functional/lua/miltertest/lib.lua | 9 |
6 files changed, 162 insertions, 0 deletions
diff --git a/test/functional/cases/131_dkim_signing/006_milter.robot b/test/functional/cases/131_dkim_signing/006_milter.robot new file mode 100644 index 000000000..fa6f532b4 --- /dev/null +++ b/test/functional/cases/131_dkim_signing/006_milter.robot @@ -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 diff --git a/test/functional/configs/dkim_signing/milter.conf b/test/functional/configs/dkim_signing/milter.conf new file mode 100644 index 000000000..263ed0b4e --- /dev/null +++ b/test/functional/configs/dkim_signing/milter.conf @@ -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" diff --git a/test/functional/lua/miltertest/data_dkim.lua b/test/functional/lua/miltertest/data_dkim.lua new file mode 100644 index 000000000..15adf15ec --- /dev/null +++ b/test/functional/lua/miltertest/data_dkim.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' diff --git a/test/functional/lua/miltertest/dkim_many.lua b/test/functional/lua/miltertest/dkim_many.lua new file mode 100644 index 000000000..70a3a1be6 --- /dev/null +++ b/test/functional/lua/miltertest/dkim_many.lua @@ -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() diff --git a/test/functional/lua/miltertest/dkim_one.lua b/test/functional/lua/miltertest/dkim_one.lua new file mode 100644 index 000000000..0c7def8b9 --- /dev/null +++ b/test/functional/lua/miltertest/dkim_one.lua @@ -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() diff --git a/test/functional/lua/miltertest/lib.lua b/test/functional/lua/miltertest/lib.lua index e94efd559..44dc76ea5 100644 --- a/test/functional/lua/miltertest/lib.lua +++ b/test/functional/lua/miltertest/lib.lua @@ -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 |