summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorJohn McKay <adenosine3p@gmail.com>2019-02-02 11:26:14 +0000
committerJohn McKay <adenosine3p@gmail.com>2019-02-02 11:26:14 +0000
commit161184eb72bd570e7002d15a689f2dac56392d21 (patch)
tree1f2d02bb0d50fc77a1a94ec3b914bf0b46f50c65 /test
parent2349c384e084848de73949f0f8628014913275a0 (diff)
downloadrspamd-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.robot32
-rw-r--r--test/functional/configs/dkim_signing/milter.conf76
-rw-r--r--test/functional/lua/miltertest/data_dkim.lua23
-rw-r--r--test/functional/lua/miltertest/dkim_many.lua11
-rw-r--r--test/functional/lua/miltertest/dkim_one.lua11
-rw-r--r--test/functional/lua/miltertest/lib.lua9
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