问题
我可以强制 Exim 将收件人未知的邮件转发到另一台主机吗?
设想
我希望以某种方式分阶段将 Exim 迁移到 Exchange,以便我能够在服务器之间移动各个帐户,同时保持所有帐户正常运行。
我的想法是:
- 配置 Exchange 充当内部中继,即,将无法识别的收件人中继到 Exim,
- 在 Exim 上执行类似的配置,并在两端强制实施任何形式的循环保护(针对两台服务器上都未知的消息),
- 将 Exim 保留为 MX 记录目标,直到暂存结束,
- 逐步在 Exchange 上创建新账户,同时在 Exim 上禁用这些账户
如果这个想法因任何原因听起来很糟糕,我也欢迎任何批评。
答案1
您可以结合 ACL 和路由器来实现这一点。
首先,您必须将所有消息通过 ACL 来验证特定帐户的存在:
acl_smtp_rcpt:
accept domains = +local_domains
!verify = recipient
set acl_m_fwd = go2xchg
. . . .
# all the rest rules
然后你必须添加路由器:
begin routers
xchg:
driver = manualroute
condition = {if eq{$acl_m_fwd}{go2xchg}}
route_list = * 11.22.33.44
transport = remote_smtp
no_more
. . . .
# all the rest routers
其中 11.22.33.44 是 Exchange 服务器的 IP 地址。
答案2
由于您的 IP 是 11.22.33.44,因此您可以让 ACL 在检查中忽略此 IP。因此,如果消息来自该 IP,则不会转发。
hosts = !11.22.33.44