#!/bin/sh # # DKIM signing for qmail # # permissions must be 0755 # # Author: Joerg Backschues # [ "$DKSIGN" ] || DKSIGN="/etc/domainkeys/%/default" [ "$DKREMOTE" ] || DKREMOTE="/var/qmail/bin/qmail-remote.orig" # parent domains (see RFC 4871 3.8) FQDN=${2##*@} TLD=`echo $FQDN | awk 'BEGIN {FS = "."} {print $NF}'` DOM=`echo $FQDN | awk 'BEGIN {FS = "."} {print $(NF-1)}'` # get domainkey file if [[ $DKSIGN == *%* ]] ; then DOMAIN=$DOM.$TLD DKSIGN="${DKSIGN%%%*}${DOMAIN}${DKSIGN#*%}" fi if [ -f "$DKSIGN" ] ; then # domain with domainkey inmsg=`mktemp -p /var/domainkeys -t dkim.XXXXXXXXXXXXXXX` outmsg=`mktemp -p /var/domainkeys -t dkim.XXXXXXXXXXXXXXX` # sign message cat - >"$inmsg" libdkimtest -y`cat /etc/domainkeys/$DOMAIN/selector` -d"$DOMAIN" -i -ct -t -x864000 -s "$inmsg" "$DKSIGN" "$outmsg" 2>/dev/null # remove shift in (cat "$outmsg" | tr -d '\015') | "$DKREMOTE" "$@" retval=$? rm -f "$inmsg" "$outmsg" echo "qmail-remote: domainkey for $2" | /var/qmail/bin/splogger qmail; exit $retval else # domain without domainkey exec "$DKREMOTE" "$@" fi