web-dev-qa-db-fra.com

EXIM4 n'ajoute pas de signature DKIM

J'ai passé 2 jours à essayer de dire exim d'ajouter des signatures DKIM sur mon serveur Debian8. Sans succès. J'ai lu plusieurs how-tos, forums mais aucune des solutions possibles wotk sur mon serveur.

ont généré les clés :

cd /etc/exim4/

openssl genrsa -out example.com-private.pem 1024 -outform PEM
openssl rsa -in example.com-private.pem -out example.com.pem -pubout -outform PEM

avoir un fichier repacé

00_local_macros 

dans

/etc/exim4/conf.d/main/ 

avec le contenu suivant:

DKIM_Canon = relaxed
DKIM_SELECTOR = 20160604
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_PRIVATE_KEY=${if exists{/etc/exim4/${dkim_domain}-private.pem} {/etc/exim4/${dkim_domain}-private.pem}}

ont publié un enregistrement DNS de texte :

20160604._domainkey.example.com

contenu avec clé publique:

k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRpHpC2q1ycmaqdnYlf5WI5g7ZyiXybd6EFdOqk35Sl7ZNfSeZelbyxqgLN+BzHpbp4Z4JDtKLSgBwugCePhl2xVDtQvO9XfqwQLMO5PAOONCLTwoGYrViwf5ki2zIqS2uN5MpuRTKW/IiK3CtRId+w5gjdACAvkwZWBstKEDrQQIDAQAB

# update-exim4.conf
# service exim4 restart

même redémarré le serveur.

Tous les courriels arrivent toujours sans signature dkim.

Essayé d'ajouter des lignes:

dkim_domain = ${lc:${domain:$h_from:}}
DKIM_PRIVATE_KEY=${if exists{/etc/exim4/${dkim_domain}-private.pem} {/etc/exim4/${dkim_domain}-private.pem}}
DKIM_Canon = relaxed
DKIM_SELECTOR = 20160604
dkim_sign_headers = true

au fichier /etc/exim4/conf.d./transport/30_exim4-config_remote_smtpe comme suggéré dans certains forums. Sans succès. Toujours pas de signature dkim.

exim4 -bV

Exim version 4.84_2 #2 built 13-Mar-2016 17:47:19
Copyright (c) University of Cambridge, 1995 - 2014
(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2014
Berkeley DB: Berkeley DB 5.3.28: (September  9, 2013)
Support for: crypteq iconv() IPv6 GnuTLS move_frozen_messages DKIM PRDR OCSP
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmjz dbmnz dnsdb dsearch nis nis0 passwd
Authenticators: cram_md5 plaintext
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 8
Configuration file is /var/lib/exim4/config.autogenerated

Mise à jour

Presque tous les tutoriels sont faux. Avec la configuration unique de fichier exim, les paramètres DKIM doivent résider dans le fichier exim4.conf.template. Ça marche! Mais un seul domaine cette configuration:

DKIM_Canon = relaxed
DKIM_DOMAIN = example.com
DKIM_PRIVATE_KEY = /etc/exim4/dkim/example.com-private.pem
DKIM_SELECTOR = 20160604
#DKIM_STRICT = true

Plusieurs domaines ne fonctionnent toujours pas. Essayé plusieurs configurations mais toujours pas de succès. Les trois ci-dessous ne fonctionnent pas:

DKIM_Canon = relaxed
DKIM_SELECTOR = 20160604
DKIM_DOMAIN = ${sender_address_domain}
DKIM_FILE = /etc/exim4/dkim/{DKIM_DOMAIN}-private.pem
DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}


DKIM_Canon = relaxed
DKIM_SELECTOR = 20160604
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_PRIVATE_KEY=${if exists{/etc/exim4/dkim/${DKIM_DOMAIN}-private.pem} {/etc/exim4/dkim/${DKIM_DOMAIN}-private.pem}}

DKIM_Canon = relaxed
DKIM_SELECTOR = 20160604
dkim_domain = ${lc:${domain:$h_from:}}
DKIM_PRIVATE_KEY=${if exists{/etc/exim4/${dkim_domain}-private.pem} {/etc/exim4/${dkim_domain}-private.pem}}
7
aigffmss

Vérifiez que vous utilisez le remote_smtp transport. Cela devrait être répertorié après T= dans /var/log/exim4/mainlog sur les lignes contenant =>. Vérification de DKIM sur le courrier électronique livré localement ne fonctionnera pas car ce transport n'est pas utilisé. Utilisez un service de vérification pour vérifier si votre courrier est signé tel que http://dkimvalidator.com

Si vous utilisez le remote_smtp_smarthost Transport Vous devez le modifier pour inclure la signature DKIM. Sur une machine debian/ubuntu avec une configuration divisée ajoute le ci-dessous sur 30_exim4-config_remote_smtp_smarthost déposer:

# DKIM setup copied from `30_exim4-config_remove_smtp`
# see: https://serverfault.com/a/782069/117087
.ifdef DKIM_DOMAIN
dkim_domain = DKIM_DOMAIN
.endif
.ifdef DKIM_SELECTOR
dkim_selector = DKIM_SELECTOR
.endif
.ifdef DKIM_PRIVATE_KEY
dkim_private_key = DKIM_PRIVATE_KEY
.endif
.ifdef DKIM_Canon
dkim_Canon = DKIM_Canon
.endif
.ifdef DKIM_STRICT
dkim_strict = DKIM_STRICT
.endif
.ifdef DKIM_SIGN_HEADERS
dkim_sign_headers = DKIM_SIGN_HEADERS
.endif

Vérifiez les autorisations sur votre clé privée. Il doit être lisible par les exécutions EXIM UTILISATION, telles que Debian-Exim pour les installations Debian et Ubuntu. Si votre transport est à dkim_strict, il répondra aux messages s'il ne peut pas signer le message. Il va enregistrer la défaillance des causes de l'mainlog et de paniclog. Il peut être plus facile de trouver le message dans le paniclog.

Ce sont le paramètre nécessaire pour que DKIM fonctionne. Vous semblez manquer certains. (Je signe pour plusieurs domaines avec la même clé. Essayez de vous inscrire avec une seule touche Travailler avant d'essayer d'avoir une fantaisie et d'utiliser des clés séparées pour différents domaines.) Cette configuration devrait empêcher l'envoi de courrier électronique non signé par le remote_smtp transport.

DKIM_Canon = relaxed
DKIM_DOMAIN = ${sender_address_domain}
DKIM_PRIVATE_KEY = CONFDIR/dkim.private.20160604
DKIM_SELECTOR = ${extract{-1}{.}{DKIM_PRIVATE_KEY}}
DKIM_STRICT = true # optional - causes signing failures to defer (requeue)
#DKIM_SIGN_HEADERS = # Use default

Une fois que vous avez signé avec une clé statique fonctionnant. Vous pouvez essayer ces changements

DKIM_PRIVATE_KEY = CONFDIR/${sender_address_domain}.private.201604
DKIM_SELECTOR = 20160604
DKIM_STRICT = false # optional - pass if no key available

Vous voudrez peut-être examiner:

5
BillThor