iRedMail邮件缺失DKIM头问题排查求助
iRedMail DKIM签名问题排查指南
1. 我的邮件是否应当被DKIM签名?
必须签名。对外发送至其他邮件服务商的邮件,DKIM是核心反垃圾邮件机制之一——收件方服务商通过验证DKIM签名确认邮件确实来自你的域名,而非伪造。你目前无法外发邮件的核心原因大概率就是缺少这个签名,导致收件方直接拒收(而非扔进垃圾箱)。
2. 哪个服务负责为邮件添加DKIM头?
在iRedMail环境中,Amavisd-new是负责DKIM签名的核心服务。它会读取数据库中存储的DKIM密钥信息,接收Postfix转发来的外发邮件并添加DKIM签名头,再回传给Postfix发送出去。
3. 可通过哪些途径排查签名失败的原因?
- 查看Amavisd日志:执行
tail -f /var/log/amavisd.log,搜索dkim相关关键词,重点看是否有密钥查找失败、权限不足、域名匹配错误等报错,这些直接反映签名失败的原因 - 检查Postfix与Amavisd的联动配置:
- 打开
/etc/postfix/main.cf,确认content_filter配置为amavis:[127.0.0.1]:10024,确保邮件会转发给Amavisd处理 - 查看
/etc/postfix/master.cf,确认Amavisd的转发规则(amavis unix - - n - 2 smtp和对应的127.0.0.1:10025 inet n - n - - smtpd)是否正确配置
- 打开
- 验证DKIM密钥与DNS记录一致性:
- 服务器上的DKIM公钥路径一般为
/var/lib/dkim/[你的域名].pub,复制公钥内容 - 检查DNS中的TXT记录:记录名称应为
dkim._domainkey.[你的域名],记录值要和服务器公钥完全一致(注意不要多空格、大小写错误,公钥开头的v=DKIM1; k=rsa; p=要保留)
- 服务器上的DKIM公钥路径一般为
- 测试实际发件的签名状态:
- 给自己的外部邮箱(如Gmail、Outlook)发送测试邮件,查看邮件的原始头信息
- 如果找不到
DKIM-Signature字段,说明邮件根本没触发Amavisd的签名流程;如果有该字段但验证失败,检查字段中的d=(域名)、s=(selector)是否与DNS配置匹配
- 重新生成并同步DKIM密钥:
- 若怀疑密钥本身有问题,执行
amavisd-new genrsa -b 2048 /var/lib/dkim/[你的域名]重新生成密钥 - 更新DNS中的TXT记录,等待DNS生效(可通过
dig dkim._domainkey.[你的域名] TXT验证)后再测试发件
- 若怀疑密钥本身有问题,执行
- 检查Amavisd的DKIM签名开关:
- 打开
/etc/amavisd.conf,查找dkim_signature_options_bysender_maps或@dkim_signature_options_bysender配置,确认针对你的域名是否设置了dkim_sign => 1(开启签名),而非关闭状态
- 打开
内容的提问来源于stack exchange,提问作者user2741831
相关产品推荐
相关产品推荐

