Phpmailer – envoyer des mails signés avec DKIM

Vous disposez de votre site web, développé en PHP, et vous souhaitez authentifier vos emails avec une signature DKIM. Quoi de plus légitime ? En plus du SPF, cela évitera à vos emails de finir classés comme SPAM.

Contexte

Je vous présente ici un paramétrage réalisé pour le site https://espace-monnaies.fr. Ce site est hébergé sur un serveur privé virtuel OVH (VPS), et les mails sont gérés par Gmail.

 

Postfix

Sur notre serveur web (que je suppose déjà fonctionnel), le seul paquet pré-requis pour la partie mails est postfix.

Je ne m’attarde pas sur sa configuration, cela va dépendre de comment vous gérez les mails de votre domaine.

 

PHPMailer

Si vous n’utilisez pas encore cette classe opensource, je vous la recommande vivement. Bien entendu, elle gère la signature DKIM qui nous intéresse dans cet article.

Lien vers le dépôt phpmailer

Pensez à inclure la classe dans votre fichier PHP (adaptez le chemin en fonction de votre arborescence).

Pour envoyer un email, vous devez procéder ainsi (sans parler de DKIM)

Générer un couple clé privée / publique

DKIM se basant sur une signature par clé, il faut en générer une. Cela se fait en 2 petites commandes. Nous allons au préalable nous placer dans un dossier ou nous stockerons nos clés.

Vous devriez trouver vos clés dans le dossier /var/dkim/ (ou un autre dossier de votre choix).

 

Signer les mails en PHP

Modifions maintenant notre code PHP en activant la signature DKIM. Pensez à remplacer monsite.com par votre domaine.

A noter : dans selector, j’ai renseigné « mail ». C’est important pour configurer notre domaine. Vous pouvez remplacer par tout autre mot, mais pensez alors à le modifier dans les prochaines manipulations.

 

Configuration du domaine

Les enregistrements DNS du domaine doivent être modifiés. Connectez vous sur l’espace de gestion de votre domaine (dans mon cas chez OVH > Espace client).

Ajoutez un champ « DKIM » (si pas proposé chez votre hébergeur, prendre TXT) et renseignez les champs tel que sur l’image.

Ici, on revient à notre selector. J’avais mis comme valeur « mail ». Je renseigne donc en sous domaine mail._domainkey. De manière plus générale, l’annotation est selector._domainkey

Pour la clé publique / valeur, vous devez ouvrir le fichier /var/dkim/dkim.public, copier la clé sans BEGIN PUBLIC KEY et END PUBLIC KEY, le tout ramené sur une seule ligne. Ne modifiez pas le fichier dkim.public, travaillez sur une copie ou ne l’enregistrez pas…

Si vous avez du prendre un champ de type TXT, saisir en valeur

suivi de la clé publique.

 

Vous devriez vous retrouver avec un nouvel enregistrement DNS tel que celui-ci.

 

Bravo, vous en avez terminé avec le paramétrage. A noter que la propagation des DNS peut prendre jusqu’à 48 heures.

 

Pour tester votre paramétrage, envoyer vous un mail sur une boite mail (ici gmail) et regardez le résultat.

Un commentaire

Laisser un commentaire