Un script pour ajouter un domaine dont on veux signer les mails via DKIMproxy. Celui-ci est forcément lié à mon article sur le sujet : "Installer la signature DKIM sur Postfix avec DKIMproxy". Vous pouvez très facilement l'adapter à votre usage.

Que fait ce script :

  • crée la clé publique et la clé privée dans le répertoire keys de DKIMproxy
  • change les droits sur la clé privée
  • sur demande, ajoute l'enregistrement dans le fichier de zone du domaine
  • ajoute les informations qui vont bien dans le fichier sender_map de DKIMproxy

On le lance de la façon suivante

./generate_keys domain.tld

Il faut ensuite incrémenter le numéro de série de la zone, relancer BIND et DKIMproxy.

Le script

#!/bin/bash

# Yves Tannier [grafactory.net] 2008 GPL...

# private/public keys path
PATH_KEYS='/usr/local/dkimproxy/keys'

# sender_map file path
PATH_SENDER_MAP='/usr/local/dkimproxy/sender_map'

# dkimuser
USER_GROUP='dkim:dkim'

# domain on parametre
DOMAIN=$1

# bind file path (optional)
ZONE_PATH="/var/cache/bind/$DOMAIN.hosts"

openssl genrsa -out $PATH_KEYS/$DOMAIN.key 1024
openssl rsa -in $PATH_KEYS/$DOMAIN.key -pubout -out $PATH_KEYS/${DOMAIN}_pub.key

# chg right
chown $USER_GROUP $PATH_KEYS/$DOMAIN.key
chmod 640 $PATH_KEYS/$DOMAIN.key

# Adding DKIM key on BIND Zone ?
echo
echo -n "Add DKIM key on BIND zone file ? ([Y]/n) "
read ans
if [ ! _$ans = _y -o _$ans = _Y ]; then

    # bind file
    echo -n "BIND Zone filename ($ZONE_PATH) : "
    read ${ZONE_PATH_READ}

    if [ ! -z "$ZONE_PATH_READ" ]; then
        ZONE_PATH=${ZONE_PATH_READ}
    fi

    # public key one line
    PUBLIC_KEY=$(cat $PATH_KEYS/${DOMAIN}_pub.key | sed -n '/BEGIN PUBLIC KEY/,/END PUBLIC KEY/p' | sed '/PUBLIC KEY/d' | tr -d '\n')

    # write
    echo
    echo "_domainkey.$DOMAIN.               IN TXT      \"t=y; o=-;\"" >> $ZONE_PATH
    echo "$DOMAIN._domainkey.$DOMAIN.       IN TXT      \"k=rsa; t=s; p=$PUBLIC_KEY\"" >> $ZONE_PATH

fi

SM="$DOMAIN dkim(c=simple,s=$DOMAIN,a=rsa-sha1,key=$PATH_KEYS/$DOMAIN.key), domainkeys(c=nofws,s=$DOMAIN,key=$PATH_KEYS/$DOMAIN.key)"
echo $SM >> $PATH_SENDER_MAP

echo
echo "Please, restart DKIMproxy !"
echo
echo "... And maybe BIND with new serial on $ZONE_PATH !"

Au format compressé : generate_keys.tar.gz

N'hésitez pas à me proposer vos améliorations.