Modoboa搭配Postfix部署后入站邮件报loops back to myself错误如何解决?
报错产生原因
你遇到的mail for example.com loops back to myself报错核心逻辑是:
Postfix收到发往example.com域的邮件时,首先检查mydestination参数,发现该域不在本地投递域列表中,于是查询example.com的MX记录,得到MX地址是mail.example.com,刚好对应Postfix自身的服务地址,Postfix判定存在邮件转发环路,因此直接拒收邮件。
由于你使用Modoboa邮件系统,默认采用虚拟域+虚拟用户的方式管理邮箱,不会将业务投递域加入mydestination,触发该报错的核心原因是Postfix的虚拟域配置缺失,未将example.com识别为可投递的虚拟邮箱域。
排查修复步骤
- 第一步:确认
mydestination配置合规
执行postconf mydestination,确认返回值为$myhostname或者仅包含mail.example.com、localhost这类本地主机名,不要加入example.com,避免和Modoboa的虚拟域逻辑冲突。你的当前配置是符合要求的,无需修改。 - 第二步:验证虚拟域配置
执行命令postconf virtual_mailbox_domains,确认返回值包含Modoboa的虚拟域查询配置,类似如下格式:
你也可以直接查询指定域名是否在虚拟域列表中:virtual_mailbox_domains = mysql:/etc/postfix/sql-domains.cf
如果执行后无返回值,登录Modoboa后台,进入「域名」管理页面,确认postmap -q example.com mysql:/etc/postfix/sql-domains.cfexample.com已经被添加且处于启用状态。 - 第三步:验证传输规则配置
执行命令postconf transport_maps,确认返回值包含传输规则查询配置,类似如下格式:
执行查询命令确认投递规则:transport_maps = mysql:/etc/postfix/sql-transport.cf
正常返回结果应为postmap -q example.com mysql:/etc/postfix/sql-transport.cflmtp:unix:private/dovecot-lmtp,代表发往该域的邮件会交给Dovecot的LMTP服务处理,不会触发外部转发逻辑。 - 第四步:重载配置生效
所有配置调整完成后,执行命令重载Postfix配置:systemctl reload postfix - 第五步:功能验证
使用外部邮箱向你的user@example.com地址发信,查看/var/log/mail.log日志,确认无环路报错,邮件正常投递到对应邮箱。
特殊场景说明
如果你不使用Modoboa的虚拟邮箱功能,仅需用本地系统用户收信,直接修改/etc/postfix/main.cf中的mydestination参数,添加example.com:
mydestination = $myhostname, example.com, localhost
重载Postfix配置后即可正常收信。
内容的提问来源于stack exchange,提问作者Radial
相关产品推荐
相关产品推荐

