Postfix将别名域邮件中继至主服务器的配置问题
Postfix将别名域邮件中继至主服务器的配置问题
嘿,我刚好碰到过类似的Postfix配置坑,给你几个靠谱的解决方案,不用手动加一大堆用户到别名映射里:
核心问题分析
你当前把virtual_example.org设为virtual_alias_domains,同时只在virtual_alias_maps里配置了webmaster@的别名。这会让Postfix认为该域所有收件人都要在别名映射里匹配,找不到就会触发“User unknown in relay recipient table”错误,还会把所有未知用户的邮件转去webmaster@——这就是同域用户互发邮件出错的根源。
方案一:用transport_maps直接中继整个域(推荐)
这个方法最直接,把目标虚拟域改成中继域,指定所有邮件转发到主邮件服务器:
- 修改Postfix主配置(main.cf)
先把virtual_example.org从virtual_alias_domains移到relay_domains,然后启用transport_maps:# 移除virtual_alias_domains里的virtual_example.org,换成下面的配置 relay_domains = virtual_example.org transport_maps = hash:/etc/postfix/transport - 配置transport规则
编辑/etc/postfix/transport文件,添加一行指定该域的转发目标:virtual_example.org smtp:[main-mail-server.example.com]- 方括号
[]是强制Postfix直接连接指定服务器,不查询MX记录;如果主服务器有正常的MX配置,可以去掉括号。
- 方括号
- 生成哈希表并重启Postfix
postmap /etc/postfix/transport systemctl restart postfix
方案二:保留别名映射的同时中继剩余邮件
如果还需要保留webmaster@处理退信的功能,可以用正则匹配的virtual_maps,先匹配特定别名,剩下的全部转发:
- 修改main.cf的virtual_alias_maps配置
换成支持正则的映射文件:virtual_alias_domains = virtual_example.org virtual_alias_maps = regexp:/etc/postfix/virtual_regexp - 编辑正则映射文件
打开/etc/postfix/virtual_regexp,添加两行:/^webmaster@virtual_example.org$/ webmaster@your-main-domain.com /.+@virtual_example.org/ smtp:[main-mail-server.example.com]- 第一行优先匹配退信专用的
webmaster@,转发到你指定的地址; - 第二行用正则匹配该域所有其他地址,直接转发到主邮件服务器。
- 第一行优先匹配退信专用的
- 重启Postfix生效
systemctl restart postfix
验证配置是否生效
可以用Postfix自带的查询命令测试:
# 测试方案一的transport映射 postmap -q virtual_example.org /etc/postfix/transport # 测试方案二的正则别名映射 postmap -q user2@virtual_example.org /etc/postfix/virtual_regexp
如果返回对应的转发规则,就说明配置没问题了。
备注:内容来源于stack exchange,提问作者RubbelDeCatc
相关产品推荐
相关产品推荐

