Pregunta Exim4 no agrega la firma DKIM


He pasado 2 días tratando de decirle a Exim que agregue firmas DKIM en mi servidor Debian8. Sin éxito. He leído muchos tutoriales, foros, pero ninguna de las posibles soluciones se encuentra en mi servidor.

Han generado las claves:

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

Tener archivo creaded 

00_local_macros 

en

/etc/exim4/conf.d/main/ 

Con el siguiente contenido:

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}}

Han publicado un registro DNS de texto:

20160604._domainkey.example.com

Contenido con clave pública:

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

# update-exim4.conf
# service exim4 restart

Incluso reinició el servidor.

Todos los correos electrónicos todavía llegan sin la firma DKIM.

Intenté agregar líneas:

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

al archivo /etc/exim4/conf.d./transport/30_exim4-config_remote_smtp como se sugiere en algún foro. Sin éxito. Todavía no hay firma 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

Actualizar

Casi todos los tutoriales están equivocados. Con la configuración de Exim de un solo archivo, la configuración DKIM debe residir en el archivo exim4.conf.template. ¡Funciona! Pero solo un dominio esta configuración:

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

Varios dominios todavía no funcionan. Probé múltiples configuraciones pero todavía no tuve éxito. Los tres a continuación no funcionan:

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}}

5
2018-06-05 09:29


origen




Respuestas:


Verifique que está utilizando el remote_smtp transporte. Esto debería aparecer después de T= en /var/log/exim4/mainlog en las lineas que contienen =>. La verificación de DKIM en el correo electrónico entregado localmente no funcionará ya que este transporte no se utiliza. Use un servicio de verificación para verificar si su correo está firmado.

Verifique los permisos en su clave privada. Debe ser legible por el uso que Exim ejecuta como Debian-exim para las instalaciones de Debian y Ubuntu. Si su transporte es a dkim_strict, volverá a poner en cola los mensajes si no puede firmar el mensaje. Se registrará las causas del fallo en el mainlog y el paniclog. Puede ser más fácil encontrar el mensaje en el paniclog.

Estos son los ajustes necesarios para que DKIM funcione. Parece que te estás perdiendo algo. (Firmo para varios dominios con la misma clave. Intente firmar con una sola clave antes de intentar obtener un diseño elegante y use claves separadas para diferentes dominios). Esta configuración debe evitar que el correo electrónico sin firma sea enviado por el remote_smtp transporte.

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

Una vez que haya firmado con una llave estática funcionando. Podrías probar estos cambios.

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

Es posible que desee revisar:


3
2018-06-05 12:58



Sí, estoy usando remote_smtp. El dominio único no funciona. Ayer ya probé un solo dominio. Ningún éxito. DKIM_STRICT no ayuda. El correo llega sin firma. Solo intenté enviar un correo electrónico a yahoo: dkim = neutral (no sig). Como entiendo, muchas personas tienen este problema y me pregunto por qué Exim no lo soluciona. Algunas personas simplemente cambian a postfix, etc. - aigffmss
He verificado que dkim_strict impide el envío de correos electrónicos si el mensaje no se puede firmar. Por favor agregue la salida de grep DKIM /var/lib/exim/config.autogenerated a tu post Esto debería incluir su configuración DKIM si las ha realizado en el lugar correcto. Esto es diferente para archivos divididos y configuraciones de un solo archivo. Ayuda a no ocultar el dominio con el que está trabajando. - BillThor
@aigffmss de sus cambios de configuración parece que debería tener que usar dc_use_split_config='true' en update-exim4.conf.conf. Si no, tus cambios deberían estar en exim4.conf.template. En cualquier caso, debe volver a cargar o reiniciar Exim para que sus cambios sean efectivos. - BillThor
Conseguí 1 dominio de trabajo cuando coloco mi configuración en el archivo exim4.conf.template. Pero solo 1 dominio. Varios dominios todavía no funcionan. Acabo de actualizar mi pregunta. - aigffmss
Intenta usar DKIM_STRICT = true con DKIM_PRIVATE_KEY = CONFDIR/${sender_address_domain}.private. Esto debería registrar los errores. También puede utilizar la misma clave para todos los dominios. No hay ningún requisito que cada dominio tenga una clave de firma separada. - BillThor


Esto funciona para mí:

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}}

Estos ajustes deben ser colocados en exim4.conf.template expediente Si utiliza la configuración de un solo archivo Exim y no en 00_local_macros u otros archivos como se dice en muchos procedimientos.

Establecer firmas DKIM en Exim es un problema (pasé 3 días) y los desarrolladores de Exim deberían solucionarlo.


3
2018-06-05 22:32





Exim version 4.84_2 #2 built 25-Jul-2016 18:59:44

Esto es lo que funcionó para mí, estaba en la situación exacta, exim4 no estaba agregando la firma dkim.

Edité el archivo /etc/exim4/update-exim4.conf.conf y encontré que incluso cuando estaba usando la configuración dividida, el archivo de configuración estaba equivocado, así que tuve que cambiar esta línea:

dc_use_split_config='true'

Y luego edité el 10_exim4-config_transport-macrosArchivo y añade las siguientes líneas al final:

DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_FILE = /etc/exim4/dkim/${lc:${domain:$h_from:}}.private.key
DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}
DKIM_SELECTOR = exim

El trabajo anterior fue generar el archivo de clave privada y agregar el registro TXT DNS, etc.


0
2017-11-01 00:35