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.


