Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
sysadmin:dkim [2015/04/16 12:56]
james créée
sysadmin:dkim [2017/10/26 11:27] (Version actuelle)
james [Intégration postfix-opendkim] rectification droits clefs privées
Ligne 41: Ligne 41:
 SigningTable ​           refile:/​etc/​opendkim/​SigningTable SigningTable ​           refile:/​etc/​opendkim/​SigningTable
 </​code>​ </​code>​
-  * Génération de nos clefs : +===== Génération de nos clefs ===== 
-    * On commence par créer un répertoire pour chaque domaine/​sous domaine utilisé, comme par exemple pour domaine1.com et sous.domaine2.net :<​code>#​ mkdir -p /​etc/​opendkim/​keys/​domaine1.com/​+  * On commence par créer un répertoire pour chaque domaine/​sous domaine utilisé, comme par exemple pour domaine1.com et sous.domaine2.net :<​code>#​ mkdir -p /​etc/​opendkim/​keys/​domaine1.com/​
 # mkdir -p /​etc/​opendkim/​keys/​domaine2.net/​sous/</​code>​ # mkdir -p /​etc/​opendkim/​keys/​domaine2.net/​sous/</​code>​
-    * Concernant la génération de clefs je suggère de choisir une forme type SERVEUR-DATE où SERVEUR est le nom du serveur utilisant la clef et DATE est la date format US (YYYYMMDD) de génération de la clef : cela permet d'​ajouter facilement de nouvelles clefs, de nouveaux serveurs et de publier tout ça dans nos DNS sans risquer de problèmes avec les différents niveaux de cache (certains client peuvent continuer à demander une ancienne clef le temps de la propagation DNS)+Concernant la génération de clefs je suggère de choisir ​pour le //​selector// ​une forme type SERVEUR-DATE où SERVEUR est le nom du serveur utilisant la clef et DATE est la date format US (YYYYMMDD) de génération de la clef : cela permet d'​ajouter facilement de nouvelles clefs, de nouveaux serveurs et de publier tout ça dans nos DNS sans risquer de problèmes avec les différents niveaux de cache (certains client peuvent continuer à demander une ancienne clef le temps de la propagation DNS).
  
-TODO a continuer apres manger ​:-)+Les requetes DNS associées seront donc selector._domainkey.example.com"​ 
 +  * Génération des clefs par défaut une clef de 1024 bits sera générée, sinon on peut spécifier la longueur avec l'​option **-b**, comme par exemple -b 2048. On spécifie le //​selector//​ comme mentionné ci dessus, et le domaine avec **-d** ce qui nous donne :<​code>​ 
 +# opendkim-genkey -b 2048 -D /​etc/​opendkim/​keys/​domaine1.com/​ -s mx1-20150403 -d domaine1.com 
 +# opendkim-genkey -D /​etc/​opendkim/​keys/​domaine2.net/​sous/​ -s mx1-20150402 -d sous.domaine2.net</​code>​ 
 +Dans ce cas les selector sont donc mx1-20150403 pour domaine1.com et mx1-20150402 pour sous.domaine2.net. 
 +Ces commandes génèrent chacun 2 fichiers : un fichier **selector**.private et **selector**.txt contenant respectivement la clef privée et la clef publique qu'il faudra ensuite ajouter à la configuration DNS de votre domaine.
  
-  ​Paramétrage ​de nos domaines ​et notre infra +===== Intégration postfix-opendkim ===== 
-    * Créer le fichier **/​etc/​opendkim/​TrustedHosts** pour y ajouter les noms DNS et adresses IP à qui vous faites confiance pour envoyer des mails sans authentification,​ dans notre cas uniquement la machine locale :+  ​Donner le droit a l'​utilisateur faisant tourner le démon opendkim ​de lire ces clefs :<​code>​ 
 +# chgrp opendkim /​etc/​opendkim/​keys/​domaine1.com/​* 
 +# chmod g+r /​etc/​opendkim/​keys/​domaine1.com/​* 
 +# chgrp opendkim /​etc/​opendkim/​keys/​domaine2.net/​sous/​* 
 +# chmod g+r /​etc/​opendkim/​keys/​domaine2.net/​sous/​*</​code>​ 
 +  * Restreindre l'​acces aux clefs privées (sinon de toutes facons opendkim ne marchera pas :p ) : 
 +  * <​code>​ 
 +# chown opendkim:​opendkim /​etc/​opendkim/​keys/​domaine1.com/​*private 
 +# chmod 400 /​etc/​opendkim/​keys/​domaine1.com/​*private 
 +# chown opendkim:​opendkim /​etc/​opendkim/​keys/​domaine2.net/​sous/​*private 
 +# chmod 400 /​etc/​opendkim/​keys/​domaine2.net/​sous/​*private 
 +</​code>​ 
 +  * Dans le cas ou votre postfix tourne dans un chroot (debian/​ubuntu/​..),​ il faut créer le répertoire qui contiendra le socket de communication entre postfix ​et dkim :<​code>​ 
 +# mkdir -p /​var/​spool/​postfix/​var/​run/​opendkim/​ 
 +# chgrp opendkim /​var/​spool/​postfix/​var/​run/​opendkim/​ 
 +# chmod g+w /​var/​spool/​postfix/​var/​run/​opendkim/​ 
 +</​code>​ puis ajouter l'​utilisateur postfix au groupe opendkim :<​code>​ 
 +# adduser postfix opendkim</​code>​ 
 + 
 +===== Ajouter les clefs publiques aux zones DNS ===== 
 +Il faut ajouter le contenu du fichier **selector**.txt a la bonne zone DNS. Pour se faire si vous utilisez bind et qu'il tourne sur la même machine (fichiers de zone /​etc/​bind/​**domaine** :<​code>#​ cat /​etc/​opendkim/​keys/​domaine1.com/​mx1-20150403.txt >> /​etc/​bind/​domaine1.com</​code>​ 
 +<note important>​Pour un sous domaine, il faut légèrement modifier le contenu du fichier .txt en l'​ajoutant : SERVEUR-DATE._domainkey devient SERVEUR-DATE._domainkey.**sousdomaine**,​ donc dans notre exemple de sous.domaine2.net ​"​mx1-20150402._domainkey.sous"</​note>​ 
 +<​note>​Dans le cas ou vous avez utilisé une longueur de clef supérieur a 1024, cette ligne dépassera 255 caractères,​ ce qu'on ne peut faire : il faut donc découper cette ligne en plusieurs, cf http://​razzed.com/​2009/​03/​05/​dkim-txt-records-in-dns-exceeding-255-characters/​ : notre ajout sera de la forme : 
 +<​code>​mx1-20150403._domainkey IN TXT ( "​v=DKIM1;​ k=rsa; p=LeDebutde MaClefPubliqueQuiEstTellementLongueQuIlFautEnFaitLaSeparer............................................................"​ 
 +"​EtLaMettreSurUneDeuxiemeLigne.................................................. 
 +"​VoireMemeUneTroisiemeVuQuOnEstDesOUFS"​ )</​code>​ 
 +Il va sans dire que chacune des lignes ainsi obtenues doit faire moins de 255 caractères. 
 +</​note>​ 
 +Une fois ces modifications intégrées dans vos zones, il faudra comme d'​habitude incrémenter le numéro de série de vos zones et les recharger : **rndc reload** peut vous aider 
 + 
 +===== Paramétrage de nos domaines dans DKIM ===== 
 +  * Créer le fichier **/​etc/​opendkim/​TrustedHosts** pour y ajouter les noms DNS et adresses IP à qui vous faites confiance pour envoyer des mails sans authentification,​ dans notre cas uniquement la machine locale :<​code>​
 # cat << EOF > /​etc/​opendkim/​TrustedHosts # cat << EOF > /​etc/​opendkim/​TrustedHosts
 127.0.0.1 127.0.0.1
Ligne 56: Ligne 92:
  
 EOF EOF
 +</​code>​
 +<​note>​Ne pas oublier que **seuls les mails provenant des noms DNS/​adresses IPs contenues dans ce fichier seront effectivement signés (sans authentification préalable)** : il peut donc êre utile de faire coïncider le contenu de ce fichier avec le //​mynetworks//​ de votre postfix</​note>​
 +  * Créer le fichier **/​etc/​opendkim/​KeyTable** avec le contenu suivant : (adaptez les selector et le chemin des fichiers de clefs)<​code>​
 +key.for.domaine1.com domaine1.com:​mx1-20150403:/​etc/​opendkim/​keys/​domaine1.com/​mx1-20150403.private
 +key.for.sous.domaine2.net sous.domaine2.net:​mx1-20150402:/​etc/​opendkim/​keys/​domaine2.net/​sous/​mx1-20150402.private
 +</​code>​
 +<​note>​L'​utilisateur averti aura remarqué que chaque ligne est de la forme : <​code>​nom_donne_a_la_clef domaine:​selector:/​chemin/​complet/​vers/​clef.private</​code></​note>​
 +  * Enfin créer le fichier de concordance domaines/​clefs **/​etc/​opendkim/​SigningTable** reprenant les noms ci dessus :<​code>​
 +*@domaine1.com key.for.domaine1.com
 +*@sous.domaine2.net key.for.sous.domaine2.net
 +</​code>​
 +
 +  * Il ne reste plus qu'a redémarrer opendkim :<​code>#​ service opendkim restart</​code>​
 +  * On peut vérifier que le socket a bien été créé : <​code>​ls -l /​var/​spool/​postfix/​var/​run/​opendkim/</​code>​
 +
 +===== Paramétrage postfix pour utiliser DKIM =====
 +  * Attendre un moment le temps de la propagation DNS
 +  * Dans le doute attendre encore un moment de plus
 +  * Verifier au niveau de vos DNS que vos zones distribuent maintenant vos clefs publiques (sur votre DNS principal mais aussi les secondaires) :
 +<​code>​$ dig +short -t TXT mx1-20150403._domainkey.domaine1.com @::​1</​code>​ et <​code>​$ dig +short -t TXT mx1-20150402._domainkey.sous.domaine2.net</​code>​
 +  * Si tout va bien attendre encore un peu
 +  * Ajouter dans le fichier /​etc/​postfix/​main.cf :<​code>​
 +# dire a postfix de ne pas jeter le mail meme en cas d'​erreur de milter
 +milter_default_action = accept
 +
 +# dire a postfix de parler a opendkim en utilisant son socket (relatif au chroot s'il y a)
 +smtpd_milters = unix:/​var/​run/​opendkim/​opendkim.sock
 +non_smtpd_milters = unix:/​var/​run/​opendkim/​opendkim.sock
 +</​code>​
 +<​note>​Les lignes milters ci dessus sont valables si vous n'​aviez pas déja de milter défini : si c'​était le cas il suffit de les chaîner, comme par exemple :<​code>​
 +smtpd_milters = unix:/​spamass/​spamass.sock,​ unix:/​var/​run/​opendkim/​opendkim.sock
 +non_smtpd_milters = unix:/​spamass/​spamass.sock,​ unix:/​var/​run/​opendkim/​opendkim.sock
 +</​code>​
 +</​note>​
 +  * Il ne reste plus qu'a redémarrer postfix
 +<note important>​Si vous utilisez amavis quelques options sont à avoir absolument sans quoi vous allez passer deux fois dans opendkim : Dans le process de reinjection (en general 127.0.0.1:​10025) dans le fichier /​etc/​postfix/​master.cf : 
 +  * s'​assurer que l'​option receive_override_options contient bien **no_milters**
 +  * s'​assurer que l'​option **smtpd_milters** est presente avec une valeur vide
 +Tout ceci nous donne quelque chose comme : <​code>​
 +127.0.0.1:​10025 inet n    -       ​n ​      ​- ​      ​- ​    smtpd
 +     -o content_filter=
 +...
 +     -o receive_override_options=...,​...,​...,​no_milters
 +...
 +     -o smtpd_milters=
 +...
 +</​code>​
 +</​note>​
 +===== Vérification du fonctionnement =====
 +Pour vérifier le fonctionnement : 
 +  * cherchez les logs d'​opendkim dans vos logs de serveur mail
 +  * vérifiez dans les en-têtes de vos mails sortant qu'ils contiennent bien les infos DKIM
 +  * L'​extension [[https://​addons.mozilla.org/​fr/​thunderbird/​addon/​dkim-verifier/​|DKIM verifier]] ​ pour thunderbird peut vous servir
 +
 +Et bien sur une fois que tout fonctionne pensez à diminuer les logs opendkim (voir plus haut)
 +
 +===== Aller plus loin =====
 +Vous voudrez peut être jeter un coup d’œil a [[sysadmin:​tips:​mailman|cette page sur l'​utilisation de mailman avec DKIM]]
  
-==== Références ====+===== Références ​=====
   * https://​www.tty1.net/​blog/​2014/​dkim-with-postfix_en.html   * https://​www.tty1.net/​blog/​2014/​dkim-with-postfix_en.html
  
sysadmin/dkim.1429181786.txt.gz · Dernière modification: 2015/04/16 12:56 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0