使 Exim 向外发送本地邮件

Sud*_*ned 5 email exim g-suite

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

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

为了更好地说明它,请参阅此高质量图表:

[Google Apps] (Tom, Dick, Harry)

   |
   v
[Exim] (Jane, Mary, Sue)
Run Code Online (Sandbox Code Playgroud)

发送给 Jane 的邮件会被 Google 转发给 Exim。发送给 Tom 的邮件只是由 Google 递送。这是有效的部分 - 问题是,Jane 无法给 Tom 发送电子邮件,因为就 Exim 而言,它运行着整个节目。

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

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

Tod*_*ons 5

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

1) 将example.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
Run Code Online (Sandbox Code Playgroud)

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

remote@example.com: yes
# Not required if this is a local account, but
# shows how flexible this approach can be
local@example.com: no
Run Code Online (Sandbox Code Playgroud)

4) 您可以使用 exim 的 -bt 地址测试选项进行测试(我的配置没有用于有效本地用户的第二个路由器,但您的配置应该如此,以便第一个用户显示本地交付):

$ exim -bt local@example.com
local@example.com is undeliverable: Unrouteable address
$ exim -bt remote@example.com 
remote@example.com
  router = not_local, transport = remote_smtp
  host s7a1.psmtp.com [64.18.6.10] 
Run Code Online (Sandbox Code Playgroud)

  • 这似乎非常有效。我很快就会接受答案,目前正在进行一些深入的测试。另外,请接受我衷心感谢您回答了一个典型的回答是“你为什么要那样做?停止尝试”的问题。 (2认同)