Docker-Mailserver(基于Postfix)收件白名单配置方案咨询
Docker-Mailserver(基于Postfix)收件白名单配置方案咨询
嘿,我之前刚好碰到过类似的Docker-Mailserver v12.x版本的SPF/DMARC白名单问题,给你梳理下可行的解决方案:
首先得明确:Docker-Mailserver v12.1.0默认是由Rspamd负责SPF、DKIM、DMARC这些邮件认证检查的,你配置的postfix-policyd-spf.conf是Postfix侧的SPF检查组件,但大概率因为Rspamd的规则优先级更高,所以之前的配置没生效——从你收到的退信提示rejected by DMARC policy也能看出来,这是Rspamd的DMARC规则触发的拦截。
接下来分步骤调整:
一、Rspamd侧配置白名单(核心解决DMARC拦截)
因为退信是DMARC规则导致的,直接在Rspamd里把对方的发件人域名或发送IP加入白名单即可:
- 先进入你的Docker-Mailserver容器:
docker exec -it <你的容器名称> bash - 编辑Rspamd的DMARC白名单配置:
打开/etc/rspamd/local.d/dmarc.conf,添加(替换成你需要白名单的域名):
如果需要按IP白名单,就编辑whitelist_domains = ["mycustomer.de", "xxxxxx.erprdyy.prod.outlook.com"];/etc/rspamd/local.d/spf.conf:
要是需要更灵活的配置(比如批量添加域名),可以用multimap:whitelist_ip = ["x.y.187.36/32", "172.28.0.0/16"];- 创建
/etc/rspamd/local.d/dmarc_whitelist.map文件,每行写一个要白名单的域名:mycustomer.de xxxxxx.erprdyy.prod.outlook.com - 编辑
/etc/rspamd/local.d/multimap.conf,添加:dmarc_whitelist { type = "from"; map = "/etc/rspamd/local.d/dmarc_whitelist.map"; action = "accept"; }
- 创建
- 重启Rspamd让配置生效:
supervisorctl restart rspamd
二、Postfix侧的补充配置(可选,确保SPF检查的白名单生效)
如果你希望Postfix的postfix-policyd-spf也能生效,需要先确认Postfix是否启用了这个策略服务:
- 检查
/etc/postfix/main.cf里的smtpd_recipient_restrictions配置,确保包含:
注意smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_policy_service unix:private/policyd-spf, reject_unauth_destinationcheck_policy_service这一项要加在合适的位置(一般在permit_sasl_authenticated之后,reject_unauth_destination之前)。 - 另外,你之前的
postfix-policyd-spf.conf里的Domain_Whitelist应该填发件人域名(mycustomer.de),而不是对方的邮件服务器域名——因为SPF检查是验证发件人域名的DNS记录是否包含发送IP,之前填的mailxxxxxxx.com这类是对方的服务器域名,不对,得改成实际的发件人域名。 - 重启Postfix:
supervisorctl restart postfix
三、验证配置效果
让对方再发一封测试邮件,然后查看容器内的/var/log/mail.log,搜索邮件主题或发件人,确认日志里没有SPF/DMARC相关的拒绝提示,邮件成功进入收件箱就说明配置生效了。
备注:内容来源于stack exchange,提问作者mmytx
相关产品推荐
相关产品推荐

