doc/dkim_fr.md

168 lines
5.6 KiB
Markdown
Raw Normal View History

2015-02-08 18:37:27 +01:00
# DKIM
2015-01-28 14:12:08 +01:00
2016-01-30 22:00:44 +01:00
Le protocole SMTP ne prévoit pas de mécanisme de vérification de lexpéditeur. Il est donc possible denvoyer un courrier avec une adresse dexpéditeur factice ou usurpée. SPF et DKIM sont deux méchanismes dauthentification de lexpéditeur dun email.
2015-10-02 17:04:04 +02:00
#### Notes :
2015-01-28 14:12:08 +01:00
2016-01-30 22:00:44 +01:00
* Ceci est la deuxième version de ce travail en cours concernant lactivation de [DKIM](https://fr.wikipedia.org/wiki/DomainKeys_Identified_Mail) et [SPF](https://fr.wikipedia.org/wiki/Sender_Policy_Framework) dans YunoHost.
2015-06-28 12:32:36 +02:00
* Le DKIM et le SPF empêche le fait que des courriels puissent être envoyer avec votre nom de domaine à partir dun 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`.
2016-01-30 22:00:44 +01:00
* Pour fonctionner correctement, DKIM nécessite une modification de votre [zone DNS](/dns_config_fr). Noubliez pas que la propagation de linformation DNS une fois modifiée peut prendre jusqu'à 24h !
2015-01-28 14:12:08 +01:00
2015-10-02 17:04:04 +02:00
#### Sources :
2015-06-28 12:32:36 +02:00
* Ce document a été initialement basé sur : http://sealedabstract.com/code/nsa-proof-your-e-mail-in-2-hours/ de Drew Crawford.
2016-01-30 22:00:44 +01:00
* Cette 2ème révision sappuie beaucoup sur : https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy from Popute Sebastian Armin
2015-01-28 14:12:08 +01:00
2015-06-28 12:32:36 +02:00
Dans la suite de ce document, replacez `DOMAIN.TLD` par votre propre nom de domaine.
2015-01-28 14:12:08 +01:00
2015-06-28 12:32:36 +02:00
Changement dans la 2nd révision :
2015-01-28 14:12:08 +01:00
2016-01-30 22:00:44 +01:00
* La configuration sadapte très facilement à plusieurs noms de domaines simultanés.
2015-06-28 12:32:36 +02:00
* Mise à jour des paramètres de configuration avec la dernière version de OpenDKIM disponible dans Debian 7.
2015-01-28 14:12:08 +01:00
2015-02-08 18:37:27 +01:00
Rentrons maintenant dans le cœur du sujet :
2015-02-08 20:12:17 +01:00
### Avec un script
Utiliser un script tout fait et répondez aux questions :
```bash
git clone https://github.com/polytan02/yunohost_auto_config_basic
2015-04-22 21:10:14 +02:00
cd yunohost_auto_config_basic
sudo ./5_opendkim.sh
2015-02-08 20:12:17 +01:00
```
2015-01-28 14:12:08 +01:00
2015-04-22 21:10:14 +02:00
### À la main
2015-02-08 18:37:27 +01:00
On commence par installer les logiciels :
```bash
sudo aptitude install opendkim opendkim-tools
```
Ensuite on configure openDKIM :
```bash
2015-01-28 14:12:08 +01:00
sudo nano /etc/opendkim.conf
2015-02-08 18:37:27 +01:00
```
2015-01-28 14:12:08 +01:00
2015-02-08 18:37:27 +01:00
Texte à insérer dans le document :
```bash
2015-01-28 14:12:08 +01:00
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
2015-02-08 18:37:27 +01:00
```
2015-01-28 14:12:08 +01:00
2015-02-08 18:37:27 +01:00
On connecte ensuite le milter à Postfix :
```bash
2015-01-28 14:12:08 +01:00
sudo nano /etc/default/opendkim
2015-02-08 18:37:27 +01:00
```
2015-01-28 14:12:08 +01:00
2015-02-08 18:37:27 +01:00
Texte à insérer dans le document :
```bash
2015-01-28 14:12:08 +01:00
SOCKET="inet:8891@localhost"
2015-02-08 18:37:27 +01:00
```
2015-01-28 14:12:08 +01:00
2015-02-08 18:37:27 +01:00
Configurer Postfix pour utiliser ce milter :
```bash
2015-01-28 14:12:08 +01:00
sudo nano /etc/postfix/main.cf
2015-02-08 18:37:27 +01:00
```
2015-01-28 14:12:08 +01:00
2015-02-08 18:37:27 +01:00
Texte à insérer à la fin du document :
```bash
2015-02-08 20:12:17 +01:00
# OpenDKIM milter
2015-01-28 14:12:08 +01:00
milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = inet:127.0.0.1:8891
2015-02-08 18:37:27 +01:00
```
2015-01-28 14:12:08 +01:00
2015-02-08 18:37:27 +01:00
Créer la structure de dossiers qui contiendra la clé, les hôtes connues et quelques tableaux de données :
```bash
2015-01-28 14:12:08 +01:00
sudo mkdir -pv /etc/opendkim/keys/DOMAIN.TLD
2015-02-08 18:37:27 +01:00
```
2015-01-28 14:12:08 +01:00
2015-02-08 18:37:27 +01:00
On précise les hôtes de confiance :
```bash
2015-01-28 14:12:08 +01:00
sudo nano /etc/opendkim/TrustedHosts
2015-02-08 18:37:27 +01:00
```
2015-01-28 14:12:08 +01:00
2015-02-08 18:37:27 +01:00
Texte à insérer dans le document :
```bash
2015-01-28 14:12:08 +01:00
127.0.0.1
localhost
192.168.0.1/24
2015-02-08 18:37:27 +01:00
*.DOMAIN.TLD
```
2015-01-28 14:12:08 +01:00
2015-02-08 18:37:27 +01:00
Créer le tableau des clés :
```bash
2015-01-28 14:12:08 +01:00
sudo nano /etc/opendkim/KeyTable
2015-02-08 18:37:27 +01:00
```
2015-01-28 14:12:08 +01:00
2015-02-08 18:37:27 +01:00
(Texte à insérer dans le document : faites très attention, ça doit rester ** sur une seule ligne ** pour chaque nom de domaine)
2015-01-28 14:12:08 +01:00
mail._domainkey.DOMAIN.TLD DOMAIN.TLD:mail:/etc/opendkim/keys/DOMAIN.TLD/mail.private
2015-02-08 18:37:27 +01:00
Créer un tableau des signatures :
```bash
2015-01-28 14:12:08 +01:00
sudo nano /etc/opendkim/SigningTable
2015-02-08 18:37:27 +01:00
```
2015-01-28 14:12:08 +01:00
2015-02-08 18:37:27 +01:00
Texte à insérer dans le document :
```bash
2015-01-28 14:12:08 +01:00
*@DOMAIN.TLD mail._domainkey.DOMAIN.TLD
2015-02-08 18:37:27 +01:00
```
2015-01-28 14:12:08 +01:00
2015-02-08 18:37:27 +01:00
Maintenant on peut générer nos clés !
```bash
2015-01-28 14:12:08 +01:00
sudo cd /etc/opendkim/keys/DOMAIN.TLD
sudo opendkim-genkey -s mail -d DOMAIN.TLD
2015-02-08 18:37:27 +01:00
```
2015-01-28 14:12:08 +01:00
2015-02-08 18:37:27 +01:00
On affiche les paramètres DNS de DKIM générés par opendkim dans le terminal.
2016-01-30 22:00:44 +01:00
Ensuite, on installera la clé DKIM dans notre DNS. Ma zone DNS ressemble à lexemple ci-dessous.
2015-02-08 18:37:27 +01:00
(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
2015-01-28 14:12:08 +01:00
cat mail.txt
2015-02-08 18:37:27 +01:00
```
2015-01-28 14:12:08 +01:00
2015-02-08 18:37:27 +01:00
```bash
2015-01-28 14:12:08 +01:00
mail._domainkey IN TXT "v=DKIM1; k=rsa; p=AAAKKUHGCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPFrBM54eXlZPXLJ7EFphiA8qGAcgu4lWuzhzxDDcIHcnA/fdklG2gol1B4r27p87rExxz9hZehJclaiqlaD8otWt8r/UdrAUYNLKNBFGHJ875467jstoAQAB" ; ----- DKIM key mail for DOMAIN.TLD
2015-02-08 18:37:27 +01:00
```
2015-01-28 14:12:08 +01:00
2016-01-30 22:00:44 +01:00
Et surtout, on oublie pas de donner les bons droit daccès à opendkim aux fichiers créés par root...
2015-02-08 18:37:27 +01:00
```bash
2015-01-28 14:12:08 +01:00
chown -Rv opendkim:opendkim /etc/opendkim*
2015-02-08 18:37:27 +01:00
```
2015-01-28 14:12:08 +01:00
2015-02-08 18:37:27 +01:00
Et enfin, on redémarre le tout :
```bash
2015-01-28 14:12:08 +01:00
sudo service opendkim restart
sudo service postfix restart
2015-02-08 18:37:27 +01:00
```
2015-01-28 14:12:08 +01:00
2016-01-30 22:00:44 +01:00
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 à ladresse indiquée et cliquer pour voir le résultat.
2015-06-28 12:32:36 +02:00
# SPF
2016-01-30 22:00:44 +01:00
Enfin, noubliez pas dajouter une clé SPF dans votre [zone DNS](/dns_config_fr) (ou un champ TXT si SPF nest pas disponible) :
2015-06-28 12:32:36 +02:00
2015-06-28 13:29:37 +02:00
```bash
DOMAIN.TLD 1800 TXT "v=spf1 a:DOMAIN.TLD ip4:<IPv4 publique du serveur> ip6:<IPv6 publique> mx ?all"
```
2016-01-30 22:00:44 +01:00
Pour rappel, le champ SPF indique que seule la machine utilisant ladresse IP indiquée dans votre zone DNS est autorisée à envoyer des courriels.
Si vous navez pas dIPv6 sur votre serveur, supprimez simplement la section ip6:<…>