La documentation officielle est ici: DKIM Core Technical Specification

Il vous tout d'abord générer un bi-clé RSA 1024 bits, par exemple avec openssl:

openssl genrsa -out example.com.priv 1024
openssl rsa -in example.com.priv -pubout > example.com.pub

Il faut choisir un "selector" qui est un identifiant de clef: il doit faire moins de 64 caractères et contenir uniquement des lettres et des chiffres. Il peut éventuellement contenir une deuxième chaine de la même forme séparée d'un point. Exemples: www, sept15.www, contact ...

Il faut publier ensuite la clé publique dans le DNS en créant un enregistrement de type texte (TXT) de la forme <SELECTOR>._domainkey.example.com et lui affecter la valeur suivante:

v=DKIM1;t=s;n=core;p=<CLEF PUBLIQUE>

En remplaçant évidemment <CLEF PUBLIQUE> par celle générée, c'est-à-dire le contenu du fichier example.com.pub sans espaces ni retour à la ligne ni --- BEGIN PUBLIC KEY --- / --- END PUBLIC KEY ---.

Nous vous conseillons d'utiliser la librairie PHPMailer qui supporte très bien la signature DKIM et génère des emails "propres". DKIM peut y être activé simplement comme suit:

$phpmailer->DKIM_domain = 'example.com';
$phpmailer->DKIM_private = '<CHEMIN CLEF PRIVEE>';
$phpmailer->DKIM_selector = '<SELECTOR>';

Vérifiez ensuite l'implémentation à l'aide de l'excellent www.mail-tester.com !