RSPAMD DMARC报告无法发送,手动执行命令异常求助
DMARC报告发送异常排查方案
可能的原因及对应解决步骤
1. SMTP配置缺失或本地服务异常
你的配置中smtp和smtp_port处于注释状态,Rspamd默认会调用本地127.0.0.1:25的SMTP服务。如果本地MTA(比如Postfix、Exim)未启动,或者端口被防火墙拦截,会导致发送失败,进而触发send data for 0 domains的提示(发送失败后系统可能误将数据标记为已处理)。
解决操作:
- 检查本地MTA状态:执行
systemctl status postfix(对应你使用的MTA命令),确认服务正常运行。 - 若本地无可用MTA,取消配置中
smtp和smtp_port的注释,填写可用的邮件中继服务器信息:smtp = '你的中继服务器IP/域名'; smtp_port = 25; # 若用加密端口可改为587 - 测试端口连通性:用
nc -zv 你的中继服务器IP 25验证端口是否能正常访问。
2. 报告发送状态标记异常
当首次发送失败后,Rspamd可能会将该周期的报告标记为已发送,导致实际有数据但发送命令认为无内容可发。
解决操作:
- 删除对应周期的发送标记(Redis存储):
redis-cli DEL dmarc:sent:20230612 - 重新执行发送命令:
rspamadm dmarc_report -v 20230612
3. 发件邮箱或接收方有效性问题
确认配置中的redacted@foo.bar邮箱可正常发送邮件,同时检查待发报告中的收件邮箱是否存在拼写错误或拒收情况。
解决操作:
- 测试发件邮箱功能:用
swaks工具验证发送能力(替换对应参数):swaks --from redacted@foo.bar --to test@example.com --server 你的SMTP服务器 --port 25 - 核对待发报告中的收件邮箱:执行
rspamadm dmarc_report -v -n 20230612查看收件人地址是否正确。
4. Rspamd版本或Redis缓存问题
老旧版本的Rspamd可能存在DMARC报告发送的bug,或者Redis中缓存的DMARC数据出现异常。
解决操作:
- 升级Rspamd到稳定版:Debian/Ubuntu系统执行
apt update && apt upgrade rspamd,其他系统对应执行包管理升级命令。 - 清空DMARC相关缓存(谨慎操作,会丢失未发送的历史报告):
redis-cli KEYS "dmarc:*" | xargs redis-cli DEL - 等待系统收集新的DMARC数据后,再尝试手动发送。
内容的提问来源于stack exchange,提问作者Lars
相关产品推荐
相关产品推荐

