我最近将一台服务器从 Ubuntu 14.04 迁移到一台运行 18.04 的服务器,但邮件设置相同。我只是复制了 Postfix 的 main.cf 和 /etc/mail/opendkim 的内容。
服务器通过 LAN 向远程邮件主机发送邮件没有任何问题。但是,opendkim 拒绝像以前一样对电子邮件进行签名。
我的 postfix.cf 文件:
myhostname = host.domain.com
myorigin = $mydomain
relayhost = 10.10.10.105
inet_interfaces = loopback-only
mydestination =
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:localhost:8892
non_smtpd_milters = inet:localhost:8892
compatibility_level = 2
/etc/opendkim.conf
Syslog yes
UMask 007
Socket inet:8892@localhost
PidFile /var/run/opendkim/opendkim.pid
OversignHeaders From
UserID opendkim
Canonicalization relaxed/simple
KeyTable /etc/mail/opendkim/KeyTable
SigningTable /etc/mail/opendkim/SigningTable
ExternalIgnoreList /etc/mail/opendkim/TrustedHosts
InternalHosts /etc/mail/opendkim/TrustedHosts
TrustedHosts 文件包含发送机器的 IP 和主机名(并且 hostname -f 是正确的)。两台机器都位于同一个域中。
我在发件人的日志或远程邮件主机的日志中均未看到任何错误。如果我关闭发件人的 opendkim 守护进程,我会看到 postfix 抱怨它无法连接到 opendkim 套接字。
我尝试将 milter_protocol 设置为 2(原来是 6)但没有效果。
查看从受影响主机收到的邮件标题,没有提及 dkim。
答案1
添加LogWhy yes
到 opendkim.conf 可打开详细日志记录。这表明发送主机 (host.domain.com) 没有签名密钥。
SigningTable 设置为对来自特定域的邮件进行签名,但不对单个域的邮件进行签名主办方在这些域上。这是正确的行为。
发送主机在通过中继发送邮件时会提供 FQDN([电子邮件保护])。因此,我需要弄清楚如何让发送主机发送如下信息[电子邮件保护], 不是[电子邮件保护]这样中继将代表域签署其邮件。我不需要在发送主机上运行 opendkim。
使用 Ubuntu 18.04 上的 Postfix 配置,我必须添加masquerade_domains = domain.com
到 main.cf,而 Ubuntu 14.04 不需要这样做。