过去几周我一直在设置 SPF、DKIM 和 DMARC。现在一切都顺利进行,只是我无法让外发邮件获得 DKIM 签名。
Debian 11 是操作系统,OpenDkim 和 Postfix 是我的 MTA。
与指南和其他教程相比,一切似乎都很好,但显然我遗漏了一些东西。
配置文件的内容,尽管我已将域重命名为 Example.com。
/etc/opendkim.conf
Syslog yes
UMask 007
# example.com as the domain doesn't seem to make a difference.
Domain *
Selector 202306
Socket local:/var/spool/postfix/opendkim/opendkim.sock
PidFile /var/run/opendkim/opendkim.pid
OversignHeaders From
TrustAnchorFile /usr/share/dns/root.key
UserID opendkim
KeyTable /etc/opendkim/key.table
SigningTable refile:/etc/opendkim/signing.table
ExternalIgnoreList /etc/opendkim/trusted.hosts
InternalHosts /etc/opendkim/trusted.hosts
# Commonly-used options; the commented-out versions show the defaults.
Canonicalization relaxed/simple
Mode sv
SubDomains no
AutoRestart yes
AutoRestartRate 10/1M
Background yes
DNSTimeout 5
SignatureAlgorithm rsa-sha256
/etc/opendkim/key.table
202306 example.com:202306:/etc/opendkim/keys/example.private
/etc/opendkim/signing.table
*@example.com 202306._domainkey.example.com
/etc/opendkim/trusted.hosts
127.0.0.1
::1
localhost
example.com
smtp.example.com
/etc/postfix/main.cf
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
/etc/默认/opendkim
RUNDIR=/var/run/opendkim
SOCKET="inet:8891@localhost"
USER=opendkim
GROUP=opendkim
PIDFILE=$RUNDIR/$NAME.pid
EXTRAAFTER=
/etc/postfix/master.cf
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
==========================================================================
smtp inet n - n - - smtpd
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=may
-o smtpd_sasl_auth_enable=yes
smtps inet n - n - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
pickup fifo n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix - - n - - smtp
-o smtp_fallback_relay=
showq unix n - n - - showq
error unix - - n - - error
retry unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
mydelivery unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
/bin/procmail -Y -a USER=${user} EXTENSION=${extension} /etc/procmailrc
procmail unix - n n - - procmail
127.0.0.1:10050 inet n n n - 0 spawn
user=mail argv=/usr/bin/perl /etc/postfix/log_smtp.pl
我有一些想法。如果其他一切都正常并且 OpenDkim 正在运行,这似乎是 Milter 的问题。几乎就像 Postfix 不知道它应该与 OpenDkim 对话一样。
我看到 /var/run/opendkim 目录的所有者是 opendkim:opendkim,但其中的 pid 文件的所有者是 root:root,看看更新所有者是否有帮助。
如果需要任何其他信息,我可以提供。MXtoolbox 显示我的 DKIM DNS 条目全部正常。
任何帮助都值得感激。谢谢
[编辑:我已按照以下建议更新了签名表并添加了 master.cf 内容。(我假设密钥和签名表需要引用同一件事,但可能不是,无论如何都没有变化)看起来 Master.cf 可能是我的问题,目前正在研究这个配置文件以进一步了解它。]
答案1
您的签名表的格式似乎不正确,应该是:
*@example.com 202306._domainkey.example.com
还要检查你的master.cf
不会覆盖main.cf
for中的 milter 设置smtps
(或submission
,已被淘汰RFC 8314)。
一些额外的提示:
默认情况下,DMARC 信任
Authentication-Results
DKIM 和 SPF 检查设置的标头。不幸的是,这些标头可以被伪造。我的回答从 2019 年开始对此提出了强化建议。启用调试日志
opendkim.conf
有助于遵循 OpenDKIM 做出的决定:# Debug logging LogResults yes LogWhy yes