iRedMail配置静态路由
背景
邮箱默认 MX 记录指向梭子鱼邮件网关,所有外部邮件先经过网关过滤再投递到邮箱服务器。同时在 O365 上配置了 Connector,允许直接投递到网关。
需要将特定域的邮件通过静态路由(transport map)转发到指定地址,绕过默认投递逻辑。
配置步骤
1. 新建路由表文件
sudo touch /etc/postfix/staticroute
2. 编辑路由规则
sudo vi /etc/postfix/staticroute
格式为 目标域/收件人 转发目标:
# 整个域转发
example.com smtp:[mail-gateway.example.com]
# 特定用户转发
user@example.com smtp:[internal-server.example.com]
注意:
[]表示直接使用 IP/主机名解析,不查找 MX 记录。
3. 注册 transport_maps
编辑 /etc/postfix/main.cf,找到 transport_maps 行,在其下方添加:
transport_maps = hash:/etc/postfix/transport
hash:/etc/postfix/staticroute
如果文件中已有 transport_maps,在末尾追加即可(多个映射源用空格分隔)。
4. 生成哈希文件并重载
sudo postmap /etc/postfix/staticroute
sudo systemctl reload postfix
5. 验证
查看当前路由是否生效:
postmap -q example.com /etc/postfix/staticroute
发送测试邮件,检查 maillog:
tail -f /var/log/mail.log | grep 'staticroute'
排查
- 修改路由后不生效 → 确认执行了
postmap生成.db文件 - 转发目标不可达 → 检查目标服务器是否开放 25 端口,防火墙是否放行
- 格式错误 →
postfix check可检查配置语法