Comment administrer un VPS Classic – Le DKIM

 

Rappel : je suis sur un VPS Classic 1 (10 Go d'espace disque / 1Go de RAM) de chez OVH tournant sous Release 3 (CentOS 6.6 – Webmin).

Le site est en place et paramétré… mais mauvaise surprise lorsque j'effectue les premiers tests d'envoi de mail à partir du serveur : aucun mail n'arrive à destination. Et quand je teste l'IP du serveur auprès de MxToolbox, le résultat tombe : blacklistée auprès de FABELSOURCES.

Quant à Mail-Tester, il est assez pessimiste :

Résultat_du_Test_de_Spam_by_mail-tester.com_-_2015-02-16_23.33.47

Je paramètre les éléments essentiels pour que mon serveur ne soit plus être identifié comme spammer : reverse DNS, hostname et SPF, comme dans mon tuto de l'année précédente.

Pour le SPF, j'ai adapté suivant les conseils des assistants. J'ai mis

v=spf1 mx:mail.monnomdedomaine.com ip4:000.00.000.00 ~all

(monnomdedomaine.com est à remplacer par votre nom de domaine et 000.00.000.00 par votre IP).

Je mets également à jour la version de la librairie phpMailer que j'utilise pour envoyer mes mails.

Mais les mails ne passent toujours pas. Je ne les retrouve même pas dans le dossier spams ! Certes, ma note est bien remontée auprès de Mail Tester. Mais je n'atteins pas encore le 10/10 : il manque une signature DKIM. Qu'est ce que c'est encore que ce truc ?

Qu'est ce que la signature DKIM ?

Le DKIM (DomainKeys Identified Mail) est présenté comme « une norme d'authentification fiable du nom de domaine de l'expéditeur d'un courrier électronique ». DKIM résulte de la fusion de deux technologies, l'une développée par Yahoo! (DomainKeys) et l'autre par Cisco (Identified Internet Mail)

L'émetteur du message insère dans l'entête de celui-ci une signature numérique cryptographique. Le serveur recevant le message va être en mesure de vérifier la source mais ainsi l'intégrité du message et de certains de ses en-têtes. La vérification de la signature se fait via une clef cryptée située dans un enregistrement DNS.

Quand on crée un domaine sur un VPS OVH acheté en 2015, les clés ont déjà été générées (dans /etc/opendkim/keys/<votrenomdedomaine.com>), il n'y a rien à faire.

winscp-vps-contenu-repertoire-opendkim-keys

En revanche, l'enregistrement DKIM dans la zone DNS n'est pas généré, il faut le faire à la main.

Et là, c'est parti pour de longues recherches dans des tutos inadaptés, incomplets, abscons… Durant 15 jours, j'ai tenté des trucs, tâtonné . Avec l'aide d'un technicien OVH… J'ai même été jusqu'à générer des nouveaux couples de clés sur phpMailer et sur port25. Mais Mail Tester affiche toujours une mauvaise note. Soit c'est parce que « Vous avez plus d'une signature DKIM dans votre message. ». Soit c'est parce que : « DKIM non valide »…

Au bout d'un moment, je finis par tomber sur ce tuto. En fait, dans mon cas, il ne faut faire que la dernière étape (puisque les clés sont déjà générées). Sauf qu'il y a une erreur dans le tuto : c'est le contenu de default.txt (la clé publique) et non de default.private. Et surtout (ce que je n'avais pas compris au début), il ne faut pas oublier de mentionner le sous-domaine default._domainkey.

Et ça ne se fait pas à partir du Webmin, mais à partir du manager OVH.

Un couple clé privée/publique, ça ressemble à ça :

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADPQzli9fysMF/DxcBOrPRXosGJcKnmGEqS2
mSlSZZs8uGO9sEupLn1t2i7o8uaCKXCBiQKBgQDDK7DvkDas19ykTNbk9CgnFvoh
jiHzyKKC2/R/d+A3WSKRqC7H3jQEDg7NHzmAjqSlvjfdyxJV4Dj4C5Pc98LMYVJg
F6hfxHDvZEQ+OVt0AwIDAQAB
-----END PUBLIC KEY-----
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQDDK7DvkDas19ykTNbk9CgnFvohmSlSZZs8uGO9sEupLn1t2b7o
8uaCKXPQzli9fysMF/DxcBOrPRXosGJcKemGEqS2jiHzyKKC2/R/d+A3WSKUqC7H
3jQEDg7NHzmAjqSlvjfdyxJV4Dj4C5Pc98LMYVJgF6hfxHDvZEQ+OVt0AwIDAQAB
AoGBAL/UTsl4ZrUGSmDXAZTyAhFBvUKOxxWetqM83RQRlpxIDJKPJdzS+gvPcH04
qq8z6MWxDCTp8XOYrTpLLZJeujySfWY5yXcCQH4VA5aQyCRdScbbnN3EOsuUVW0z
mvBU+tMuutXR/3hGkhGOlZ9jfnz0lUPzODlYjeC26p2dtsgnHiSbLs0JWyECQCue
g/JlbsspMPIt5bc2iDU4QMU0HlIYrJ7xi2L1O3tzXtp+pGKlCD5GBHeO4S50gJxA
t5bXXJ7hizeTvDj5Wj++eeHK5b9bhO07KQFnOMIT7aIhKB1JAkEA5XpaSb4gzBxP
p/5vFtCu1hN1ddrcXdhhM+HXbDaGaiyM/0Pnh1+YCI2jPRaqmrV90b3gaLYmJheX
bllvBiTM1QJBANm6RthrtQCbpGnYuAOff6LGHC3alqBZ/lMKJX//wXpj3/QZlukz
4Fa3rXnDtPrnymYfbGjmG/sr0gWqQgPNAppUWST2IYY8Ijnyef3D/pyszewPWqp4
KiyFp0mt5M4B41G5vh0CP2UfJ6D0HAF1JZPU9pE3tDG3crpwZOT0Y1aCAcSYLZrl
QDnzokXp2YGJw5PlE2IxFVN/RzQefV3kOI4Nd/gKoA==
-----END RSA PRIVATE KEY-----

Créer les enregistrements DKIM dans la zone DNS

La prise en compte des modifications de zone DNS ne sont pas instantanées (c'est le fameux « temps de propagation des DNS »). Cela peut prendre jusqu'à 24 heures ! Soyez patients, donc, et ne paniquez pas si les tests échouent.

Chez OVH

Dans le manager OVH, aller dans l'onglet Zone DNS du nom de domaine correspondant.

Cliquer sur Ajouter une entrée

serveur-vps-manager-ovh-bouton-ajouter-entree-dns

On choisit DKIM (dernière ligne, Champs mails).

serveur-vps-manager-ovh-ajouter-entree-zone-dns

Et on clique sur suivant

Dans le formulaire de la 2e étape, on coche version DKIM1 et type de clé RSA.

Et on colle la clé publique (la partie du contenu de default.txt après le p=) dans le champ marqué d'un astérisque.

« default » est ce qu'on appelle le sélecteur.

Au fur et à mesure qu'on complète le formulaire, on voit le champ DKIM tout en bas (qui au départ était uniquement constitué de IN TXT « t=s; ») qui se complète.

serveur-vps-manager-ovh-ajouter-entree-zone-dns2

Le résultat (à la place des flous : votre nom de domaine. A la place des 000.00.000.00 : l'IP de votre serveur)

serveur-vps-manager-ovh-resume-zone-dns

Chez Gandi

J'ai pris ces captures fin 2019, après que Gandi ait totalement refondu son interface d'administration. L'onglet s'appelle Enregistrements DNS.

Cliquer sur le bouton Ajouter (en haut à droite, sous la barre d'onglets). Autre particularité, il n'y a pas de champ DKIM chez Gandi . Il faut choisir TXT.

Gandi - ajout d'un enregistrement dans la zone DNS

Pour le TTL, choisissez 30 minutes (pas 30 secondes ! Sinon vous aurez un message d'erreur à l'enregistrement, vous invitant à réessayer plus tard, sans plus de précision… pas super intelligent, soit dit en passant)

Gandi - ajout d'un enregistrement dans la zone DNS

 

Redémarrage du serveur

Puis, sur le serveur, redémarrage des services opendkim et postfix en ligne de commande.

service opendkim restart
service postfix restart

Petite note culturelle, Postfix est le serveur de messagerie électronique du VPS. Il s'appuie sur Opendkim, est un fork de dkim-milter, pour signer les mails.

 

Il ne reste plus qu'à faire la demande de déblacklistage auprès de Fabelsources.

serveur-vps-deblacklistage-fabelsources

Ce qui, heureusement, a été pris en compte très rapidement.

serveur-vps-deblackliste

Les mails envoyés sont enfin reçus, et j'ai enfin droit à un bel arc-en-ciel sur Mail-Tester :

spam-test-mail-tester-10-sur-10

 

Si au bout d'un certain temps, Mail Tester affirme à nouveau que nos mails ne sont plus signés avec la DKIM, c'est peut-être que opendkim est planté. Le relancer avec service opendkim restart

Tester

Validité du DKIM

Pour vérifier la validité de son DKIM, plusieurs tests :

MXToolbox (ce site sert également à vérifier si l'IP de votre serveur est blacklistée)

DNSWatch (adpater l'URL à votre cas) :

http://www.dnswatch.info/dns/dnslookup?la=en&host=default._domainkey.mondomaine.com&type=TXT&submit=Resolve

et ProtoDave (dans le champ sélecteur, si vous avez utilisé le même que dans mes captures d'écran, mettez default).

Ceci permet par exemple de diagnostiquer des soucis tels que le suivant (bon là le sélecteur est phpmailer, faites pas attention) : « Unable to properly parse the public key string and determine key length or the key is invalid »

DKIM impossible à parser

La cause ? Le fichier contenant la clé publique l'affiche avec des retour-lignes, or il ne faut surtout pas de retour-lignes… Dans notre cas deux retour-lignes sont restés. La clé ne peut donc pas être parsée… Iil faut retourner dans la zone DNS et les supprimer (ainsi que les guillemets en trop)

Déliverabilité du mail

Et pour tester les chances que son mail a de passer les filtres anti-spams : Mail tester.

Karine SANCHE

Partager cet article