Postfix未对所有邮件添加DKIM-Signature问题求助
我之前也碰到过一模一样的情况,折腾了好一阵才找到问题根源,给你梳理下排查和解决的关键步骤:
1. 确认Postfix的Milter配置覆盖客户端用的提交端口
Thunderbird这类客户端一般用**submission端口(587)**发邮件,很多人会把OpenDKIM的milter配置只加在Postfix主配置里,却忘了让submission服务也继承这个设置。
打开
/etc/postfix/main.cf,确保有这几行配置:smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = inet:127.0.0.1:8891 milter_default_action = accept这里
non_smtpd_milters负责处理sendmail这类本地CLI发的邮件,而smtpd_milters管SMTP端口的流量,两者都要指向OpenDKIM的监听地址(如果你的OpenDKIM用unix socket,就改成unix:/var/run/opendkim/opendkim.sock)。接着编辑
/etc/postfix/master.cf,找到submission的配置块,务必加上-o smtpd_milters=$smtpd_milters这行,确保该端口使用主配置里的milter规则:submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=$mua_client_restrictions -o smtpd_helo_restrictions=$mua_helo_restrictions -o smtpd_sender_restrictions=$mua_sender_restrictions -o smtpd_recipient_restrictions= -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING # 关键:让submission端口继承主配置的milter设置 -o smtpd_milters=$smtpd_milters
2. 验证OpenDKIM的签名规则包含你的发件域名
有时候是OpenDKIM没匹配到客户端发件人的域名,导致不签名:
- 打开
/etc/opendkim.conf,确认Domain、KeyTable、SigningTable配置正确:Domain example.com # 或者用*匹配所有已配置的域名 KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable - 检查
/etc/opendkim/SigningTable,确保有覆盖你发件人的规则,比如:*@example.com default._domainkey.example.com - 对应
/etc/opendkim/KeyTable里的密钥映射要正确:default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default.private
3. 检查Postfix的可信来源配置
确保客户端发送的邮件被Postfix识别为可信来源,这样OpenDKIM才会触发签名:
在/etc/postfix/main.cf里确认mynetworks包含本地回环地址:
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
如果是远程客户端,还要确保SASL认证已经正常启用,Postfix允许认证后的用户发件。
4. 重启服务并测试
修改完配置后,重启Postfix和OpenDKIM:
sudo systemctl restart postfix sudo systemctl restart opendkim
然后用Thunderbird发测试邮件到check-auth@verifier.port25.com,查看返回的校验报告,确认DKIM是否显示pass。
额外排查技巧
如果还是不行,去看Postfix的日志/var/log/mail.log,搜索dkim关键词,比如有没有DKIM-Signature added的成功日志,或者DKIM: skipping signing for ...这类提示,能直接帮你定位问题。
内容的提问来源于stack exchange,提问作者MdeMoUcH

