5c1d5d6e52
Having a verifying milter will come in handy when we want to test both sides of the DKIM process.
65 lines
1.5 KiB
Bash
Executable File
65 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
WORKDIR=$(mktemp -d)
|
|
TESTDIR=$(realpath "$(dirname "$0")")
|
|
|
|
cd "$WORKDIR"
|
|
|
|
dknewkey --ktype ed25519 testkey
|
|
cat > signing.conf <<EOF
|
|
Domain example.net
|
|
KeyFileEd25519 testkey.key
|
|
SelectorEd25519 testkey
|
|
Socket unix:signing.sock
|
|
PidFile signing.pid
|
|
Mode s
|
|
UserID $(id --name --user):$(id --name --group)
|
|
EOF
|
|
|
|
cat > verify.conf <<EOF
|
|
Socket unix:verify.sock
|
|
PidFile verify.pid
|
|
Mode v
|
|
DNSOverride $(cat testkey.dns)
|
|
UserID $(id --name --user):$(id --name --group)
|
|
EOF
|
|
|
|
cleanup() {
|
|
echo cleaning up jobs:
|
|
jobs
|
|
if [ -s signing.pid ] && kill -0 "$(cat signing.pid)"; then
|
|
kill "$(cat signing.pid)"
|
|
fi
|
|
if [ -s verify.pid ] && kill -0 "$(cat verify.pid)"; then
|
|
kill "$(cat verify.pid)"
|
|
fi
|
|
wait
|
|
for errdata in signing.stderr verify.stderr; do
|
|
if [ -s "$errdata" ]; then
|
|
printf -- "-> %s:\n" "$errdata"
|
|
cat "$errdata"
|
|
printf -- "-> end %s\n" "$errdata"
|
|
fi
|
|
done
|
|
rm -rf "$WORKDIR"
|
|
}
|
|
|
|
PYTHONPATH="$(dirname "$TESTDIR")" dkimpy-milter signing.conf 2>signing.stderr &
|
|
PYTHONPATH="$(dirname "$TESTDIR")" dkimpy-milter verify.conf 2>verify.stderr &
|
|
trap cleanup EXIT
|
|
|
|
# ugly ugly (how are we supposed to know that the filter is ready?):
|
|
sleep 2
|
|
|
|
# uses miltertest from opendkim:
|
|
for x in ${TESTS:-"$TESTDIR"/*.miltertest}; do
|
|
if ! [ -e "$x" ]; then
|
|
if [ -e "$TESTDIR/$x" ]; then
|
|
x="$TESTDIR/$x"
|
|
fi
|
|
fi
|
|
printf -- "-> running %s...\n" "$x"
|
|
miltertest -s "$x"
|
|
done
|