script création dkim

Script pour automatiser la configuration de postfix/DKIM pour un nouveau site à héberger (prérequis: installer dkim et configurer postfix comme ici: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy )

#!/bin/bash

domain=$1

# «selector» est utilisé pour retrouver l'enregistrement TXT correspondant dans la zone DNS
selector=mail

opendkim_config_path=/etc/opendkim
keys_path=$opendkim_config_path/keys

if [[ -z "$domain" ]]; then
  echo "1er argument (domaine) manquant"
  exit 1
fi

if [[ ! "$domain" =~ ^[a-z_A-Z-]+\.[a-zA-Z]{2,4}$ ]]; then
  echo "domaine '$domain' incorrect"
  exit 2
fi


if [[ -d $keys_path/$domain ]]; then
  echo "dossier '$domain' existe déjà dans $keys_path"
  exit 3
fi

file_trusted_host=$opendkim_config_path/TrustedHosts
file_signing_table=$opendkim_config_path/SigningTable
file_key_table=$opendkim_config_path/KeyTable

if grep "$domain" $file_trusted_host; then
  echo "Le domaine '$domain' existe déjà dans $file_trusted_host"
  exit 4
fi

if grep "$domain" $file_signing_table; then
  echo "Le domaine '$domain' existe déjà dans $file_signing_table"
  exit 5
fi

if grep "$domain" $file_key_table; then
  echo "Le domaine '$domain' existe déjà dans $file_key_table"
  exit 6
fi

keyTableString="$selector._domainkey.$domain $domain:$selector:/etc/opendkim/keys/$domain/$selector.private"
signingTableString="*@$domain $selector._domainkey.$domain"
trustedHostString="*.$domain"

echo $trustedHostString >> $file_trusted_host
echo $signingTableString >> $file_signing_table
echo $keyTableString >> $file_key_table

mkdir $keys_path/$domain
cd $keys_path/$domain
opendkim-genkey -s $selector -d $domain
chown opendkim:opendkim $selector.private

cd $opendkim_config_path
chown opendkim:opendkim $keys_path/$domain

echo "Ajouter la clé publique à la zone DNS"
echo "-----"
cat $keys_path/$domain/$selector.txt
echo "-----"

systemctl restart postfix
systemctl restart opendkim

echo "Commande pour tester:"
echo -----
random_email_dkimvalidator=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 19 | head -n 1)@dkimvalidator.com
echo "test |mail -a 'From: root@$domain' -s 'test dkim pour $domain' $random_email_dkimvalidator"
echo "et vérifier: https://dkimvalidator.com/results?email=$random_email_dkimvalidator"
echo -----

Laisser un commentaire