Outils pour utilisateurs

Outils du site


services:dkim

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
services:dkim [Tue Apr 19 21:20:54 2011]
elessar ADSP
services:dkim [Sat Jun 4 16:51:48 2016] (Version actuelle)
samael Orthographe
Ligne 35: Ligne 35:
 ==== Politique de signature ==== ==== Politique de signature ====
  
-Un nom de domaine peut publier une politique de signature ADSP, qui indique la façon dont il utilise DKIM, en précisant par exemple que tous les messages sont censés être signés, voire même que les messages non signés ou avec une signature incorrecte doivent être jetés. Une telle politique se publient ​dans le DNS au moyen d'un enregistrement de type ''​TXT'',​ par exemple :+Un nom de domaine peut publier une politique de signature ADSP, qui indique la façon dont il utilise DKIM, en précisant par exemple que tous les messages sont censés être signés, voire même que les messages non signés ou avec une signature incorrecte doivent être jetés. Une telle politique se publie ​dans le DNS au moyen d'un enregistrement de type ''​TXT'',​ par exemple :
 <​code>​_adsp._domainkey.example.com. TXT "​dkim=all"</​code>​ <​code>​_adsp._domainkey.example.com. TXT "​dkim=all"</​code>​
  
Ligne 47: Ligne 47:
     * **''​discardable''​** les messages non signés ou avec une signature incorrecte peuvent être jetés.     * **''​discardable''​** les messages non signés ou avec une signature incorrecte peuvent être jetés.
  
 +==== Exemple ====
 +
 +Voici le genre de requêtes DNS faites par le serveur SMTP destinataire pour récupérer la clef publique de l'​émetteur et sa politique (en supposant que le courriel est issu du domaine ''​example.com''​ :
 +
 +<​code>​
 +# dig default._domainkey.example.com TXT
 +;; ANSWER SECTION:
 +default._domainkey.example.com. 10800 IN TXT    "​v=DKIM1\;​ k=rsa\; p=MIGfMA0GCS…wIDAQAB"​
 +
 +# dig _adsp._domainkey.example.com TXT
 +;; ANSWER SECTION:
 +_adsp._domainkey.example.com. 10800 IN  TXT     "​dkim=all"​
 +</​code>​
 +
 +Avant la mise en place d'une politique DKIM, les serveurs SMTP qui recoivent un courriel du domaine example.com ajouteront cet en-tête au courriel :
 +
 +<​code>​
 +Authentication-Results:​ smtp.destinataire.example.org ​ from=example.com;​
 +domainkeys=neutral (no sig);  from=example.com;​ **dkim=neutral** (no sig)
 +</​code>​
 +
 +Après la mise en œuvre d'une politique DKIM :
 +
 +<​code>​
 +Authentication-Results:​ smtp.destinataire.example.org ​ from=example.com;​
 +domainkeys=neutral (no sig);  from=example.com;​ **dkim=pass** (ok)
 +</​code>​
 +
 +===== Mise en œuvre =====
 +
 +DKIM peut être utilisé de deux façons :
 +  * pour vérifier les signatures DKIM des messages reçus ;
 +  * pour signer les messages envoyés.
 +
 +Dans les deux cas, cela nécessite un module spécialisé de votre [[services:​courrier électronique#​serveur de courrier]]. Les implémentations de DKIM prennent généralement en charge ces deux modes ; je vous conseille [[http://​www.opendkim.org/​|OpenDKIM]] qui est l'​implémentation libre la plus avancée de DKIM : c'est un module [[wp>​milter]],​ qui peut s'​intégrer à la plupart des serveurs de courrier modernes.
 +
 +==== Intégrer OpenDKIM au serveur de courrier ====
 +
 +Installez OpenDKIM, vérifiez qu'il est bien lancé. La suite dépend de votre serveur de courrier.
 +
 +=== Postfix ===
 +
 +Le serveur SMTP de Postfix tourne souvent dans un //​[[wp>​chroot]]//​ :​ il faut configurer OpenDKIM pour qu'il écoute sur un socket à l'​intérieur de ce //chroot//. Sous Debian, cela se configure dans ''/​etc/​default/​opendkim''​ :​
 +<file bash opendkim>​SOCKET="​local:/​var/​spool/​postfix/​var/​run/​opendkim/​opendkim.sock"​ # Postfix'​ chroot</​file>​
 +
 +Après cela, créez le répertoire en question puis relancez OpenDKIM :
 +<​code>​
 +# install -o opendkim -g opendkim -d /​var/​spool/​postfix/​var/​run/​opendkim/​
 +# service opendkim restart
 +</​code>​
 +
 +Configurez enfin Postfix pour qu'il utilise OpenDKIM, dans ''/​etc/​postfix/​main.cf''​ :​
 +<file ini main.cf>
 +smtpd_milters = unix:/​var/​run/​opendkim/​opendkim.sock
 +non_smtpd_milters = unix:/​var/​run/​opendkim/​opendkim.sock
 +</​file>​
 +
 +Postfix chiffrera chaque courrier sortant et vérifiera la signature des courriers entrants, le tout en communiquant avec OpenDKIM par le socket que nous venons de définir. Ce rôle doit être joué pour le courrier soumis au démon smtpd ou celui envoyé par la commande sendmail, d'où les deux directives paramétrées dans la configuration de Postfix.
 +
 +Finalement, ajoutez Postfix au groupe d'​OpenDKIM pour qu'il ait le droit d'​écrire dans son //socket//, puis relancez-le :​
 +<​code>​
 +# adduser postfix opendkim
 +# service postfix restart
 +</​code>​
 +
 +==== Mettre en place votre clef DKIM ====
 +
 +=== Générer la paire de clefs ===
 +
 +Placez-vous dans un répertoire dédié, par exemple ''/​etc/​dkim/​example.com'',​ puis utilisez la commande ''​opendkim-genkey'',​ en l'​adaptant à votre propre nom de domaine :
 +<​code>​opendkim-genkey -d example.com</​code>​
 +
 +Cela créera deux fichiers :
 +  * **''​default.txt''​** est la clef publique, à publier dans votre zone DNS,
 +  * **''​default.private''​** est la clef privée, à conserver sur votre serveur qui l'​utilisera pour signer les messages envoyés.
 +
 +=== Configurer OpenDKIM ===
 +
 +OpendDKIM se configure dans le fichier ''/​etc/​opendkim.conf''​. Si vous n'​utilisez qu'un seul nom de domaine, la configuration sera assez simple :
 +<file - opendkim.conf>​
 +Domain ​                ​example.com
 +KeyFile ​               /​etc/​dkim/​example.com/​default.private
 +Selector ​              ​default
 +</​file>​
 +
 +Vérifiez qu'​OpenDKIM a accès au fichier de clef privée. Je vous conseille pour cela d'​autoriser sa lecture par le groupe ''​opendkim''​ :​
 +<​code>​
 +# chgrp opendkim /​etc/​dkim/​example.com/​default.private
 +# chmod 640 /​etc/​dkim/​example.com/​default.private
 +</​code>​
 +
 +Puis relancez OpenDKIM :
 +<​code>​
 +# service opendkim restart
 +</​code>​
 +
 +=== Essayer ===
 +
 +Avant de publier votre clef DKIM, essayez d'​envoyer un message vers une adresse externe. Une fois le message reçu, vérifiez qu'il contient bien un en-tête DKIM-Signature.
 +
 +=== Publier votre clef et votre politique DKIM ===
 +
 +Il ne vous reste plus qu'à publier votre enregistrement de clef publique — le contenu du fichier ''​default.txt''​ généré [[#​générer la paire de clefs|tout à l'​heure]] — dans votre zone DNS.
 +
 +Vous pouvez y ajouter un enregistrement de politique ADSP indiquant que tous vos messages sont censés être signés :
 +<​code>​_adsp._domainkey.example.com. TXT "​dkim=all"</​code>​
 +
 +=== Essayer ===
 +
 +Essayez maintenant d'​envoyer un message vers une adresse externe dont le serveur vérifie les signatures DKIM, par exemple chez Yahoo! ou Google. Une fois le message reçu, vérifiez le contenu de l'​en-tête ''​Authentication-Results''​ :​ il doit contenir « ''​dkim=pass''​ ».
 +
 +===== Signer les courriels pour plusieurs noms de domaine =====
 +
 +Si vous voulez signer les courriers pour plusieurs noms de domaine, la configuration mise en place précédemment devra un peu évoluer mais il ne suffira pas de dupliquer les lignes de configuration OpenDKIM. Il faudra plutôt remplacer la déclaration du domaine par une table référençant pour chaque domaine la clef privée à utiliser. Sachez qu'il existe plusieurs formats de tables décrits par le manuel opendkim(8). Voici simplement un exemple :
 +
 +<file - /​etc/​opendkim.conf>​
 +KeyTable ​    ​refile:/​etc/​dkim/​keytable
 +SigningTable refile:/​etc/​dkim/​signingtable
 +</​file>​
 +
 +<file - /​etc/​dkim/​keytable>​
 +default._domainkey.example.com example.com:​default:/​etc/​dkim/​example.com/​default.private
 +default._domainkey.example.org example.org:​default:/​etc/​dkim/​example.org/​default.private
 +</​file>​
 +
 +<file - /​etc/​dkim/​signingtable>​
 +*@example.com default._domainkey.example.com
 +*@example.org default._domainkey.example.org
 +</​file>​
 +
 +La création de la nouvelle clef privée, les droits à lui donner et la diffusion de la clef privée dans la zone du second nom de domaine ne change pas par rapport à ce qui a été expliqué plus tôt.
services/dkim.1303240854.txt.gz · Dernière modification: Tue Apr 19 21:20:54 2011 par elessar