# DKIM ##### Notes : * Ceci est la deuxième version de ce travail en cours concernant l'activation de [DKIM](https://fr.wikipedia.org/wiki/DomainKeys_Identified_Mail) et [SPF](https://fr.wikipedia.org/wiki/Sender_Policy_Framework) dans YunoHost. * Le DKIM et le SPF empêche le fait que des courriels puissent être envoyer avec votre nom de domaine à partir d’un autre serveur que le serveur légitime. Ceci évite le spam. * En attendant que tout ceci soit intégré nativement dans YunoHost, cela nécessitera une modification de la configuration de Postfix dans `/etc/postfix/main.cf`. * Pour fonctionner correctement, DKIM nécessite une modification de votre [zone DNS](/dns_config_fr). N'oubliez pas que la propagation de l'information DNS une fois modifiée peut prendre jusqu'à 24h ! ##### Sources : * Ce document a été initialement basé sur : http://sealedabstract.com/code/nsa-proof-your-e-mail-in-2-hours/ de Drew Crawford. * Cette 2ème révision s'appuie beaucoup sur : https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy from Popute Sebastian Armin Dans la suite de ce document, replacez `DOMAIN.TLD` par votre propre nom de domaine. Changement dans la 2nd révision : * La configuration s'adapte très facilement à plusieurs noms de domaines simultanés. * Mise à jour des paramètres de configuration avec la dernière version de OpenDKIM disponible dans Debian 7. Rentrons maintenant dans le cœur du sujet : ### Avec un script Utiliser un script tout fait et répondez aux questions : ```bash git clone https://github.com/polytan02/yunohost_auto_config_basic cd yunohost_auto_config_basic sudo ./5_opendkim.sh ``` ### À la main On commence par installer les logiciels : ```bash sudo aptitude install opendkim opendkim-tools ``` Ensuite on configure openDKIM : ```bash sudo nano /etc/opendkim.conf ``` Texte à insérer dans le document : ```bash AutoRestart Yes AutoRestartRate 10/1h UMask 022 Syslog yes SyslogSuccess Yes LogWhy Yes Canonicalization relaxed/simple ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable Mode sv PidFile /var/run/opendkim/opendkim.pid SignatureAlgorithm rsa-sha256 UserID opendkim:opendkim Socket inet:8891@127.0.0.1 Selector mail ``` On connecte ensuite le milter à Postfix : ```bash sudo nano /etc/default/opendkim ``` Texte à insérer dans le document : ```bash SOCKET="inet:8891@localhost" ``` Configurer Postfix pour utiliser ce milter : ```bash sudo nano /etc/postfix/main.cf ``` Texte à insérer à la fin du document : ```bash # OpenDKIM milter milter_protocol = 2 milter_default_action = accept smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = inet:127.0.0.1:8891 ``` Créer la structure de dossiers qui contiendra la clé, les hôtes connues et quelques tableaux de données : ```bash sudo mkdir -pv /etc/opendkim/keys/DOMAIN.TLD ``` On précise les hôtes de confiance : ```bash sudo nano /etc/opendkim/TrustedHosts ``` Texte à insérer dans le document : ```bash 127.0.0.1 localhost 192.168.0.1/24 *.DOMAIN.TLD ``` Créer le tableau des clés : ```bash sudo nano /etc/opendkim/KeyTable ``` (Texte à insérer dans le document : faites très attention, ça doit rester ** sur une seule ligne ** pour chaque nom de domaine) mail._domainkey.DOMAIN.TLD DOMAIN.TLD:mail:/etc/opendkim/keys/DOMAIN.TLD/mail.private Créer un tableau des signatures : ```bash sudo nano /etc/opendkim/SigningTable ``` Texte à insérer dans le document : ```bash *@DOMAIN.TLD mail._domainkey.DOMAIN.TLD ``` Maintenant on peut générer nos clés ! ```bash sudo cd /etc/opendkim/keys/DOMAIN.TLD sudo opendkim-genkey -s mail -d DOMAIN.TLD ``` On affiche les paramètres DNS de DKIM générés par opendkim dans le terminal. Ensuite, on installera la clé DKIM dans notre DNS. Ma zone DNS ressemble à l'exemple ci-dessous. (Faites très attention à la casse, le "p=...." doit rester sur une seule ligne dans le DNS et pas sur plusieurs, sinon cela ne sera pas accepté ni reconnu) ```bash cat mail.txt ``` ```bash mail._domainkey IN TXT "v=DKIM1; k=rsa; p=AAAKKUHGCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPFrBM54eXlZPXLJ7EFphiA8qGAcgu4lWuzhzxDDcIHcnA/fdklG2gol1B4r27p87rExxz9hZehJclaiqlaD8otWt8r/UdrAUYNLKNBFGHJ875467jstoAQAB" ; ----- DKIM key mail for DOMAIN.TLD ``` Et surtout, on oublie pas de donner les bons droit d'accès à opendkim aux fichiers créés par root... ```bash chown -Rv opendkim:opendkim /etc/opendkim* ``` Et enfin, on redémarre le tout : ```bash sudo service opendkim restart sudo service postfix restart ``` Pour tester que tout fonctionne bien (n'oubliez pas que la propagation DNS peut prendre jusqu'à 24h...) vous pouvez tout simplement vous rendre sur [mail-tester.com](http://www.mail-tester.com/), envoyer un courriel à l'adresse indiquée et cliquer pour voir le résultat. # SPF Enfin, n'oubliez pas d'ajouter une clé SPF dans votre [zone DNS](/dns_config_fr) (ou un champ TXT si SPF n'est pas disponible) : ```bash DOMAIN.TLD 1800 TXT "v=spf1 a:DOMAIN.TLD ip4: ip6: mx ?all" ``` Pour rappel, le champ SPF indique que seule la machine utilisant l'adresse IP indiquée dans votre zone DNS est autorisée à envoyer des courriels. Si vous n'avez pas d'IPv6 sur votre serveur, supprimez simplement la section ip6:<…>