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

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...).


Vus : 128
Publié par citizenz7 : 39