我们正在将电子邮件从本地托管服务器切换到 Google 应用。我们有很多用户,我希望能够一次切换一个用户,这样我就不会被技术支持电话淹没。
在单独的服务器上我安装了 postfix 并将此行添加到 main.cf:
中继主机 = [1.2.3.4]
(其中 1.2.3.4 是我们的内部邮件服务器)。
这工作正常,所有通过 postfix 发送的邮件都会按应有的方式发送到内部邮件服务器。
但是,我还想将相同的邮件发送到 Google 应用。我在 main.cf 中添加了以下行:
中继主机 = [aspmx.l.google.com]
但是 Postfix 不会向两个服务器都发送,而是只向列出的最后一个服务器发送。
有简单的解决方案吗?我不介意使用不同的 SMTP 程序或其他程序,但我不想为我们拥有的每个用户创建映射。
答案1
放弃 postfix 并使用 exim。创建两个路由器和一个传输器,如下所示
begin routers
OurServer:
driver = manualroute
route_data = 1.2.3.4
transport = OutboundSMTP
unseen = true
TheirServer:
driver = manualroute
route_data = aspmx.l.google.com
transport = OutboundSMTP
begin transports
OutboundSMTP:
driver = smtp
unseen = true
导致处理在第一个路由器之后继续
答案2
完全是快速的,未经研究的答案,但我认为 procmail(它还在吗?)可以做这种事。
答案3
这是正常的。第二个将覆盖第一个。后缀配置是 var=value。第二个 var 定义将覆盖第一个,而不是通过附加新值来更新。您无法轻松地使用后缀做到这一点。我提出两种解决方案:
解决方案 1:在盒子上安装两个 postfix 服务。一个在端口 2526 上配置它并使用relayhost=yourhost 进行设置,另一个在端口 2527 上并使用relayhost=google 进行设置。使用一个简单的基于事件的程序来监听端口 25,并将流量转发到两个 postfix 实例(您可能会发现一些已经写好的东西,如果您使用的是 BSD unix,也许您可以使用relayd)。在 iptables devel 的某个地方还有一个用于数据包复制的 TEE 插件,但我不熟悉。我不太喜欢这个解决方案
解决方案 2:在您的中继主机上配置存储和转发。这比第一个更复杂(配置范围更广),但由于您的迁移过程是基于用户的......
- 将 user@domain 重写为 user-store@domain
- 将 user-store@domain 定义为 user@domain 的别名,[电子邮件保护]
- 定义传输:对于 user@domain 为 google。
- 定义运输[电子邮件保护]虚拟的:
我使用过一次这种机制,它似乎有效。但是...如果您没有将 MX 设置为谷歌服务器,我不确定谷歌是否会接受该域名的电子邮件,所以这可能没用。你应该检查一下。