我们有一个不寻常的邮件设置 - 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]