Email

讓 Exim 向外部投遞本地郵件

  • January 10, 2014

我們有一個不尋常的郵件設置——前面是 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 而言,它執行了整個節目。

我正在閱讀有關在 Exim 中設置 SmartHost 的資訊,但這需要身份驗證 - 關鍵是,Exim 中的帳戶與 Apps 中的帳戶不匹配。

如何配置 Exim 以通過外部路由傳遞本地郵件?

根據您在問題評論中引用的答案(配置伺服器以將無法路由的電子郵件轉發到另一個電子郵件伺服器),我重寫了邏輯部分以使用整個電子郵件地址,而不僅僅是本地部分。以下似乎在我的測試中起作用。

  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

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

4)您可以使用 exim 的 -bt address 測試選項進行測試(我的配置沒有為有效本地使用者提供的第二個路由器,但您的應該是這樣的,所以第一個使用者會顯示本地傳遞):

$ 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] 

引用自:https://serverfault.com/questions/565973