GhostManSec
Server: Apache
System: Linux s323.xrea.com 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64
User: moonarc (17751)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //var/qmail/bin/testqmail-dks
#!/bin/sh
verbose=0
domainkey_dir=/tmp/domainkeys

# The domain under your control and for which you
# have the public key in dns. Have the following
# keys in dns or modify the RSA 2048, RSA 4096,
# ed25519 keys appropriately
#
if [ $# -eq 0 ] ; then
	real_domain=$(cat /var/qmail/control/me)
else
	real_domain=$1
fi
# rsa key 2048
real_domain_rsa2048=/var/qmail/control/domainkeys/$real_domain/b2048

# rsa key 4096
real_domain_rsa4096=/var/qmail/control/domainkeys/$real_domain/default

# ed25519 key
real_domain_ed25519=/var/qmail/control/domainkeys/$real_domain/ed25519

#
# set bindir and sbindir to locate your binaries. use $PWD
# to test your binaries at current localtion or use /var/qmail/bin,
# bin/sbin whatever
#
bindir=$PWD
sbindir=$PWD

dkim=$bindir/dkim
qmail_dkim=$sbindir"/qmail-dkim"
dk_filter=$bindir/dk-filter
dknewkey=$bindir/dknewkey

# for qmail this is 32, for indimail this is 35
nokeyerror=32

# This is where lot of the output goes
out=/dev/null

## For testing on indimail. Comment out next 5 lines if not commented
#real_domain=indimail.org
#real_domain_rsa2048=/etc/indimail/control/domainkeys/argos.indimail.org/argos
#real_domain_rsa4096=/etc/indimail/control/domainkeys/argos.indimail.org/b4096
#real_domain_ed25519=/etc/indimail/control/domainkeys/argos.indimail.org/ed25519
#nokeyerror=35

if [ ! -d $domainkey_dir ] ; then
	sudo mkdir -p $domainkey_dir
	#sudo chown root:qmail $domainkey_dir
fi
/bin/rm -f /tmp/control/dkimkeys
for i in example.com example.org
do
	if [ ! -d $domainkey_dir/$i ] ; then
		sudo mkdir -p $domainkey_dir/$i
		#sudo chown root:qmail $domainkey_dir/$i
	fi
	if [ ! -f $domainkey_dir/$i/default ] ; then
		echo "Creating private key bits 4096 $domainkey_dir/$i/default"
		sudo $dknewkey -e -b 4096 $domainkey_dir/$i/default >$out
		sudo chmod 644 $domainkey_dir/$i/default
	fi
	if [ ! -f $domainkey_dir/$i/dkimkeys1 ] ; then
		echo "Creating private key bits 2048 $domainkey_dir/$i/dkimkeys1"
		sudo $dknewkey -e -b 2048 $domainkey_dir/$i/dkimkeys1 >$out
		sudo chmod 644 $domainkey_dir/$i/dkimkeys1
	fi
	if [ ! -f $domainkey_dir/$i/dkimkeys2 ] ; then
		echo "Creating private key $domainkey_dir/$i/dkimkeys2"
		sudo $dknewkey -e -t ed25519 $domainkey_dir/$i/dkimkeys2 >$out
		sudo chmod 644 $domainkey_dir/$i/dkimkeys2
	fi
done

for i in test default
do
	if [ ! -f $domainkey_dir/$i ] ; then
		echo "Creating private key bits 4096 $domainkey_dir/$i"
		sudo $dknewkey -e -b 4096 $domainkey_dir/$i >$out
		sudo chmod 644 $domainkey_dir/$i
	fi
done

for i in example.com example.org
do
	if [ ! -d $domainkey_dir/$i ] ; then
		sudo mkdir -p $domainkey_dir/$i
		#sudo chown root:qmail $domainkey_dir/$i
	fi
	if [ ! -f $domainkey_dir/$i/ed25519 ] ; then
		echo "Creating private key $domainkey_dir/$i/ed25519"
		sudo $dknewkey -e -t ed25519 $domainkey_dir/$i/ed25519 >$out
		sudo chmod 644 $domainkey_dir/$i/ed25519
	fi
done
mkdir -p /tmp/control

# Test No 1
failed=0
echo "testing real domain $real_domain (rsa2048,rsa4096,ed25519) using dkim with selector from dns"
for k in $real_domain_rsa2048 $real_domain_rsa4096 $real_domain_ed25519
do
	case $k in
		$real_domain_rsa2048)
		echo "    testing rsa2048"
		;;
		$real_domain_rsa4096)
		echo "    testing rsa4096"
		;;
		$real_domain_ed25519)
		echo "    testing ed25519"
		;;
	esac
	if [ $verbose -gt 0 ] ; then
		echo "testing real domain $real_domain $ktype DKIM record"
	fi
	ktype=$(cat $k.pub| grep "k="|sed 's{v=DKIM1;{{'|cut -d= -f2|cut -d';' -f1)
	case $ktype in
		"rsa")
		enc="2"
		;;
		"ed25519")
		enc="4"
		;;
	esac
	(
	echo "From: postmaster@$real_domain"
	echo "To: postmaster@$real_domain"
	echo "Subject: Test"
	echo "Date: $(date -R)"
	echo
	echo "Test message"
	) > /tmp/mail.txt 
	(cat /tmp/mail.txt | $bindir/dkim -z $enc -s "$k"; cat /tmp/mail.txt) | $bindir/dkim -v > $out
	ret=$?
	/bin/rm -f /tmp/mail.txt
	if [ $ret -eq 0 ] ; then
		if [ $verbose -gt 0 ] ; then
			echo "SUCCESS: [ret=$ret] domain=$real_domain key=$k"
			echo
		fi
		echo SUCCESS ======================== >$out
	else
		echo "FAILED : [ret=$ret] domain=$real_domain key=$k"
		echo
		echo FAILURE [$ret] ======================== >$out
		echo >$out
		failed=1
	fi
done

if [ $verbose -eq 0 -a $failed -eq 0 ] ; then
	echo "  Success"
	echo
fi
if [ $failed -eq 1 ] ; then
	echo "Test Failed for real domain $real_domain (rsa2048,rsa4096,ed25519) using $dkim with selector from dns"
	exit 1
elif [ $verbose -ne 0 ] ; then
	echo "All Tests succeeded for real domain $real_domain (rsa2048,rsa4096,ed25519) using $dkim with selector from dns"
fi

# Test No 2
failed=0
echo "testing multi-signature real domain $real_domain (rsa4096+ed25519) signing+verification by dkim with selector from dns"
if [ $verbose -gt 0 ] ; then
	echo "testing real domain $real_domain multi DKIM record"
fi
(
echo "From: postmaster@$real_domain"
echo "To: postmaster@$real_domain"
echo "Subject: Test"
echo "Date: $(date -R)"
echo
echo "Test message"
) > /tmp/mail.txt 
(cat /tmp/mail.txt | $bindir/dkim -z 2 -s $real_domain_rsa4096 -z 4 -s $real_domain_ed25519; cat /tmp/mail.txt) | $bindir/dkim -vV >$out 2>/tmp/err.out
ret=$?
/bin/rm -f /tmp/mail.txt
grep Signature /tmp/err.out | sed -e 's{Signature #{    Signature{g' \
	-e 's{01{rsa-256{' -e 's{02{ed25519{' -e 's{Failure.*{Failure - Correct{'
if [ $ret -eq 0 ] ; then
	if [ $verbose -gt 0 ] ; then
		echo "SUCCESS: [ret=$ret] domain=$real_domain key=$real_domain_rsa4096+$real_domain_ed25519"
		echo
	fi
	echo SUCCESS ======================== >$out
else
	echo "FAILED : [ret=$ret] domain=$real_domain key=$real_domain_rsa4096+$real_domain_ed25519"
	echo
	echo FAILURE [$ret] ======================== >$out
	echo >$out
	failed=1
fi

if [ $verbose -eq 0 -a $failed -eq 0 ] ; then
	echo "  Success"
	echo
fi
if [ $failed -eq 1 ] ; then
	echo "Test Failed for multi-signature real domain $real_domain (rsa2048+rsa4096+ed25519) using $dkim with selector from dns"
	exit 1
elif [ $verbose -ne 0 ] ; then
	echo "All Tests succeeded for multi-signature real domain $real_domain (rsa2048+rsa4096+ed25519) using $dkim with selector from dns"
fi

# Test No 3
failed=0
echo "testing multi-signature real domain $real_domain (rsa4096+ed25519) signing by qmail-dkim, verification by dkim with selector from dns"
if [ $verbose -gt 0 ] ; then
	echo "testing real domain $real_domain multi DKIM record"
fi
(
echo "From: postmaster@$real_domain"
echo "To: postmaster@$real_domain"
echo "Subject: Test"
echo "Date: $(date -R)"
echo
echo "Test message"
) | env - \
		CONTROLDIR=/tmp/control \
		DKIMSIGN="$real_domain_rsa4096" \
		DKIMSIGNOPTIONS="-z 2" \
		DKIMSIGNEXTRA="$real_domain_ed25519" \
		DKIMSIGNOPTIONSEXTRA="-z 4" \
		DKIMQUEUE=/bin/cat \
		$qmail_dkim | $bindir/dkim -vV >$out 2>/tmp/err.out
ret=$?
grep Signature /tmp/err.out | sed -e 's{Signature #{    Signature{g' \
	-e 's{01{ed25519{' -e 's{02{rsa-256{' -e 's{Failure.*{Failure - Correct{'
if [ $ret -eq 0 ] ; then
	if [ $verbose -gt 0 ] ; then
		echo "SUCCESS: [ret=$ret] domain=$real_domain key=$real_domain_rsa4096+$real_domain_ed25519"
		echo
	fi
	echo SUCCESS ======================== >$out
else
	echo "FAILED : [ret=$ret] domain=$real_domain key=$real_domain_rsa4096+$real_domain_ed25519"
	echo
	echo FAILURE [$ret] ======================== >$out
	echo >$out
	failed=1
fi

if [ $verbose -eq 0 -a $failed -eq 0 ] ; then
	echo "  Success"
	echo
fi
if [ $failed -eq 1 ] ; then
	echo "Test Failed for multi-signature real domain $real_domain (rsa2048+rsa4096+ed25519) using $dkim with selector from dns"
	exit 1
elif [ $verbose -ne 0 ] ; then
	echo "All Tests succeeded multi-signature for real domain $real_domain (rsa2048+rsa4096+ed25519) using $dkim with selector from dns"
fi

# Test No 4
failed=0
echo "testing real domain $real_domain (rsa2048+rsa4096+ed25519) using qmail-dkim with selector from dns"
for k in $real_domain_rsa2048 $real_domain_rsa4096 $real_domain_ed25519
do
	if [ $verbose -gt 0 ] ; then
		echo "testing real domain $real_domain"
	fi
	case $k in
		$real_domain_rsa2048)
		echo "    testing rsa2048"
		;;
		$real_domain_rsa4096)
		echo "    testing rsa4096"
		;;
		$real_domain_ed25519)
		echo "    testing ed25519"
		;;
	esac
	ktype=$(cat $k.pub| grep "k="|sed 's{v=DKIM1;{{'|cut -d= -f2|cut -d';' -f1)
	case $ktype in
		"rsa")
		enc="2"
		;;
		"ed25519")
		enc="4"
		;;
	esac
	(
	echo "From: postmaster@$real_domain"
	echo "To: postmaster@$real_domain"
	echo "Subject: Test"
	echo "Date: $(date -R)"
	echo
	echo "Test message"
	) | env - \
		DKIMSIGN="$k" \
		DKIMSIGNOPTIONS="-z $enc" \
		DKIMQUEUE=/bin/cat \
		$qmail_dkim | env - \
			DKIMVERIFY="" \
			DKIMQUEUE=/bin/cat \
			$qmail_dkim > $out
	ret=$?
	if [ $ret -eq 0 ] ; then
		if [ $verbose -gt 0 ] ; then
			echo "SUCCESS: [ret=$ret] domain=$real_domain key=$real_domain_key"
			echo
		fi
		echo SUCCESS ======================== >$out
	else
		echo "FAILED : [ret=$ret] domain=$real_domain key=$real_domain_key"
		echo
		echo FAILURE [$ret] ======================== >$out
		echo >$out
		failed=1
	fi
done

if [ $verbose -eq 0 -a $failed -eq 0 ] ; then
	echo "  Success"
	echo
fi
if [ $failed -eq 1 ] ; then
	echo "Test Failed for real domain $real_domain (rsa2048+rsa4096+ed25519) using $qmail_dkim with selector from dns"
	exit 1
elif [ $verbose -ne 0 ] ; then
	echo "All Tests succeeded for real domain $real_domain (rsa2048+rsa4096+ed25519) using $qmail_dkim with selector from dns"
fi

# Test No 5
echo "testing dkim with different key types (rsa2048+rsa4096+ed25519) signing+verification by dkim"
failed=0
for i in dkimkeys1 default ed25519
do
	if [ $verbose -gt 0 ] ; then
		echo testing key type $i
	fi
	if [ "$i" = "ed25519" ] ; then
		enc=4
	else
		enc=2
	fi
	case $i in
		dkimkeys1)
		echo "    testing rsa2048"
		;;
		default)
		echo "    testing rsa4096"
		;;
		ed25519)
		echo "    testing ed25519"
		;;
	esac
	for j in example.com example.org
	do
		selector=$(cat $domainkey_dir/$j/$i.pub |sed -e 's{.*({{' -e 's{).*{{' -e '/^$/d' -e 's{"{{g' -e 's{\t{{g' | tr -d '\n')
		if [ $verbose -gt 0 ] ; then
			echo "($dkim -z $enc -s $domainkey_dir/$j/$i </tmp/mail.txt;cat /tmp/mail.txt) | $dkim -v -T $selector"
		fi
		(
		echo "From: postmaster@$j"
		echo "To: postmaster@$j"
		echo "Subject: Test"
		echo "Date: $(date -R)"
		echo
		echo "Test message"
		) > /tmp/mail.txt
		(cat /tmp/mail.txt | $dkim -z $enc -s $domainkey_dir/$j/$i; cat /tmp/mail.txt) | $dkim -v -T "$selector" > $out
		ret=$?
		/bin/rm /tmp/mail.txt
		if [ $ret -eq 0 ] ; then
			if [ $verbose -gt 0 ] ; then
				echo "SUCCESS: [ret=$ret]  $selector"
				echo
			fi
			echo SUCCESS ======================== >$out
		else
			echo "FAILED : [ret=$ret] domain=$j key=$domainkey_dir/$j/$i $selector"
			echo
			echo FAILURE [$ret] ======================== >$out
			echo >$out
			failed=1
		fi
	done
done

if [ $verbose -eq 0 -a $failed -eq 0 ] ; then
	echo "  Success"
	echo
fi
if [ $failed -eq 1 ] ; then
	echo "Test Failed for $dkim with different key types (rsa+ed25519)"
	exit 1
elif [ $verbose -ne 0 ] ; then
	echo "All Tests succeeded for $dkim with different key types (rsa+ed25519)"
fi

# Test No 6
echo "testing multi-signature signing+verification by dkim"
failed=0
for i in example.com example.org
do
	key1=$domainkey_dir/$i/default
	key2=$domainkey_dir/$i/ed25519
	(
	echo "From: postmaster@$i"
	echo "To: postmaster@$i"
	echo "Subject: Test"
	echo "Date: $(date -R)"
	echo
	echo "Test message"
	) > /tmp/mail.txt
	(cat /tmp/mail.txt | $dkim -z 2 -s $key1 -z 4 -s $key2; cat /tmp/mail.txt) > /tmp/result.out
	/bin/rm -f /tmp/mail.txt
	for j in default ed25519
	do
		if [ $verbose -gt 0 ] ; then
			echo key $j domain $i
		fi
		selector=$(cat $domainkey_dir/$i/$j.pub |sed -e 's{.*({{' -e 's{).*{{' -e '/^$/d' -e 's{"{{g' -e 's{\t{{g' | tr -d '\n')
		case $j in
			default)
			echo "  rsa+ed25519 with rsa-256 selector"
			;;
			ed25519)
			echo "  rsa+ed25519 with ed25519 selector"
			;;
		esac
		sig_count=$(grep DKIM-Signature /tmp/result.out|wc -l)
		$dkim -vV -T "$selector" > $out 2>/tmp/err.out < /tmp/result.out
		ret=$?
		grep Signature /tmp/err.out | sed -e 's{Signature #{    Signature{g' \
			-e 's{01{rsa-256{' -e 's{02{ed25519{' -e 's{Failure.*{Failure - Correct{'
		if [ $ret -eq 0 -a $sig_count -eq 2 ] ; then
			if [ $verbose -gt 0 ] ; then
				echo "SUCCESS: [ret=$ret]  dkim -s $key1 -s $key2..."
				echo
			fi
			echo SUCCESS ======================== >$out
		else
			echo "FAILED : [ret=$ret] domain=$i sig_count=$sig_count dkim -s $key1 -s $key2..."
			echo
			echo FAILURE [$ret] ======================== >$out
			echo >$out
			failed=1
		fi
	done
	/bin/rm -f /tmp/result.out /tmp/err.out
done

if [ $verbose -eq 0 -a $failed -eq 0 ] ; then
	echo "  Success"
	echo
fi
if [ $failed -eq 1 ] ; then
	echo "Test Failed for  multi-signature signing+verification by $dkim"
	exit 1
elif [ $verbose -ne 0 ] ; then
	echo "All Tests succeeded for  multi-signature signing+verification by $dkim"
fi

# Test No 7
echo "testing multi-signature signing by qmail-dkim + verification by dkim DKIMSIGNEXTRA in env"
failed=0
key1=$domainkey_dir/%/default
key2=$domainkey_dir/%/ed25519
for i in example.com example.org
do
	(
	echo "From: postmaster@$i"
	echo "To: postmaster@$i"
	echo "Subject: Test"
	echo "Date: $(date -R)"
	echo
	echo "Test message"
	) | env \
		CONTROLDIR=/tmp/control \
		DKIMSIGN="$key1" \
		DKIMSIGNOPTIONS="-z 2" \
		DKIMQUEUE=/bin/cat \
		DKIMSIGNEXTRA="$key2" \
		DKIMSIGNOPTIONSEXTRA="-z 4" \
		ERR_FD=2 \
	$qmail_dkim > /tmp/result.out
	sig_count=$(grep DKIM-Signature /tmp/result.out|wc -l)
	for j in default ed25519
	do
		if [ $verbose -gt 0 ] ; then
			echo key $j domain $i
		fi
		selector=$(cat $domainkey_dir/$i/$j.pub |sed -e 's{.*({{' -e 's{).*{{' -e '/^$/d' -e 's{"{{g' -e 's{\t{{g' | tr -d '\n')
		case $j in
			default)
			echo "  rsa+ed25519 with rsa-256 selector"
			;;
			ed25519)
			echo "  rsa+ed25519 with ed25519 selector"
			;;
		esac
		$dkim -vV -T "$selector" >$out 2>/tmp/err.out < /tmp/result.out
		ret=$?
		grep Signature /tmp/err.out | sed -e 's{Signature #{    Signature{g' \
			-e 's{01{ed25519{' -e 's{02{rsa-256{' -e 's{Failure.*{Failure - Correct{'
		if [ $ret -eq 0 -a $sig_count -eq 2 ] ; then
			if [ $verbose -gt 0 ] ; then
				echo "SUCCESS: [ret=$ret] domain=$i sig_count=$sig_count $qmail_dkim"
				echo
			fi
			echo SUCCESS ======================== >$out
		else
			echo "FAILED : [ret=$ret] domain=$i sig_count=$sig_count $qmail_dkim"
			echo
			echo FAILURE [$ret] ======================== >$out
			echo >$out
			failed=1
		fi
	done
	/bin/rm -f /tmp/result.out /tmp/err.out
done

if [ $verbose -eq 0 -a $failed -eq 0 ] ; then
	echo "  Success"
	echo
fi
if [ $failed -eq 1 ] ; then
	echo "Test Failed for  multi-signature signing by $qmail_dkim + verification by $dkim DKIMSIGNEXTRA in env"
	exit 1
elif [ $verbose -ne 0 ] ; then
	echo "All Tests succeeded for  multi-signature signing by $qmail_dkim + verification by $dkim DKIMSIGNEXTRA in env"
fi

# Test No 8
echo "testing multi-signature signing by qmail-dkim + verification by dkim DKIMSIGNEXTRA in dkimkeys"
(
echo "ex*.com:/tmp/domainkeys/%/dkimkeys1:DKIMSIGNEXTRA=/tmp/domainkeys/%/dkimkeys2,DKIMSIGNOPTIONS=-z 4"
echo "ex.*.org:/tmp/domainkeys/%/dkimkeys1:QREGEX=1,DKIMSIGNEXTRA=/tmp/domainkeys/%/dkimkeys2,DKIMSIGNOPTIONS=-z 4"
) >/tmp/control/dkimkeys
failed=0
for i in example.com example.org
do
	(
	echo "From: postmaster@$i"
	echo "To: postmaster@$i"
	echo "Subject: Test"
	echo "Date: $(date -R)"
	echo
	echo "Test message"
	) | env \
	CONTROLDIR=/tmp/control \
	DKIMSIGN="" \
	DKIMSIGNOPTIONS="-z 2" \
	DKIMQUEUE=/bin/cat \
	ERR_FD=2 \
	$qmail_dkim > /tmp/result.out
	sig_count=$(grep DKIM-Signature /tmp/result.out|wc -l)
	for j in dkimkeys1 dkimkeys2
	do
		if [ $verbose -gt 0 ] ; then
			echo key $j domain $i
		fi
		selector=$(cat $domainkey_dir/$i/$j.pub |sed -e 's{.*({{' -e 's{).*{{' -e '/^$/d' -e 's{"{{g' -e 's{\t{{g' | tr -d '\n')
		case $j in
			dkimkeys1)
			echo "  rsa+ed25519 with rsa-256 selector"
			;;
			dkimkeys2)
			echo "  rsa+ed25519 with ed25519 selector"
			;;
		esac
		$dkim -vV -T "$selector" >$out 2>/tmp/err.out < /tmp/result.out
		ret=$?
		grep Signature /tmp/err.out | sed -e 's{Signature #{    Signature{g' \
			-e 's{01{ed25519{' -e 's{02{rsa-256{' -e 's{Failure.*{Failure - Correct{'
		if [ $ret -eq 0 -a $sig_count -eq 2 ] ; then
			if [ $verbose -gt 0 ] ; then
				echo "SUCCESS: [ret=$ret] domain=$i sig_count=$sig_count dkimkeys $qmail_dkim" 
				echo
			fi
			echo SUCCESS ======================== >$out
		else
			echo "FAILED : [ret=$ret] domain=$i sig_count=$sig_count dkimkeys $qmail_dkim"
			echo
			echo FAILURE [$ret] ======================== >$out
			echo >$out
			failed=1
		fi
	done
	/bin/rm -f /tmp/result.out /tmp/err.out
done
/bin/rm -f /tmp/control/dkimkeys

if [ $verbose -eq 0 -a $failed -eq 0 ] ; then
	echo "  Success"
	echo
fi
if [ $failed -eq 1 ] ; then
	echo "Test Failed for  multi-signature signing by $qmail_dkim + verification by $dkim DKIMSIGNEXTRA in dkimkeys"
	exit 1
elif [ $verbose -ne 0 ] ; then
	echo "All Tests succeeded for  multi-signature signing by $qmail_dkim + verification by $dkim DKIMSIGNEXTRA in dkimkeys"
fi

# Test No 9
echo "testing multi-signature signing+verification by qmail-dkim"
failed=0
key1=$domainkey_dir/%/default
key2=$domainkey_dir/%/ed25519
for i in example.com example.org
do
	(
	echo "From: postmaster@$i"
	echo "To: postmaster@$i"
	echo "Subject: Test"
	echo "Date: $(date -R)"
	echo
	echo "Test message"
	) | env \
		CONTROLDIR=/tmp/control \
		DKIMSIGN="$key1" \
		DKIMSIGNOPTIONS="-z 2" \
		DKIMQUEUE=/bin/cat \
		DKIMSIGNEXTRA="$key2" \
		DKIMSIGNOPTIONSEXTRA="-z 4" \
		ERR_FD=2 \
		$qmail_dkim > /tmp/result.out
	sig_count=$(grep DKIM-Signature /tmp/result.out|wc -l)
	for j in default ed25519
	do
		if [ $verbose -gt 0 ] ; then
			echo key $j domain $i
		fi
		selector=$(cat $domainkey_dir/$i/$j.pub |sed -e 's{.*({{' -e 's{).*{{' -e '/^$/d' -e 's{"{{g' -e 's{\t{{g' | tr -d '\n')
		case $j in
			default)
			echo "  rsa+ed25519 with rsa-256 selector"
			;;
			ed25519)
			echo "  rsa+ed25519 with ed25519 selector"
			;;
		esac
		cat /tmp/result.out | env - \
				DKIMVERIFY="" \
				SELECTOR_DATA="$selector" \
				DKIMQUEUE=/bin/cat \
				VERBOSE=1 \
				$qmail_dkim >$out 2>/tmp/err.out
		ret=$?
		grep Signature /tmp/err.out | sed -e 's{Signature #{    Signature{g' \
			-e 's{01{ed25519{' -e 's{02{rsa-256{' -e 's{Failure.*{Failure - Correct{'
		if [ $ret -eq 0 -a $sig_count -eq 2 ] ; then
			if [ $verbose -gt 0 ] ; then
				echo "SUCCESS: [ret=$ret] domain=$i sig_count=$sig_count env - DKIMSIGN=$key1 DKIMSIGNEXTRA=$key2... $qmail_dkim"
				echo
			fi
			echo SUCCESS ======================== >$out
		else
			echo "FAILED : [ret=$ret] domain=$i sig_count=$sig_count env - DKIMSIGN=$key1 DKIMSIGNEXTRA=$key2... $qmail_dkim"
			echo
			echo FAILURE [$ret] ======================== >$out
			echo >$out
			failed=1
		fi
	done
done

if [ $verbose -eq 0 -a $failed -eq 0 ] ; then
	echo "  Success"
	echo
fi
if [ $failed -eq 1 ] ; then
	echo "Test Failed for  multi-signature signing+verification by $qmail_dkim"
	exit 1
elif [ $verbose -ne 0 ] ; then
	echo "All Tests succeeded for  multi-signature signing+verification by $qmail_dkim"
fi

# Test No 10
echo "testing multi-signature signing+verification by dk-filter"
failed=0
key1=$domainkey_dir/%/default
key2=$domainkey_dir/%/ed25519
for i in example.com example.org
do
	(
	echo "From: postmaster@$i"
	echo "To: postmaster@$i"
	echo "Subject: Test"
	echo "Date: $(date -R)"
	echo
	echo "Test message"
	) | env \
		NODK="1" \
		QMAILREMOTE="1" \
  		_SENDER=postmaster@$i \
		CONTROLDIR=/tmp \
		DKIMSIGN="$key1" \
		DKIMSIGNOPTIONS="-z 2" \
		DKIMSIGNEXTRA="$key2" \
		DKIMSIGNOPTIONSEXTRA="-z 4" $dk_filter > /tmp/result.out
	sig_count=$(grep DKIM-Signature /tmp/result.out|wc -l)
	for j in default ed25519
	do
		if [ $verbose -gt 0 ] ; then
			echo key $j domain $i
		fi
		selector=$(cat $domainkey_dir/$i/$j.pub |sed -e 's{.*({{' -e 's{).*{{' -e '/^$/d' -e 's{"{{g' -e 's{\t{{g' | tr -d '\n')
		case $j in
			default)
			echo "  rsa+ed25519 with rsa-256 selector"
			;;
			ed25519)
			echo "  rsa+ed25519 with ed25519 selector"
			;;
		esac
		cat /tmp/result.out | env - \
			NODK="1" \
			QMAILREMOTE="1" \
			DKIMVERIFY="1" \
			VERBOSE=1 \
			SELECTOR_DATA="$selector" \
		$dk_filter >$out 2>/tmp/err.out
		ret=$?
		grep Signature /tmp/err.out | sed -e 's{Signature #{    Signature{g' \
			-e 's{01{rsa-256{' -e 's{02{ed25519{' -e 's{Failure.*{Failure - Correct{'
		if [ $ret -eq 0 -a $sig_count -eq 2 ] ; then
			if [ $verbose -gt 0 ] ; then
				echo "SUCCESS: [ret=$ret] domain=$i sig_count=$sig_count env - DKIMSIGN=$key1 DKIMSIGNEXTRA=$key2... dk-filter"
				echo
			fi
			echo SUCCESS ======================== >$out
		else
			echo "FAILED : [ret=$ret] domain=$i sig_count=$sig_count env - DKIMSIGN=$key1 DKIMSIGNEXTRA=$key2... dk-filter"
			echo
			echo FAILURE [$ret] ======================== >$out
			echo >$out
			failed=1
		fi
	done
	/bin/rm -f /tmp/result.out
done

if [ $verbose -eq 0 -a $failed -eq 0 ] ; then
	echo "  Success"
	echo
fi
if [ $failed -eq 1 ] ; then
	echo "Test Failed for  multi-signature signing+verification by dk-filter"
	exit 1
elif [ $verbose -ne 0 ] ; then
	echo "All Tests succeeded for  multi-signature signing+verification by dk-filter"
fi

# Test No 11
echo "testing qmail-dkim signing+verification by qmail-dkim"
failed=0
for i in $domainkey_dir/test $domainkey_dir/%/default $domainkey_dir/%/test $domainkey_dir/%/ed25519
do
	for j in example.com example.org
	do
		selector=""
		if [ "$i" = "$domainkey_dir/test" -a -f $i.pub ] ; then
			selector=$(cat $i.pub |sed -e 's{.*({{' -e 's{).*{{' -e '/^$/d' -e 's{"{{g' -e 's{\t{{g' | tr -d '\n')
		fi
		if [ -z "$selector" ] ; then
			case $i in
			$domainkey_dir/%/default)
			enc="-z 2"
			if [ -f $domainkey_dir/$j/default.pub ] ; then
				selector=$(cat $domainkey_dir/$j/default.pub |sed -e 's{.*({{' -e 's{).*{{' -e '/^$/d' -e 's{"{{g' -e 's{\t{{g' | tr -d '\n')
			elif [ -f $domainkey_dir/default.pub ] ; then
				selector=$(cat $domainkey_dir/default.pub |sed -e 's{.*({{' -e 's{).*{{' -e '/^$/d' -e 's{"{{g' -e 's{\t{{g' | tr -d '\n')
			fi
			;;
			$domainkey_dir/%/test)
			enc="-z 2"
			if [ -f $domainkey_dir/$j/test.pub ] ; then
				selector=$(cat $domainkey_dir/$j/test.pub |sed -e 's{.*({{' -e 's{).*{{' -e '/^$/d' -e 's{"{{g' -e 's{\t{{g' | tr -d '\n')
			elif [ -f $domainkey_dir/test.pub ] ; then
				selector=$(cat $domainkey_dir/test.pub |sed -e 's{.*({{' -e 's{).*{{' -e '/^$/d' -e 's{"{{g' -e 's{\t{{g' | tr -d '\n')
			fi
			;;
			$domainkey_dir/%/ed25519)
			enc="-z 4"
			if [ -f $domainkey_dir/$j/ed25519.pub ] ; then
				selector=$(cat $domainkey_dir/$j/ed25519.pub |sed -e 's{.*({{' -e 's{).*{{' -e '/^$/d' -e 's{"{{g' -e 's{\t{{g' | tr -d '\n')
			elif [ -f $domainkey_dir/ed25519.pub ] ; then
				selector=$(cat $domainkey_dir/ed25519.pub |sed -e 's{.*({{' -e 's{).*{{' -e '/^$/d' -e 's{"{{g' -e 's{\t{{g' | tr -d '\n')
			fi
			;;
			esac
		fi
		if [ $verbose -gt 0 ] ; then
			echo key=$i domain=$j
		fi
		(
		echo "From: postmaster@$j"
		echo "To: postmaster@$j"
		echo "Subject: Test"
		echo "Date: $(date -R)"
		echo
		echo "Test message"
		) | env - \
			CONTROLDIR=/tmp/control \
			DKIMSIGN="$i" \
			DKIMSIGNOPTIONS="$enc" \
			DKIMQUEUE=/bin/cat \
			$qmail_dkim | env - \
				DKIMVERIFY="" \
				SELECTOR_DATA="$selector" \
				DKIMQUEUE=/bin/cat \
				$qmail_dkim > $out
		ret=$?
		if [ $ret -eq 0 ] ; then
			if [ $verbose -gt 0 ] ; then
				echo "SUCCESS: [ret=$ret]  env - DKIMSIGN=$i DKIMQUEUE=/bin/cat $qmail_dkim"
				echo
			fi
			echo SUCCESS ======================== >$out
		else
			echo "FAILED : [ret=$ret] domain=$j key=$i env - DKIMSIGN=$i DKIMQUEUE=/bin/cat $qmail_dkim"
			echo
			echo FAILURE [$ret] domain=$j ======================== >$out
			echo >$out
			failed=1
		fi
	done
done

for i in $domainkey_dir/%/notexist $domainkey_dir/%
do
	for j in example.com example.org
	do
		if [ $verbose -gt 0 ] ; then
			echo key=$i domain=$j
		fi
		(
		echo "From: postmaster@$j"
		echo "To: postmaster@$j"
		echo "Subject: Test"
		echo "Date: $(date -R)"
		echo
		echo "Test message"
		) | env - \
			CONTROLDIR=/tmp/control \
			DKIMSIGN="$i" \
			DKIMQUEUE=/bin/cat \
			$qmail_dkim >$out
		ret=$?
		if [ $ret -eq 0 ] ; then
			if [ $verbose -gt 0 ] ; then
				echo "SUCCESS: [ret=$ret]  env - DKIMSIGN=$i DKIMQUEUE=/bin/cat $qmail_dkim"
				echo
			fi
			echo SUCCESS ======================== >$out
		else
			echo "FAILED : [ret=$ret] domain=$j key=$i env - DKIMSIGN=$i DKIMQUEUE=/bin/cat $qmail_dkim"
			echo
			echo FAILURE [$ret] domain=$j ======================== >$out
			echo >$out
			failed=1
		fi
	done
done

for i in $domainkey_dir/notexist
do
	for j in example.com example.org
	do
		if [ $verbose -gt 0 ] ; then
			echo key $i domain $j
		fi
		(
		echo "From: postmaster@$j"
		echo "To: postmaster@$j"
		echo "Subject: Test"
		echo "Date: $(date -R)"
		echo
		echo "Test message"
		) | env - \
			CONTROLDIR=/tmp/control \
			DKIMSIGN="$i" \
			DKIMQUEUE=/bin/cat \
			ERROR_FD=2 \
			$qmail_dkim >$out 2>&1
		ret=$?
		if [ $ret -eq 0 ] ; then
			echo "FAILED : [ret=$ret] domain=$j key=$i env - DKIMSIGN=$i DKIMQUEUE=/bin/cat $qmail_dkim"
			echo
			echo FAILURE [$ret] domain=$j ======================== > $out
			echo >$out
			failed=1
		else
			if [ $ret -ne $nokeyerror -a $ret -ne 88 ] ; then
				echo "FAILED : [ret=$ret] domain=$j key=$i env - DKIMSIGN=$i DKIMQUEUE=/bin/cat $dkim"
				echo
				echo FAILURE [$ret] domain=$j ======================== > $out
				echo >$out
				failed=1
			else
				if [ $verbose -gt 0 ] ; then
					echo "SUCCESS: [ret=$ret] env - DKIMSIGN=$i DKIMQUEUE=/bin/cat $dkim"
				fi
				echo SUCCESS ======================== >$out
			fi
		fi
	done
done

if [ $verbose -eq 0 -a $failed -eq 0 ] ; then
	echo "  Success"
	echo
fi
if [ $failed -eq 1 ] ; then
	echo "Test failed for $qmail_dkim signing+verification by $qmail_dkim"
	exit 1
elif [ $verbose -ne 0 ] ; then
	echo "All Tests succeeded for $qmail_dkim signing+verification by $qmail_dkim"
fi

# Test No 12
echo "testing dk-filter signing"
failed=0
for i in $domainkey_dir/test $domainkey_dir/%/default $domainkey_dir/%/test $domainkey_dir/%/notexist $domainkey_dir/%
do
	for j in example.com example.org
	do
		if [ $verbose -gt 0 ] ; then
			echo key $i domain $j
		fi
		(
		echo "From: postmaster@$j"
		echo "To: postmaster@$j"
		echo "Subject: Test"
		echo "Date: $(date -R)"
		echo
		echo "Test message"
		) | env - \
			NODK="1" \
			QMAILREMOTE="1" \
			CONTROLDIR=/tmp/control \
  			_SENDER=postmaster@$j \
  			DKIMSIGN=$i \
  			$dk_filter > $out
		ret=$?
		if [ $ret -eq 0 ] ; then
			if [ $verbose -gt 0 ] ; then
				echo "SUCCESS: [ret=$ret]  env - NODK=1 QMAILREMOTE=1 _SENDER=postmaster@$j DKIMSIGN=$i DKIMQUEUE=/bin/cat $dk_filter"
			fi
			echo SUCCESS ======================== >$out
		else
			echo "FAILED : [ret=$ret] domain=$j key=$i env - NODK=1 QMAILREMOTE=1 _SENDER=postmaster@$j DKIMSIGN=$i DKIMQUEUE=/bin/cat $dk_filter"
			echo
			echo FAILURE [$ret] domain=$j ======================== >$out
			echo >$out
			failed=1
		fi
	done
done

for i in $domainkey_dir/notexist
do
	for j in example.com example.org
	do
		if [ $verbose -gt 0 ] ; then
			echo key $i domain $j
		fi
		(
		echo "From: postmaster@$j"
		echo "To: postmaster@$j"
		echo "Subject: Test"
		echo "Date: $(date -R)"
		echo
		echo "Test message"
		) | env - \
			NODK="1" \
			QMAILREMOTE="1" \
			CONTROLDIR=/tmp/control \
	  		_SENDER=postmaster@$j \
			DKIMSIGN="$i" \
			DKIMQUEUE=/bin/cat $dk_filter > $out 2>&1
		ret=$?
		if [ $ret -eq 0 ] ; then
			echo SUCCESS ======================== > $out
		else
			if [ $ret -ne $nokeyerror -a $ret -ne 88 ] ; then
				echo "FAILED : [ret=$ret] domain=$j key=$i env - NODK=1 QMAILREMOTE=1 _SENDER=postmaster@$j DKIMSIGN=$i DKIMQUEUE=/bin/cat $dk_filter"
				echo
				echo FAILURE [$ret] domain=$j ======================== > $out
				echo >$out
				failed=1
			else
				if [ $verbose -gt 0 ] ; then
					echo "SUCCESS: [ret=$ret] env - NODK=1 QMAILREMOTE=1 _SENDER=postmaster@$j DKIMSIGN=$i DKIMQUEUE=/bin/cat $dk_filter"
				fi
			fi
		fi
	done
done

if [ $verbose -eq 0 -a $failed -eq 0 ] ; then
	echo "  Success"
	echo
fi
if [ $failed -eq 1 ] ; then
	echo "Test Failed for dk-filter signing"
	exit 1
elif [ $verbose -ne 0 ] ; then
	echo "All Tests succeeded for dk-filter signing"
fi

# Test No 13
echo "testing dk-filter signing+verification by dk-filter"
failed=0
for i in default ed25519
do
	for j in example.com example.org
	do
		if [ $verbose -gt 0 ] ; then
			echo key $i domain $j
		fi
		case $i in 
			default)
				enc="-z 2"
				;;
			ed25519)
				enc="-z 4"
				;;
		esac
		selector=$(cat $domainkey_dir/$j/$i.pub |sed -e 's{.*({{' -e 's{).*{{' -e '/^$/d' -e 's{"{{g' -e 's{\t{{g' | tr -d '\n')
		(
		echo "From: postmaster@$j"
		echo "To: postmaster@$j"
		echo "Subject: Test"
		echo "Date: $(date -R)"
		echo
		echo "Test message"
		) | env - \
			NODK="1" \
			QMAILREMOTE="1" \
			CONTROLDIR=/tmp/control \
  			_SENDER=postmaster@$j \
  			DKIMSIGN="$domainkey_dir/%/$i" \
			DKIMSIGNOPTIONS="$enc" \
  			$dk_filter | env - \
			NODK="1" \
			QMAILREMOTE="1" \
			DKIMVERIFY="1" \
			SELECTOR_DATA="$selector" \
		$dk_filter > $out
		ret=$?
		if [ $ret -eq 0 ] ; then
			if [ $verbose -gt 0 ] ; then
				echo "SUCCESS: [ret=$ret]  env - NODK=1 QMAILREMOTE=1 _SENDER=postmaster@$j DKIMSIGN=$i DKIMQUEUE=/bin/cat $dk_filter"
			fi
			echo SUCCESS ======================== >$out
		else
			echo "FAILED : [ret=$ret] domain=$j key=$i env - NODK=1 QMAILREMOTE=1 _SENDER=postmaster@$j DKIMSIGN=$i DKIMQUEUE=/bin/cat $dk_filter"
			echo
			echo FAILURE [$ret] domain=$j ======================== >$out
			echo >$out
			failed=1
		fi
	done
done

if [ $verbose -eq 0 -a $failed -eq 0 ] ; then
	echo "  Success"
	echo
fi
if [ $failed -eq 1 ] ; then
	echo "Test Failed for dk-filter signing+verification by dk-filter"
	exit 1
elif [ $verbose -ne 0 ] ; then
	echo "All Tests succeeded for dk-filter signing+verification by dk-filter"
fi

# Test No 14
echo "testing dkimkeys control file feature"
failed=0
if [ ! -d /tmp/control ] ; then
	mkdir -p /tmp/control
fi

(
echo "ex*.com:/tmp/domainkeys/%/dkimkeys1"
echo "ex.*.org:/tmp/domainkeys/%/dkimkeys2:QREGEX=1,DKIMSIGNOPTIONS=-z 4"
) >/tmp/control/dkimkeys
for i in example.com example.org
do
	if [ $verbose -gt 0 ] ; then
		echo domain $i
	fi
	if [ "$i" = "example.com" ] ; then
		selector=$(cat $domainkey_dir/$i/dkimkeys1.pub |sed -e 's{.*({{' -e 's{).*{{' -e '/^$/d' -e 's{"{{g' -e 's{\t{{g' | tr -d '\n')
	else
		selector=$(cat $domainkey_dir/$i/dkimkeys2.pub |sed -e 's{.*({{' -e 's{).*{{' -e '/^$/d' -e 's{"{{g' -e 's{\t{{g' | tr -d '\n')
	fi
	(
	echo "From: postmaster@$i"
	echo "To: postmaster@$i"
	echo "Subject: Test"
	echo "Date: $(date -R)"
	echo
	echo "Test message"
	) | env -  \
		DKIMSIGN="" \
		CONTROLDIR=/tmp/control \
		DKIMQUEUE=/bin/cat \
		ERROR_FD=2 \
		$qmail_dkim | $dkim -v -T "$selector" > $out
	ret=$?
	if [ $ret -eq 0 ] ; then
		if [ $verbose -gt 0 ] ; then
			echo "SUCCESS: [ret=$ret]  dkimkeys"
			echo
		fi
		echo SUCCESS ======================== >$out
	else
	(
	echo "From: postmaster@$i"
	echo "To: postmaster@$i"
	echo "Subject: Test"
	echo "Date: $(date -R)"
	echo
	echo "Test message"
	) >/tmp/mail.txt
		echo "FAILED : [ret=$ret] domain=$i dkimkeys"
		echo
		echo FAILURE [$ret] domain=$i ======================== >$out
		echo >$out
		failed=1
	fi
done

(
echo "ex*.com:/tmp/domainkeys/notexists"
echo "ex*.org:/tmp/domainkeys/notexists:QREGEX=1"
) >/tmp/control/dkimkeys
for i in example.com example.org
do
	if [ $verbose -gt 0 ] ; then
		echo domain $i
	fi
	(
	echo "From: postmaster@$i"
	echo "To: postmaster@$i"
	echo "Subject: Test"
	echo "Date: $(date -R)"
	echo
	echo "Test message"
	) | env -  \
		DKIMSIGN="" \
		CONTROLDIR=/tmp/control \
		DKIMQUEUE=/bin/cat \
		ERROR_FD=2 \
		$qmail_dkim > $out 2>&1
	ret=$?
	if [ $ret -eq 0 ] ; then
		echo "FAILED : [ret=$ret] domain=$i key=dkimkeys"
		echo
		echo FAILURE [$ret] domain=$j ======================== > $out
		echo >$out
		failed=1
	else
		if [ $ret -ne $nokeyerror -a $ret -ne 88 ] ; then
			echo "FAILED : [ret=$ret] domain=$i key=dkimkeys"
			echo
			echo FAILURE [$ret] domain=$j ======================== > $out
			echo >$out
			failed=1
		else
			if [ $verbose -gt 0 ] ; then
				echo "SUCCESS: [ret=$ret] dkimkeys"
			fi
			echo SUCCESS ======================== >$out
		fi
	fi
done

if [ $verbose -eq 0 -a $failed -eq 0 ] ; then
	echo "  Success"
	echo
fi
if [ $failed -eq 1 ] ; then
	echo "Test Failed for dkimkeys"
	exit 1
elif [ $verbose -ne 0 ] ; then
	echo "All Tests succeeded for dkimkeys"
fi

# Test No 15
echo "testing multi-signature signing+verification by dk-filter DKIMSIGNEXTRA in dkimkeys"
(
echo "ex*.com:/tmp/domainkeys/%/dkimkeys1:DKIMSIGNEXTRA=/tmp/domainkeys/%/dkimkeys2,DKIMSIGNOPTIONSEXTRA=-z 4"
echo "ex.*.org:/tmp/domainkeys/%/dkimkeys1:QREGEX=1,DKIMSIGNEXTRA=/tmp/domainkeys/%/dkimkeys2,DKIMSIGNOPTIONSEXTRA=-z 4"
) >/tmp/control/dkimkeys

failed=0
for i in example.com example.org
do
	(
	echo "From: postmaster@$i"
	echo "To: postmaster@$i"
	echo "Subject: Test"
	echo "Date: $(date -R)"
	echo
	echo "Test message"
	) | env \
		NODK="1" \
		QMAILREMOTE="1" \
  		_SENDER=postmaster@$i \
		CONTROLDIR=/tmp/control \
		DKIMSIGN="" \
		DKIMSIGNOPTIONS="-z 2" \
		$dk_filter > /tmp/result.out
	sig_count=$(grep DKIM-Signature /tmp/result.out|wc -l)
	for j in dkimkeys1 dkimkeys2
	do
		if [ $verbose -gt 0 ] ; then
			echo key $j domain $i
		fi
		selector=$(cat $domainkey_dir/$i/$j.pub |sed -e 's{.*({{' -e 's{).*{{' -e '/^$/d' -e 's{"{{g' -e 's{\t{{g' | tr -d '\n')
		case $j in
			dkimkeys1)
			echo "  rsa+ed25519 with rsa-256 selector"
			;;
			dkimkeys2)
			echo "  rsa+ed25519 with ed25519 selector"
			;;
		esac
		cat /tmp/result.out | env - \
			NODK="1" \
			QMAILREMOTE="1" \
			DKIMVERIFY="1" \
			VERBOSE=1 \
			SELECTOR_DATA="$selector" \
		$dk_filter >$out 2>/tmp/err.out
		ret=$?
		grep Signature /tmp/err.out | sed -e 's{Signature #{    Signature{g' \
			-e 's{01{rsa-256{' -e 's{02{ed25519{' -e 's{Failure.*{Failure - Correct{'
		if [ $ret -eq 0 -a $sig_count -eq 2 ] ; then
			if [ $verbose -gt 0 ] ; then
				echo "SUCCESS: [ret=$ret] domain=$i sig_count=$sig_count ... dk-filter"
				echo
			fi
			echo SUCCESS ======================== >$out
		else
			echo "FAILED : [ret=$ret] domain=$i sig_count=$sig_count ... dk-filter"
			echo
			echo FAILURE [$ret] ======================== >$out
			echo >$out
			failed=1
		fi
	done
	/bin/rm -f /tmp/result.out
done

# Test No 15
key1=$domainkey_dir/example.com/dkimkeys1
qmail_inject=$bindir/qmail-inject
qmail_queue=$sbindir/qmail-queue
echo "testing qmail-dkim custom error feature"
(
	echo "From: postmaster@$real_domain"
	echo "To: $user@$real_domain"
	echo "Subject: Test"
	echo "Date: $(date -R)"
	echo
	echo "Test message"
) > /tmp/mail.txt 
for i in PQ pq
do
	echo "  testing return value  for DKIMVERIFY=$i"
	(cat /tmp/mail.txt | $bindir/dkim -z 2 -s $key1; cat /tmp/mail.txt) | env - \
		QUEUEDIR=/var/indimail/queue/queue1 \
		CONFSPLIT=23 \
		BIGTODO=0 \
		DKIMVERIFY="$i" \
		QMAILQUEUE=$qmail_dkim \
		FASTQUEUE=1 \
		ERROR_FD=2 \
		$qmail_inject -a $user 2>/tmp/out.$$
	ret=$?
	echo "    return value=$ret"
	case $i in
		PQ)
		if [ $ret -eq 100 ] ; then
			if [ $verbose -gt 0 ] ; then
				echo "SUCCESS: [ret=$ret] DKIMVERIFY=$i qmail-dkim custom error"
				echo
			fi
			echo SUCCESS ======================== >$out
		else
			failed=1
			echo "FAILED : [ret=$ret] DKIMVERIFY=$i qmail-dkim custom error"
			echo
			echo FAILURE [$ret] ======================== >$out
			echo >>$out
		fi
		echo "  testing error message for DKIMVERIFY=$i"
		echo "    error message=$(cat /tmp/out.$$)"
		grep "qmail-inject: fatal: qmail-dkim: signature error: permanent dns failure requesting selector (#5.7.0)" /tmp/out.$$ > /dev/null
		if [ $? -eq 0 ] ; then
			if [ $verbose -gt 0 ] ; then
				echo "SUCCESS: [ret=$ret] DKIMVERIFY=$i qmail-dkim custom error message"
				echo
			fi
			echo SUCCESS ======================== >$out
		else
			failed=1
			echo "FAILED : [ret=$ret] DKIMVERIFY=$i qmail-dkim custom error message"
			echo
			echo FAILURE [$ret] ======================== >$out
			echo >>$out
		fi
		;;
		pq)
		if [ $ret -eq 111 ] ; then
			if [ $verbose -gt 0 ] ; then
				echo "SUCCESS: [ret=$ret] DKIMVERIFY=$i qmail-dkim custom error"
				echo
			fi
			echo SUCCESS ======================== >$out
		else
			failed=1
			echo "FAILED : [ret=$ret] DKIMVERIFY=$i qmail-dkim custom error"
			echo
			echo FAILURE [$ret] ======================== >$out
			echo >>$out
		fi
		echo "  testing error message for DKIMVERIFY=$i"
		echo "    error message=$(cat /tmp/out.$$)"
		grep "qmail-inject: fatal: qmail-dkim: signature error: permanent dns failure requesting selector (#4.7.0)" /tmp/out.$$ > /dev/null
		if [ $? -eq 0 ] ; then
			if [ $verbose -gt 0 ] ; then
				echo "SUCCESS: [ret=$ret] DKIMVERIFY=$i qmail-dkim custom error message"
				echo
			fi
			echo SUCCESS ======================== >$out
		else
			failed=1
			echo "FAILED : [ret=$ret] DKIMVERIFY=$i qmail-dkim custom error message"
			echo
			echo FAILURE [$ret] ======================== >$out
			echo >>$out
		fi
		;;
	esac
done
/bin/rm -f /tmp/mail.txt /tmp/out.$$
if [ $failed -eq 1 ] ; then
	echo "Test Failed for qmail-dkim custom error"
	exit 1
elif [ $verbose -ne 0 ] ; then
	echo "Test succeeded for qmail-dkim custom error"
fi

/bin/rm -f /tmp/control/dkimkeys

if [ $verbose -eq 0 -a $failed -eq 0 ] ; then
	echo "  Success"
	echo
fi
if [ $failed -eq 1 ] ; then
	echo "Test Failed for  multi-signature signing+verification by dk-filter DKIMSIGNEXTRA in dkimkeys"
	exit 1
elif [ $verbose -ne 0 ] ; then
	echo "All Tests succeeded for  multi-signature signing+verification by dk-filter DKIMSIGNEXTRA in dkimkeys"
fi

#sudo /bin/rm -f /tmp/domainkeys
echo "All Tests succeeded"
exit 0