Ceci est une ancienne révision du document !
Partie 4 : SPF, DMARC et DKIM
En cours de rédaction
Expliquer ce qu'est SPF et DMARC.
Pour SPF, ajoutez une entrée DNS type TXT :
v=spf1 mx ip4:adresseIPV4 ip6:adresseIPV6 ~all
Pour DMARC, ajoutez une entrée DNS type TXT _dmarc :
"v=DMARC1; p=reject; rua=mailto:postmaster@domaine.fr; ruf=mailto:admin@domaine.fr; fo=0:1:d:s; adkim=s; aspf=s; sp=reject"
Il faut également que Postfix vérifie le SPF des mails que l'on reçoit afin de se protéger en partie des spams. Installez postfix-policyd-spf-python :
sudo aptitude install postfix-policyd-spf-python
Ouvrez le fichier /etc/postfix/master.cf et ajoutez la ligne suivante afin que Postfix démarre le programme policyd-spf au démarrage :
policyd-spf unix - n n - 0 spawn user=policyd-spf argv=/usr/bin/policyd-spf
Ouvrez le fichier /etc/postfix/main.cf at ajoutez les lignes suivantes :
policyd-spf_time_limit = 3600 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_rbl_client zen.spamhaus.org, check_policy_service unix:private/policyd-spf
Ces lignes servent à éviter que n'importe qui puisse envoyer des mails via notre serveur et également de rejeter les mails qui ne sont pas adressés à notre domaine. Permit_mynetworks et permit_sasl_authenticated autorisent le serveur et les clients authentifiés à envoyer des mails. Reject_unauth_destination rejette les connexions provenant d'un client non authentifié ainsi que les mails non adressés à notre domaine. Reject_rbl_client zen.spamhaus.org rejette les connexions provenant d'IP/nom de domaine listés dans la liste spamhaus. Check_policy_service unix:private/policyd-spf active la vérification de SPF pour les mails entrants.
Expliquer ce qu'est DKIM.
Installez opendkim :
sudo aptitude install opendkim opendkim-tools
Ouvrez le fichier /etc/opendkim.conf. Décommentez les lignes
#Mode sv #SubDomains no
Mode sv active la vérification pour les mails entrant et la signature pour les mails sortant et subdomains no désactive la gestion des sous-domaines.
Commentez la ligne Socket local:/run/opendkim/opendkim.sock et décommentez la ligne Socket inet:8891@localhost. Cela va servir à faire communiquer OpenDKIM avec Postfix.
Ajoutez les lignes suivantes à la fin du fichier :
# Map domains in From addresses to keys used to sign messages KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable # Hosts to ignore when verifying signatures ExternalIgnoreList /etc/opendkim/TrustedHosts # A set of internal hosts whose mail should be signed InternalHosts /etc/opendkim/TrustedHosts
Ces lignes indiquent à OpenDKIM les fichiers dont on va se servir pour configurer DKIM.
On enregistre et on créé le dossier qui contiendra les clés privées (une par nom de domaine) :
sudo mkdir -p /etc/opendkim/keys
Modifier le propriétaire et les droits de ce répertoire afin que seul l'utilisateur opendkim y ai accès :
sudo chown -R opendkim:opendkim /etc/opendkim sudo chmod 711 -R /etc/opendkim/keys
Créer fichier /etc/opendkim/TrustedHosts et y mettre
127.0.0.1 localhost .domaine.fr
Créer fichier /etc/opendkim/KeyTable et mettre dedans :
default._domainkey.domaine.fr domaine.fr:default:/etc/opendkim/keys/example.com/default.private
Ça indique où est située la clé privé
Créer fichier /etc/opendkim/SigningTable et mettre dedans :
*@domaine.fr default._domainkey.domaine.fr *@*.domaine.fr default._domainkey.domaine.fr
Ces deux lignes indiquent que lorsqu'un mail sera envoyé depuis votre domaine ou sous-domaine (seconde ligne) il devra être signé avec la clé privé identifiée par default._domainkey.domaine.fr
Dans répertoire /etc/opendkim/keys/ créez un répertoire domaine.fr :
sudo mkdir /etc/opendkim/keys/domaine.fr
Lancez la commande suivante pour générer les clés :
sudo opendkim-genkey -b 2048 -s default -d domaine.fr -D /etc/opendkim/keys/domaine.fr
Cela va créer deux clés 2048 bits, une privée et une publique, pour le domaine domaine.fr avec default comme sélecteur.
Une fois les clés créés, changer le propriétaire avec la commande :
sudo chown opendkim:opendkim /etc/opendkim/keys/domaine.fr/default.private
Puis changez les permissions afin que seul l'utilisateur opendkim y ai accès :
sudo chmod 640 /etc/opendkim/keys/domaine.fr/default.private
Récupérez le contenu de la clé publique :
sudo cat /etc/opendkim/keys/domaine.fr/default.txt
Ajoutez ce contenu dans le fichier de zone de bind (/etc/bind/pri.domaine.fr par exemple) en supprimant le “IN” et incrémentez le serial pour que la mise à jour soit prise en compte.
Dans /etc/postfix/main.cf ajouter à la fin les lignes suivantes pour que Postfix puisse appeler OpenDKIM :
#DKIM milter_protocol = 6 milter_default_action = accept smtpd_milters = inet:localhost:8891 non_smtpd_milters = $smtpd_milters
Redémarrer Postfix et OpenDKIM
Vous pouvez tester votre configuration sur https://www.mail-tester.com/