#!/bin/sh

# 
# create Domainkey 
#
# Author: Joerg Backschues
#

if [ "$1" = "" ] ; then
    echo "Usage: $0 [-p] domain [selector]";
    echo "       Create domainkey";
    echo "       Print domainkey with -p";
    echo;
    exit 1;
fi

CONFIGDIR="/etc/domainkeys"

case "$1" in

    "-p")
	#
	# print domainkey
	#

	SELECTOR=$3

	if [ "$SELECTOR" = "" ] ; then
	    SELECTOR="default"
	fi
	
	test -f $CONFIGDIR/$2/rsa.public_$SELECTOR || { echo; echo "Domainkey for domain \"$2\" with selector \"$SELECTOR\" does not exist."; echo; exit 1;}

	# <selector>._domainkey.<domain>. IN TXT "<domainkey>"

	echo -e "\nTXT record for BIND:"

	echo -n "$SELECTOR._domainkey.$2. IN TXT "
	echo "\"v=DKIM1; k=rsa; t=y; p=`grep -v -e "^-" $CONFIGDIR/$2/rsa.public_$SELECTOR | tr -d "\n"`\""
	echo
	
	exit 0
	
    ;;


    *)
	#
	# create domainkey
	#

	SELECTOR=$2

	if [ "$SELECTOR" = "" ] ; then
	    SELECTOR="default"
	fi
	
	test -f $CONFIGDIR/$1/rsa.private_$SELECTOR && { echo; echo "Domainkey for domain \"$1\" with selector \"$SELECTOR\" already exists."; echo; exit 1;}

	mkdir -p $CONFIGDIR/$1

	echo $SELECTOR > $CONFIGDIR/$1/selector

	openssl genrsa -out $CONFIGDIR/$1/rsa.private_$SELECTOR 1024
	openssl rsa -in $CONFIGDIR/$1/rsa.private_$SELECTOR -out $CONFIGDIR/$1/rsa.public_$SELECTOR -pubout -outform PEM

	ln -sf $CONFIGDIR/$1/rsa.private_$SELECTOR $CONFIGDIR/$1/default
	ln -sf $CONFIGDIR/$1/rsa.private_$SELECTOR $CONFIGDIR/$1/$SELECTOR
	chmod 0700 $CONFIGDIR
	chmod 0700 $CONFIGDIR/$1
	chmod 0600 $CONFIGDIR/$1/*

	chown -R qmailr:qmail $CONFIGDIR

	# <selector>._domainkey.<domain>. IN TXT "<domainkey>"

	echo -e "\nTXT record for BIND:"
	echo -n "$SELECTOR._domainkey.$1. IN TXT "
	echo "\"v=DKIM1\\; k=rsa\\; t=y\\; p=`grep -v -e "^-" $CONFIGDIR/$1/rsa.public_$SELECTOR | tr -d "\n"`\""
	echo

	exit 0
    ;;

esac
