Browse Source

add tests for dkim signatures with milter

tags/1.9.0
John McKay 5 years ago
parent
commit
161184eb72

+ 32
- 0
test/functional/cases/131_dkim_signing/006_milter.robot View File

@@ -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

+ 76
- 0
test/functional/configs/dkim_signing/milter.conf View File

@@ -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"

+ 23
- 0
test/functional/lua/miltertest/data_dkim.lua View File

@@ -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'

+ 11
- 0
test/functional/lua/miltertest/dkim_many.lua View File

@@ -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()

+ 11
- 0
test/functional/lua/miltertest/dkim_one.lua View File

@@ -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()

+ 9
- 0
test/functional/lua/miltertest/lib.lua View File

@@ -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

Loading…
Cancel
Save