DKIM Postfix 消息未签名以发送邮件

DKIM Postfix 消息未签名以发送邮件

过去几周我一直在设置 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.cffor中的 milter 设置smtps(或submission,已被淘汰RFC 8314)。


一些额外的提示:

  • 默认情况下,DMARC 信任Authentication-ResultsDKIM 和 SPF 检查设置的标头。不幸的是,这些标头可以被伪造。我的回答从 2019 年开始对此提出了强化建议。

  • 启用调试日志opendkim.conf有助于遵循 OpenDKIM 做出的决定:

    # Debug logging
    LogResults yes
    LogWhy yes
    

相关内容