You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postfix配置求助:仅处理单个邮箱地址而非整个域的邮件,同时正确路由外发邮件

Postfix配置求助:仅处理单个邮箱地址而非整个域的邮件,同时正确路由外发邮件

嗨,我来帮你搞定这个Postfix的配置问题!先理清楚你的核心需求:

  • 只处理servicebot@example.com和servicebot@asriel.example.com这两个地址的邮件,转发到本地的davidw账户
  • 所有其他外发邮件(比如发给johndoe@example.com的)都通过公司的Exchange服务器(outbound.example.com)转发,不要本地投递
  • 本地账户(比如root、davidw)的邮件正常本地处理

问题根源分析

你之前尝试去掉$mydomain从mydestination列表,结果连servicebot@asriel.example.com的邮件都被转发了,原因很明确:Exchange转发过来的邮件,To字段是servicebot@example.com(从你提供的日志里能看到:to=<servicebot@example.com>, orig_to=<servicebot@asriel.example.com>),而Postfix的路由判断是基于To字段,不是orig_to。当$mydomain不在mydestination里时,Postfix会把servicebot@example.com当成外部地址,直接转发到relayhost了。

解决方案步骤

我们需要用**虚拟别名映射(virtual_alias_maps)**来精准指定要本地处理的地址,同时调整mydestination确保整个域不会被当成本地域:

  1. 调整main.cf里的mydestination
    把原来包含$mydomain的配置改成只保留本地主机和环回地址:

    mydestination = $myhostname, localhost.$mydomain, localhost
    

    这样Postfix就不会把整个example.com当成本地域,所有非本地指定的邮件都会走relayhost。

  2. 配置虚拟别名映射
    在main.cf里添加或修改virtual_alias_maps配置:

    virtual_alias_maps = hash:/etc/postfix/virtual
    

    然后编辑/etc/postfix/virtual文件,添加以下两行:

    servicebot@example.com    davidw
    servicebot@asriel.example.com    davidw
    

    这两行的作用是告诉Postfix:不管是发给这两个地址的邮件,都转发到本地的davidw账户。

  3. 生效配置
    执行以下命令让别名映射生效,然后重启Postfix:

    postmap /etc/postfix/virtual
    systemctl restart postfix
    

验证效果

现在再测试:

  • 发邮件到servicebot@asriel.example.com或者servicebot@example.com,应该会被投递到本地davidw的邮箱,不会转发到relayhost
  • 从asriel.example.com发邮件到johndoe@example.com,会通过outbound.example.com转发,不会本地投递
  • 本地账户(比如root)的邮件依然正常本地处理

这样就完美匹配你的需求啦!

备注:内容来源于stack exchange,提问作者David White

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 12:43:16