Un serveur de mail complet et moderne (part. 2)

Rédigé par citizenz - - 2 commentaires
Il y a quelques temps, je vous proposais un tuto pour mettre en place un serveur de mail avec la plupart des fonctionnalités classiques (webmail, antispam avec Rpsamd, etc.)
Suite à de nombreuses demandes, questions, etc., je vous propose dans cette partie 2 de configurer votre zone DNS de manière plus précise afin d'éviter certains désagréments dus à une mauvaise configuration (Dmarc, SPF, DKIM, ...)

Complément sur la configuration de votre zone DNS.

L'étape de la configuration de la zone DNS est très importante. Outre le champ MX qui doit déjà être en place (nous n'y reviendrons pas ici) vous devrez en effet configurer 3 entrées DNS et configurer votre reverse DNS afin d'avoir un serveur de mail bien configuré et qui n'envoie pas vos mails dans le dossier spam de vos destinataires par exemple...

1/ DKIM
DKIM signifie DomainKey Identified Mail.
Il s’agit d’une norme d’authentification qui fait son chemin sur Internet et qui permet de réduire le spam et le hameçonnage (phishing).
Le principe est de faire signer numériquement, grâce à des méthodes cryptographiques, un e-mail sortant.
De ce fait, on authentifie le serveur comme étant l’émetteur légitime du mail, puisque c’est lui qui le signe. En définitive, pour chaque mail reçu par un hôte, il y a un responsable de l’envoi qui l’a signé.
Le retrouver et lui indiquer qu’il envoie du spam est donc très aisé. Tout envoi de mail sera donc concerné par cette signature.

Chez votre registrar, dans la console de gestion des noms de domaines (DNS zones), il vous faudra créer une entrée DNS de type DKIM comme suit (avec un sous-domaine mail._domainkey) :

mail._domainkey  DKIM  v=DKIM1;k=rsa;s=email;p=MON_ENORME_CLE_QUELLE_EST_TRES_LONGUE;t=s;

Vous retrouverez toutes les infos dans /var/lib/rspamd/dkim/mail.pub, fichier créé à l'étape 27 du précédent tuto, notamment la longue clé, "découpée" en deux morceaux, séparée par des guillemets, qu'il vous faudra rassembler. Ca ressemble à ça :
mail._domainkey IN TXT ( "v=DKIM1; k=rsa; "
        "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3HwMPDBcu+vPQMmb1dUyhixQu7ai4jiok5x8E/ho3GQQ23p7zPt3QLpJjx8jk4oXDHT1xNCZiBCyJx+uXu2P3BU3P1tp6Za5q8D4bpOeL5Z/SWZ7ITKxEasSpsovbgB+6ddH3Bm0GFD1/MUOfYaVzcOatKjwYuEv38UJKZiDCIUKCiGL9xKfgfLxUuIHXyGZqCeqPEometLof+nl5"
        "g8DtDjX+6BcIWhJro3pcecbE8SCkme&sRsrMAtdOydTb2iHDmG/z1l7Mdu8PIQI1hGiKeQjGUIem7atV0jdAx/Qk3SM+tc12V7sh8SxWOBeSTAbtFx6OfM2ks9PslOrWS7nawIDAQAB"
) ;

Vous pouvez tester votre configuration Dkim ici : https://www.appmaildev.com/fr/dkim

Sur la console OVH :


2/ SPF
SPF est un moyen mis en oeuvre au niveau sécurité pour éviter le spam et le hameçonnage.
Il s’agit du Sender Policy Framework qui vérifie que le domaine expédiant un e-mail autorise bien un serveur à le faire.
Chaque domaine va donc avoir un (ou plusieurs) enregistrement SPF pour désigner le ou les serveurs légitimes qu’il autorise à envoyer des e-mails.
Si un serveur destinataire obtient un e-mail dont l’IP émettrice n’est pas renseignée par l’enregistrement SPF du domaine pourra être considéré comme du spam.

Il vous faudra donc créer une entrée DNS de type TXT comme suit :
TXT     "v=spf1 ip4:VOTRE_IPV4 ip6:VOTRE_IPV6 ~all"

Le fait de mettre l'IPV6 ici corrige un problème avec l'envoi de mails vers Gmail qui peuvent être considérés comme du spam sans cette configuration.

Console OVH :


3/ DMARC
DMARC, qui vient de l'anglais Domain-based Message Authentication, Reporting and Conformance, est une spécification technique créée par un groupe d'organisations qui souhaite aider à réduire l'usage abusif des e-mails, tels que le spam, le phishing, en proposant une solution de déploiement et de surveillance des problèmes liés à l'authentification des e-mails.

Il vous faudra créer une entrée de type TXT comme suit (avec un sous domaine _dmarc) - Nom de domaine à adapter bien évidemment... :
_dmarc   TXT     "v=DMARC1;p=quarantine;sp=quarantine;rua=mailto:;ruf=mailto:;pct=100;adkim=r;aspf=r;fo=1;ri=86400;rf=afrf"

Quelques explications trouvées sur le Net :
v         requis         Version de protocole    v=DMARC1

p         requis         Politique pour domaine  p=quarantine

sp      facultatif  Stratégie de récepteur de courrier demandé pour les sous-domaines. Indique la stratégie à appliquer par le récepteur à la demande du propriétaire du domaine. Elle s'applique uniquement aux sous-domaines du domaine interrogé et non au domaine lui-même. Sa syntaxe est identique à celle de la balise "p" définie ci-dessus. En cas d'absence, la politique spécifiée par la balise "p" DOIT être appliquée pour les sous-domaines.  sp=quarantine

rua     facultatif     Rapporter l’URL des rapports cumulés     rua=mailto:

ruf     facultatif     Les adresses auxquelles les informations légales spécifiques du message doivent être rapportées (liste d’URI en texte clair séparées par des virgules).     ruf=mailto:

pct     facultatif     % de messages soumis à un filtrage         pct=100

adkim     facultatif     Mode d’alignement pour DKIM             adkim=r

aspf     facultatif     Mode d’alignement pour SPF                 aspf=r

fo      facultatif  Permet aux opérateurs de messagerie de savoir que vous souhaitez recevoir des échantillons des messages qui ont échoué lors de la vérification SPF et/ou DKIM. Utilisez 0 pour recevoir un rapport en cas d'échec des   vérifications SPF et DKIM. (par défaut), Utilisez 1 pour recevoir un rapport en cas d'échec des vérifications SPF ou DKIM. (recommandé) fo=1

ri      facultatif  Intervalle demandé entre les rapports agrégés. Indique une demande adressée aux récepteurs pour générer des rapports agrégés séparés d'au plus le nombre de secondes demandé. Les implémentations DMARC DOIVENT être en mesure de fournir des rapports quotidiens et DEVRAIENT être en mesure de fournir des rapports horaires sur demande. Cependant, tout ce qui n'est pas un rapport quotidien doit être pris en compte au mieux.  ri=86400

rf         facultatif     Format à utiliser pour les rapports d’informations légales spécifiques du message (liste de valeurs en texte clair séparées par des virgules).     rf=afrf

Spécification à retrouver ici : https://dmarc.org//draft-dmarc-base-00-01.html#iana_dmarc_tags
Autre base d'infos, en français : https://www.dmarcanalyzer.com/fr/comment-creer-un-dmarc-record/

Console OVH :


4/ Reverse DNS
N'oubliez pas enfin de configurer votre reverse DNS, chez votre hébergeur (Hetzner, Scaleway, Online, ...). Ces "prestataires" proposent tous de configurer le reverse DNS de votre serveur via la console de gestion.
Mettez-y votre nom de domaine fqdn (exemple : mail.example.com)

5/ Testez votre serveur de mail
Pour tester ? Rendez-vous sur http://www.mail-tester.com/
Envoyez un mail (avec un titre et un corps de mail bateau, mettez ce que vous voulez ça n'a aucune importance) à l'adresse de test indiquée, attendez quelques instant et relevez votre note.
10/10 c'est parfait. Une note inférieure ? Il y a des corrections à apporter à votre configuration. Regardez le détail des erreurs pour chaque partie. Et adaptez votre configuration.

Vous pouvez aussi tester votre "qualité de mail" sur ce site : https://mxtoolbox.com/domain


On en discute ici (salon Discord) , si vous voulez...


P.S. :
avec la config DMARC utilisée ci-dessus, vous allez recevoir régulièrement des "rapports de domaine" de Google.com (adresse : noreply-dmarc-support@google.com).
Ceci est dû au fait d'avoir configuré l'option : rua=mailto:
Il s'agit en fait d'un ensemble de règles conçu pour vous informer de la qualité des e-mails reçus de votre domaine.
Donc c'est NORMAL :)
Par contre, ce mail ne vous arrivera pas si vous n'avez pas d'adresse , adresse théoriquement créée, par défaut, par Postfixadmin...
Une autre solution est de n'avoir qu'une seule adresse de type et de configurer un alias "catch-all" dans Postfixadmin (à suivre...).


CitizenZ : Geek quadra nivernais
fan d'ovalie, de musique, de linuxeries et de Net !

À lire également

2 commentaires

#1  - Emilia Parry a dit :

Pour tester votre «qualité de messagerie», vous pouvez également vous référer à
https://dnschecker.org/domain-health-checker.php
pour un test d'intégrité DNS complet, un test d'enregistrement MX, un test de liste noire d'enregistrements Mail (MX), un test de liste noire IP de domaine, un test DMARC, un test SMTP pour les enregistrements Mail et un test des enregistrements SPF.

Répondre
#2  - Julien a dit :

Bonjour,

J'ai fait un test avec mail-tester.com sur mes emails livrés avec sendy / Amazon SES et j'ai le résultat de 7.7/10. Pas mal mais je souhaiterai atteindre 10 pour mettre toutes les chances de mon coté.

Les points qui sont en orange ou rouge, sont les suivants. Ils concernent tous les filtres SpamAssassin :

-2.299 (red) URI_NO_WWW_INFO_CGI CGI in .info TLD other than third-level "www"
>>> C'est le point le plus important mais je ne comprend pas à quoi cela correspond. Savez-vous ?

-0.249 (orange) HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different
>>> Je ne suis pas certain non plus pour celle-ci. J'ai l'impression qu'un des from est mon domaine alors que l'autre est celui d'Amazon (comme cela est basé sur SES) sans en être certain. Qu'en pensez-vous ?

-0.1 (orange) DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid
>>> Que pensez-vous de celui-ci ? J'ai pourtant implémenté SPF, DKIM et DMARC donc je ne sais pas quoi faire de plus...

Merci pour votre aide smile

Répondre

Fil RSS des commentaires de cet article

Écrire un commentaire

 Se rappeler de moi sur ce site
Quelle est la dernière lettre du mot z5f8n ?