Exim

Exim, hot to route local mail to other address

  • December 9, 2015

我在我的 debian wheezy 伺服器上設置了一個 Exim4 伺服器。此郵件伺服器僅發送來自本地主機的郵件。目的是為我的網站發送郵件。

我有 cron 任務和其他為root使用者生成郵件的服務。這些郵件並沒有/var/mail像以前那樣儲存在,而是由 exim 發送到root@mydomain.com.

我嘗試讓 exim 為rootto`mypersoaddress@gmail.com而不是發送郵件root@mydomain.com`。

我嘗試添加.forwardin /rootwith`mypersoaddress@gmail.com作為內容。我也嘗試/etc/aliasesroot: mypersoaddress@gmail.com. 事實是路由適用於root@localhost但不適用於root解決為root@mydomain.com`

我測試了路由是如何解決的exim -bt

root@srv02:~# exim -bt root@localhost
R: system_aliases for root@localhost
R: dnslookup for mypersoaddress@gmail.com
mypersoaddress@gmail.com
   <-- root@localhost
 router = dnslookup, transport = remote_smtp
 host gmail-smtp-in.l.google.com      [173.194.67.27] MX=5
 host alt1.gmail-smtp-in.l.google.com [74.125.143.27] MX=10
 host alt2.gmail-smtp-in.l.google.com [74.125.25.27]  MX=20
 host alt3.gmail-smtp-in.l.google.com [173.194.64.27] MX=30
 host alt4.gmail-smtp-in.l.google.com [74.125.142.27] MX=40
root@srv02:~# exim -bt root
R: dnslookup for root@mydomain.com
root@mydomain.com
 router = dnslookup, transport = remote_smtp
 host aspmx.l.google.com      [173.194.78.27] MX=1
 host alt1.aspmx.l.google.com [74.125.143.27] MX=5
 host alt2.aspmx.l.google.com [74.125.25.27]  MX=5
 host alt4.aspmx.l.google.com [74.125.142.27] MX=10
 host alt3.aspmx.l.google.com [173.194.64.27] MX=10

我敢打賭,這與我的伺服器的配置方式有關(而不是 exim 的配置方式)。但是為了很好地理解,我想為兩者提供一個解決方案:

  • 如何root解決root@localhost
  • 如何root@mydomain.com路由到mypersoaddress@gmail.com

您正在使用的調試輸出表明您正在使用 Debian 風格的配置系統。我將把它稱為exim4以便清楚地表明除了源中的預設 exim 配置之外還有一些額外的配置魔法。稍後閱讀本文的任何人都需要清楚地了解,除非他們正在執行 Debian 風格的 exim 配置,否則其中一些建議並不適用。

-bt 輸出的差異提供了一個線索:

root@srv02:~# exim -bt root@localhost
R: system_aliases for root@localhost
R: dnslookup for mypersoaddress@gmail.com
mypersoaddress@gmail.com

root@srv02:~# exim -bt root
R: dnslookup for root@mydomain.com
root@mydomain.com

在第一個中,它知道在 system_aliases 路由器中查找,因為“localhost”被配置為允許在別名文件中查找的域之一。但在第二個中,它跳過了該別名文件,因為“mydomain.com”不在該列表中。在 exim4 中,該列表是MAIN_LOCAL_DOMAINS宏。

據我估計,其中一件事可能會解決您的問題。第 2 項及以後的項目是對您的 exim.conf 的潛在調整。由於您執行 exim.4,您需要調整 /etc/exim/ 中的 Debian 郵件配置文件,然後執行 exim4-conf.conf 或類似的東西以讀取這些更改並生成新的配置文件(/var/ exim4 實際使用的 lib/exim4/config.autogenerated*)。:

  1. 確保exim 使用者可以讀取**/root/.forward**文件。
  2. 將 mydomain.com 添加到名為 +local_domains 的域列表中,這將使 exim4 查找 $HOME/.forward 文件。聽起來您已經正確設置了此設置。
  3. 將 userforward 路由器移動到 dnslookup 路由器之前(它已經這樣做了,但也許您已經更改了預設路由器佈局?)
  4. 將 mydomain.com 添加到允許搜尋別名文件的域列表中。(可能這會破壞其他東西)

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