Postfix配置同域名特定邮件重定向到其他服务器出现退信如何解决
问题根因
你的virtual alias配置存在逻辑错误:Postfix处理虚拟别名映射时,会对匹配到的结果递归查询,直到返回非当前托管域的地址才停止。你写的通配符规则@example.de @example.de属于自映射,匹配到除info之外的其他用户(如日志中出现的timo.bergen@example.de)时,递归查询仍然返回同域地址,系统找不到对应用户的具体映射条目,就会返回User unknown in virtual alias table报错。
修复步骤
- 第一步:修改virtual文件,替换无效的通配符自映射规则。将原有的
@example.de @example.de替换为@example.de %1@example.de,其中%1是Postfix虚拟别名的内置通配符,代表邮箱地址@符号前的用户名部分,不会触发无效递归查询。修改后的完整virtual文件内容如下:
# virtual postfix file info@example.de info@outlook.onmicrosoft.com @example.de %1@example.de
- 第二步:执行
postmap命令重新生成virtual文件对应的哈希数据库,修改文本配置后必须执行该命令配置才会生效:postmap /etc/postfix/virtual
注:如果你的virtual文件存放路径不是/etc/postfix/virtual,请替换为实际路径 - 第三步:检查Postfix主配置文件
main.cf的参数配置,确保以下配置项正确:- 已配置虚拟别名映射指向修改后的virtual文件:
virtual_alias_maps = hash:/etc/postfix/virtual - 已配置传输映射指向你的transport文件:
transport_maps = hash:/etc/postfix/transport - 已将
example.de加入中继域名列表:relay_domains = $mydestination example.de
若修改了main.cf,需执行postfix reload重载配置生效。
- 已配置虚拟别名映射指向修改后的virtual文件:
- 第四步:验证配置正确性,无需发信即可通过命令行测试映射规则:
- 测试info地址重定向是否正常:执行
postmap -q info@example.de /etc/postfix/virtual,正确输出应为info@outlook.onmicrosoft.com - 测试其他用户映射是否正常:执行
postmap -q timo.bergen@example.de /etc/postfix/virtual,正确输出应为timo.bergen@example.de - 测试传输路由是否正常:执行
postmap -q example.de /etc/postfix/transport,正确输出应为smtp:mx.mail.de
- 测试info地址重定向是否正常:执行
额外排查项
如果修复后仍有问题,可检查以下两点:
- 确认Postfix服务器到Exchange服务器(mx.mail.de)的25端口连通性正常,Exchange侧已将Postfix的IP加入白名单,未拦截转发请求
- 确认outlook.onmicrosoft.com侧未将你的Postfix服务器IP列入反垃圾黑名单,避免info地址的转发邮件被拒收
内容的提问来源于stack exchange,提问作者bymo
相关产品推荐
相关产品推荐

