File: /usr/sbin/opendkim-add-domain.sh
#!/bin/sh
DOMAIN="$1"
[ -z "$DOMAIN" ] && echo "no domain given" >&2 && exit 1
mkdir -p "/tmp/$DOMAIN" && chown admin:vuser "/tmp/$DOMAIN"
[ -x /usr/iports/sbin/opendkim-genkey ] && genkey=/usr/iports/sbin/opendkim-genkey || genkey=/usr/sbin/opendkim-genkey
[ ! -x "$genkey" ] && echo "opendkim-genkey not found" >&2 && exit 1
$genkey --directory="/tmp/$DOMAIN" --domain="$DOMAIN"
mkdir -p /etc/dkim/keys && chown admin:vuser /etc/dkim/keys
mv "/tmp/$DOMAIN/default.private" "/etc/dkim/keys/$DOMAIN" && chown admin:vuser "/etc/dkim/keys/$DOMAIN"
mkdir -p /etc/dkim/txt && chown admin:vuser /etc/dkim/txt
cat "/tmp/$DOMAIN/default.txt" | tr '\n\t' ' ' | sed 's/\"[^A-Za-z0-9]*\"// ; s/[()]//g ; s/ / / ; s/ *; -.*$// ; s/ IN / /' > "/etc/dkim/txt/$DOMAIN" && chown admin:vuser "/etc/dkim/txt/$DOMAIN"
rm "/tmp/$DOMAIN/default.txt"
[ -s /etc/dkim/opendkim.keytable ] && sed -i '.bak' "/^$DOMAIN /d" /etc/dkim/opendkim.keytable && chown admin:vuser /etc/dkim/opendkim.keytable.bak
echo "$DOMAIN $DOMAIN:default:/etc/dkim/keys/$DOMAIN" >> /etc/dkim/opendkim.keytable
[ -s /etc/dkim/opendkim.signingtable ] && sed -i '.bak' "/^\*\@$DOMAIN /d" /etc/dkim/opendkim.signingtable && chown admin:vuser /etc/dkim/opendkim.signingtable.bak
echo "*@$DOMAIN $DOMAIN" >> /etc/dkim/opendkim.signingtable
rmdir "/tmp/$DOMAIN"
service milter-opendkim restart