SMTP中继到多个主机

我们正在将我们的电子邮件从本地托pipe的服务器切换到Google应用程序。 我们有很多的用户,我希望能够一次切换一个,所以我不会被技术支持电话淹没。

在一个单独的服务器上,我安装了postfix,并将这一行添加到main.cf中:

relayhost = [1.2.3.4]

(其中1.2.3.4是我们的内部邮件服务器)。

这工作正常,通过postfix发送的所有邮件发送到内部邮件服务器应该像它应该。

不过,我也希望将相同的邮件发送到Google应用程序。 我将这一行添加到main.cf中:

relayhost = [aspmx.l.google.com]

但是,而不是发送到两个服务器,Postfix只发送到列出的最后一个。

有一个简单的解决scheme呢? 我不介意使用不同的SMTP程序或其他,但我不想为每个我们拥有的用户创build映射。

沟后缀和使用进出口。 创build两个路由器和一个像这样的传输

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导致处理在第一个路由器之后继续

完全快速的,从内存中未经学习的答案,但我认为procmail(是否还在?)可以做这种事情。

这是正常的。 第二个会覆盖第一个。 后缀configuration是var = value。 第二个var定义将覆盖第一个,而不是通过追加新的值来更新。 你不能用postfix轻松做到这一点。 我提出两个解决scheme:

解决scheme1:在该框上安装两个后缀服务。 一个在端口2526上configuration它,并用relayhost = yourhost设置它,另一个在端口2527上用relayhost = google。 使用一个简单的基于事件的程序来监听端口25,并将stream量传送到两个postfix实例(你可能会发现一些已经写好的东西,也许如果你使用BSD unix,你可以使用relayd)。 还有一个TEE插件在iptables devel的数据包复制,但我不熟悉。 我不太喜欢这个解决scheme

解决scheme2:在你的relayhostconfiguration存储和转发。 这是比第一个更复杂(configuration宽),但由于您的迁移过程是基于用户…

  1. 将用户@域重写为用户存储@域
  2. 将user-store @ domain定义为user @ domain,user @ local.domain的别名
  3. 定义运输:用户@域为谷歌。
  4. [email protected]定义传输为虚拟的:

我曾经使用这个机制,它似乎工作。 但是…我不知道如果谷歌会接受域名的电子邮件,如果你没有设置MX到谷歌服务器,所以这可能是没用的。 你应该检查一下。