OpenDKIM en MTA no firma correos electrónicos desde servidores de correo remotos

OpenDKIM en MTA no firma correos electrónicos desde servidores de correo remotos

Tengo una configuración en la que tenemos un MTA responsable de enviar correos electrónicos desde varios servidores internos.

Todos los servidores internos ejecutan Postfix en varios dominios diferentes. Todos están configurados para transmitir a través del MTA. Estoy intentando configurar DKIM para firmar los correos electrónicos salientes de todos los servidores internos.

Instalé opendkim y el servidor puede firmar correos electrónicos salientes generados localmente.

La configuración de MTA es la siguiente:

opendkim.conf:

Syslog          yes
Logwhy          yes

UMask           002

Canonicalization    relaxed/simple
Mode            s
SubDomains      no

AutoRestart         yes
AutoRestartRate     10/1M
Background          yes
DNSTimeout          5
SignatureAlgorithm  rsa-sha256

OversignHeaders     From

UserID             opendkim

KeyTable           refile:/etc/opendkim/key.table
SigningTable       refile:/etc/opendkim/signing.table
ExternalIgnoreList  refile:/etc/opendkim/trusted.hosts

InternalHosts       refile:/etc/opendkim/trusted.hosts
Socket    inet:8891@localhost

principal.cf:

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

append_dot_mydomain = no
readme_directory = no

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mta.mydomain.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = mta.mydomain.com localhost
relayhost =
mynetworks = 127.0.0.0/8 1.1.1.0/24 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all

canonical_maps = hash:/etc/postfix/canonical

milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:localhost:8891

non_smtpd_milters = $smtpd_milters

tabla.de.firma:

*@domain1.com    default._domainkey.domain1.com
*@*.domain1.com    default._domainkey.domain1.com
*@domain1.co.uk    default._domainkey.domain1.co.uk
*@*.domain1.co.uk    default._domainkey.domain1.co.uk
*@domain2.co.uk    default._domainkey.domain2.co.uk
*@*.domain2.co.uk    default._domainkey.domain2.co.uk
*@domain3.co.uk    default._domainkey.domain3.co.uk
*@*.domain3.co.uk    default._domainkey.domain3.co.uk

hosts.confiables:

127.0.0.1
localhost
1.2.3.50
1.2.3.52
1.2.3.53
1.2.3.54
1.2.3.29
service2.domain2.co.uk
host2.domain2.co.uk

He configurado /etc/opendkim/trusted.hosts con una lista de los hosts internos cuyos correos electrónicos me gustaría firmar. También agregué claves y las agregué a los registros DNS relevantes.

Probé la generación de correos electrónicos en el propio MTA usando sendmail y los correos electrónicos están firmados correctamente. Sin embargo, al probar la generación de correos electrónicos desde otros servidores internos remotos, ninguno de los correos electrónicos está firmado. Tampoco veo nada registrado en el MTA en términos del motivo, aunque al usar tcpdump puedo ver que el tráfico va al puerto 8891 en localhost.

El host desde el que estoy probando se identifica ante Postfix como host2.domain2.co.uk:

Dec 20 16:28:32 mta postfix/smtpd[3765]: connect from host2.domain2.co.uk[1.2.3.50]
Dec 20 16:28:32 mta postfix/smtpd[3765]: 1B4BB439BD: client=host2.domain2.co.uk[1.2.3.50]
Dec 20 16:28:32 mta postfix/cleanup[3768]: 1B4BB439BD: message-id=<[email protected]>
Dec 20 16:28:32 mta postfix/qmgr[1494]: 1B4BB439BD: from=<[email protected]>, size=109206, nrcpt=1 (queue active)
Dec 20 16:28:32 mta postfix/smtpd[3765]: disconnect from host2.domain2.co.uk[1.2.3.50]
Dec 20 16:28:32 mta postfix/smtp[3759]: 1B4BB439BD: enabling PIX workarounds: disable_esmtp delay_dotcrlf for somecompany-co-uk.mail.protection.outlook.com[104.47.0.36]:25
Dec 20 16:28:33 mta postfix/smtp[3759]: 1B4BB439BD: to=<[email protected]>, relay=somecompany-co-uk.mail.protection.outlook.com[104.47.0.36]:25, delay=1.3, delays=0.14/0/0.18/1, dsn=2.6.0, status=sent (250 2.6.0 <[email protected]> [InternalId=73138998102968, Hostname=AS8PR05MB8037.eurprd05.prod.outlook.com] 119126 bytes in 0.104, 1115.744 KB/sec Queued mail for delivery)
Dec 20 16:28:33 mta postfix/qmgr[1494]: 1B4BB439BD: removed

EDITAR: Una investigación más profunda de los encabezados de dos mensajes de prueba (uno enviado desde el host directamente usando sendmail, el otro desde un host detrás del MTA), y una investigación más profunda de los registros de opendkim, ha revelado que DKIM está firmando ambos mensajes aparentemente con éxito. pero la firma DKIM se rechaza para los mensajes de otros hosts.

Este es el registro DKIM de dos de estos mensajes (el primero tuvo éxito, el segundo falló):

Dec 22 12:06:16 mta opendkim[8130]: 65EB043A13: DKIM-Signature field added (s=default, d=domain3.co.uk)
Dec 22 12:06:52 mta opendkim[8130]: E723543AF0: DKIM-Signature field added (s=default, d=domain3.co.uk)

Sin embargo, al observar los resultados de DKIM en Gmail, son diferentes:

ARC-Authentication-Results: i=1; mx.google.com;
       dkim=pass [email protected] header.s=default header.b=MVo7iz6A;

y para el segundo:

ARC-Authentication-Results: i=1; mx.google.com;
       dkim=neutral (body hash did not verify) [email protected] header.s=default header.b=TktWbhpC;

No entiendo por qué esto es diferente, pero debe ser la causa de los problemas que estoy viendo.

información relacionada