Opendkim multidomaines
Création de l'utilisateur et de son environnement de travail
# pw useradd -n opendkim -g mail -c " Virtual Account dkim" -s /usr/sbin/nologin -d /var/db/opendkim -w no -m
Lancer le service automatiquement au démarrage du serveur avec le compte utilisateur qui vient d'être créer.
# echo 'milteropendkim_enable="YES"' >> /etc/rc.conf # echo 'milteropendkim_uid="opendkim"' >> /etc/rc.conf
Intégration du service dans postfix
/usr/local/etc/postfix/main.cf----------------------- smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters milter_default_action = accept -----------------------
Générer des clés pour la signature
Générer une clé privée et une clé publique pour chacun des domaines avec lesquels il est souhaité de signer du courrier électronique. La clé privée sera stockée à l'abri des regards indiscrets sur le serveur, tandis que la clé publique sera publiée dans les enregistrements DNS du domaine de telle sorte que les serveurs de messagerie de réception puissent vérifier le courrier DKIM-signé.
Avant d'exécuter ce script, choisir un nom pour le sélecteur. Un sélecteur est un mot-clé unique qui est associé aux deux clés (publique et privée), inclus dans toutes les signatures, et publié dans les enregistrements DNS.
Pour plus de simplicité, utiliser le mot "default" comme sélecteur par défaut.
Ne pas hésiter à choisir un mot différent, tout en sachant qu'il y aura besoin d'adapter de manière cohérente les modifications à l'exemple ci-dessous ainsi qu' utiliser le nom de domaine de messagerie défini au lieu de "example.com".
Créer une clé pour un domaine
Dans cet exemple, les options sont : -D (répertoire), -d (domaine), et -s (sélecteur).# mkdir -p /var/db/opendkim/keys/example.com # opendkim-genkey -D /var/db/opendkim/keys/example.com/ -d example.com -s default # chown -R opendkim:mail /var/db/opendkim/keys/example.com # mv /var/db/opendkim/keys/example.com/default.private /var/db/opendkim/keys/example.com/default
Il est nécessaire de créer et d'éditer ces quatre fichiers :
- /usr/local/etc/opendkim.conf – OpenDKIM’s main configuration file
- /var/db/opendkim/KeyTable – a list of keys available for signing
- /var/db/opendkim/SigningTable - a list of domains and accounts allowed to sign
- /var/db/opendkim/TrustedHosts – a list of servers to “trust” when signing or verifying
Utiliser le sample du fichier de configuration pour OpenDKIM :
# cp /usr/local/share/doc/opendkim/opendkim.conf.simple /usr/local/etc/opendkim.conf
Editer le fichier de configuration, en modifiant les options ci-dessous et en conservant celles définies par défaut.
/usr/local/etc/opendkim.conf----------------------- Canonicalization relaxed/relaxed ExternalIgnoreList refile:/var/db/opendkim/TrustedHosts InternalHosts refile:/var/db/opendkim/TrustedHosts KeyTable refile:/var/db/opendkim/KeyTable LogWhy Yes ReportAddress "DKIM Error Postmaster" <Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.> Selector my-selector-name SigningTable refile:/var/db/opendkim/SigningTable Socket inet:8891@localhost Syslog Yes SyslogSuccess Yes TemporaryDirectory /var/tmp -----------------------
Editer les trois fichiers qui sont mentionnés dans le fichier de configuration principal
/var/db/opendkim/KeyTabledefault._domainkey.example.com example.com:default:/var/db/opendkim/keys/example.com/default.private default._domainkey.domain.tld domain.tld:default:/var/db/opendkim/keys/domain.tld/default.private
Chaque entrée dans ce fichier est une ligne unique représentant un domaine associé à une clé ayant comme sélecteur le mot "default". S' il est nécessaire d'utiliser plusieurs clés (pour signer du courrier pour des domaines virtuels, par exemple), il faudra créer une ligne distincte par domaine.
/var/db/opendkim/SigningTable*@example.com default._domainkey.example.com *@domain.tld default._domainkey.domain.tld
Dans l'exemple ci-dessus, tout le monde (*) envoie les messages à partir du serveur "example.com", utilise le sélecteur nommé "default"". Il est important de noter que le symbole * générique ne fonctionnera que si les utilisations d'options "SigningTable refile:" préfixe avant le nom du fichier (voir la documentation de opendkim.conf pour plus de détails).
/var/db/opendkim/TrustedHosts127.0.0.1 smtp.example.com mail.example.com example.com imap.domain.tld domain.tld
La directive ExternalIgnoreList liste les hôtes à ignorer pour OpenDKIM lors de la vérification du courrier entrant.
La directive InternalHosts indique les hôtes qui seront considérés comme "internes", et OpenDKIM signera leurs courriers sortants.
Attribuer les droits sur le répertoire
# chown -R opendkim:mail /var/db/opendkim # chmod -R go-wrx /var/db/opendkim/keys
Configurer la zone DNS pour pouvoir signer le courrier
# cat /var/db/opendkim/keys/example.com/default.txt default._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIGfMA0GCSqGSIb3DQEBAQUBB4GNADCBiQKBgQDGNPG4nNOHRAN2WWsX481tqOsHOYAbfdHpAqF7WRXrTelG6eTcgPIiPrTP5adNQC3MwNS/WRNdGhsBiAQiLZ1/rU7M0QP/I5m25iO/ZOtWMF9rHTNcjvsbfkgHlDHXUTe3M3e39eWiJh/z+Mj0/DAThAAIYVSrqQFxRw/zo38OhQIDAQAB" ) ; ----- DKIM key default for example.com
Ajouter au fichier de configuration dans la zone du domaine les lignes figurant ci-dessous :
_adsp._domainkey IN TXT "dkim=unknown" default._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUBB4GNADCBiQKBgQDGNPG4nNOHRAN2WWsX481tqOsHOYAbfdHpAqF7WRXrTelG6eTcgPIiPrTP5adNQC3MwNS/WRNdGhsBiAQiLZ1/rU7M0QP/I5m25iO/ZOtWMF9rHTNcjvsbfkgHlDHXUTe3M3e39eWiJh/z+Mj0/DAThAAIYVSrqQFxRw/zo38OhQIDAQAB" ; ----- DKIM key default for example.com
Tester la signature
# opendkim-testkey -vvv -d example.com -s default -k /var/db/opendkim/keys/example.com/default.private opendkim-testkey: using default configfile /usr/local/etc/opendkim.conf opendkim-testkey: key loaded from /var/db/opendkim/keys/example.com/default.private opendkim-testkey: checking key 'default._domainkey.example.com' opendkim-testkey: key not secure opendkim-testkey: key OK