让 Exim 向外部递送本地邮件

让 Exim 向外部递送本地邮件

我们有一个不寻常的邮件设置 - Google Apps/Gmail 在前面,Exim 在我们的网络服务器上运行。Google Apps 中不存在的任何帐户的邮件都会转发到 Exim。这两者都使用相同的域。

问题是,从 Exim 帐户(或我们的 PHP 应用程序)发送的所有邮件都仅在本地传送,而不是通过 Gmail 发送。

为了更好地说明这一点,请看这张高质量的图表:

[Google Apps] (Tom, Dick, Harry)

   |
   v
[Exim] (Jane, Mary, Sue)

发送给 Jane 的邮件由 Google 转发到 Exim。发送给 Tom 的邮件仅由 Google 递送。这是有效的部分 - 问题是,Jane 无法给 Tom 发送电子邮件因为对于进出口银行而言,它掌控着整个局面。

我正在阅读有关在 Exim 中设置 SmartHost 的信息,但这需要身份验证 - 而且至关重要的是,Exim 中的帐户与 Apps 中的帐户不匹配。

如何配置 Exim 通过外部路由传递本地邮件?

答案1

根据您在问题评论中引用的答案(配置服务器将无法路由的电子邮件转发到另一个电子邮件服务器),我重写了逻辑部分以使用整个电子邮件地址,而不仅仅是本地部分。以下内容在我的测试中似乎有效。

1) 放置示例.com在您的 +local_domains 中。

2) 添加他推荐的路由器。(此路由器后面应该还有另一个路由器,可以接受 +local_domains 和具有有效本地邮箱的用户):

not_local:
  driver = manualroute
  domains = +local_domains
  transport = remote_smtp
  condition = ${lookup{$local_part@$domain}lsearch{/etc/exim/forward_to_google}}
  # Use whatever MX is correct for your domain below
  route_list = +local_domains s7a1.psmtp.com

3)创建/etc/exim/forward_to_google并输入:

[email protected]: yes
# Not required if this is a local account, but
# shows how flexible this approach can be
[email protected]: no

4) 您可以使用 exim 的 -bt 地址测试选项进行测试(我的配置没有为有效的本地用户提供第二个路由器,但您的配置应该有,因此第一个用户将显示本地传送):

$ exim -bt [email protected]
[email protected] is undeliverable: Unrouteable address
$ exim -bt [email protected] 
[email protected]
  router = not_local, transport = remote_smtp
  host s7a1.psmtp.com [64.18.6.10] 

相关内容