MTA 上的 OpenDKIM 未對來自遠端郵件伺服器的郵件進行簽名

MTA 上的 OpenDKIM 未對來自遠端郵件伺服器的郵件進行簽名

我有一個配置,其中有一個 MTA 負責從多個內部伺服器發送電子郵件。

內部伺服器都在許多不同的網域上執行 Postfix。它們都配置為透過 MTA 進行中繼。我正在嘗試設定 DKIM 以簽署來自所有內部伺服器的出站電子郵件。

我已經安裝了 opendkim 並且伺服器能夠簽署本地生成的出站電子郵件。

MTA配置如下:

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

主要.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

簽名表:

*@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

受信任的主機:

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

我已經使用內部主機清單配置了 /etc/opendkim/trusted.hosts,我希望對其電子郵件進行簽署。我還添加了密鑰並將它們添加到相關的 DNS 記錄中。

我已經測試過使用 sendmail 在 MTA 本身上產生郵件,並且電子郵件簽名正確。但是,當測試從其他遠端內部伺服器產生電子郵件時,沒有任何電子郵件經過簽署。我也沒有看到任何記錄在 MTA 上的原因,儘管使用 tcpdump 我可以看到流量流向本地主機上的連接埠 8891。

我正在測試的主機向 Postfix 標識自己為 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

編輯:進一步調查兩個測試訊息的標頭(一個直接使用 sendmail 從主機發送,另一個從 MTA 後面的主機發送),並進一步調查 opendkim 日誌,發現 DKIM 顯然成功地簽署了兩條訊息,但對於來自其他主機的郵件,DKIM 簽章會被拒絕。

這是兩個此類訊息的 DKIM 日誌(第一個成功,第二個失敗):

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)

然而,看看 Gmail 中的 DKIM 結果,它們是不同的:

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

對於第二個:

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

我不明白為什麼這是不同的,但這一定是我所看到的問題的原因。

相關內容