![在 Centos 上使用 Postfix 发送的电子邮件未使用 DKIM 签名](https://linux22.com/image/660089/%E5%9C%A8%20Centos%20%E4%B8%8A%E4%BD%BF%E7%94%A8%20Postfix%20%E5%8F%91%E9%80%81%E7%9A%84%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E6%9C%AA%E4%BD%BF%E7%94%A8%20DKIM%20%E7%AD%BE%E5%90%8D.png)
我一直使用 phpmailer 来收发电子邮件,dkim 也能够正常工作。我有一个密钥 mail._domainkey.domain.com。我已使用以下方式验证过我过去的电子邮件http://www.mail-tester.com/我的 phpmailer 电子邮件得分为 9.4。我已设置 postfix 和 opendkim。我已将它们设置为使用我之前已设置的相同密钥,但我对从 postfix 发送的邮件进行了测试,结果只得到了 9.0。由于没有 dkim,它损失了 -1。我应该可以接受这样的分数,不会被垃圾邮件过滤,但由于我过去已设置并运行 DKIM,因此我希望使用它来获得 10/10。
有没有一种简单的方法,让我可以使用现有的私钥文件和匹配的 DNS 条目签署电子邮件。我使用 roundcube 作为客户端,但它似乎无法在此级别进行配置。
我检查了发送到 Gmail 的电子邮件来源,数据中没有提到 dkim。(它仍然进入了收件箱,但无论如何我都想解决这个问题)。
这是我为此配置的所有内容
/etc/opendkim/密钥表
mail._domainkey.domain.com domain.com :default:/etc/opendkim/keys/domain.com/default
/etc/opendkim.conf
AutoRestart Yes
AutoRestartRate 10/1h
Canonicalization relaxed/simple
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
LogWhy Yes
Mode sv
PidFile /var/run/opendkim/opendkim.pid
SignatureAlgorithm rsa-sha256
SigningTable refile:/etc/opendkim/SigningTable
Socket inet:8891@localhost
Syslog Yes
SyslogSuccess Yes
TemporaryDirectory /var/tmp
UMask 022
UserID opendkim:opendkim
/etc/opendkim/签名表
*@domain.com mail._domainkey.domain.com
/etc/opendkim/TrustedHosts
127.0.0.1
domain.com
/etc/opendkim/keys/domain.com/default.txt
k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOWKEVTS6FJXogB66ls9OmtD7GRCE0FxTGR+n1sBUmp1Zj/eosMNSWGfwPEfSZVjY/VrQszi/MrdYF7VTLGCKiVxlYrhjSqtqWw93ODmrIsBnTd/IIbIHLOI2yNmegHFIWEvOGFsMqCnQ4IZMtVdwUQtEvSVtjDmNe2PXqvwlzRQIDAQAB
答案1
您需要将 opendkim 作为过滤器添加到 postfix。
确保这两行在后缀中main.cf
:
milter_protocol = 2
milter_default_action = accept
然后将 opendkim 添加到你的过滤器中:
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
我还会将 opendkim 添加localhost
到TrustedHosts
文件中,因为 postfix 可能会通过 IPv6 (::1) 而不是 IPv4 (127.0.0.1) 连接到它。文件localhost
中有这些内容TrustedHosts
就足够了。