一個域的兩個技術不同的郵件伺服器(Postfix / Exchange)
我在 Debain Postfix 郵件伺服器上有幾個使用者。一切皆好。現在我們需要將一些使用者放到一個託管的 Exchange Server (Office 365) 上。
是否可以以這種方式為一個域配置郵件伺服器和 DNS MX,如果使用者收件箱不在 server1 上,則查找將轉發到 server2?
- 最好的做法是什麼?
- 誰是發送 smtp?
謝謝彼得
嗯….不,是的。
問題是當 DNS MX 記錄查找完成時,DNS 伺服器不知道使用者是誰(該資訊不會發送到 DNS 伺服器),因此 DNS 伺服器無法發送專用的 MX 記錄一些使用者。DNS 如此了解您的使用者會很奇怪(技術術語是“分層違規”)。另外,如果電子郵件有 2 個人
To:
線上,一個是為原始使用者之一,另一個是為 Exchange 使用者?它變得混亂。我們將在 Postfix 伺服器上發送電子郵件的使用者稱為“Group P”,將希望在 Exchange 上發送電子郵件的使用者稱為“Group E”。
解決方案是讓 Postfix 伺服器在本地傳遞 Group P 的電子郵件,並將 Group E 的電子郵件轉發到 Exchange 伺服器。同樣,Exchange 伺服器需要知道在本地傳遞 E 組的電子郵件,而 P 組的電子郵件需要轉發。
關鍵是要確保這兩個伺服器具有完全相同的資訊。否則,兩台伺服器都會在本地傳遞一個人的消息,或者(更糟糕的是)兩者都不會認為他們對電子郵件負責,並且它會在伺服器之間來回往返。
E組較小時的解決方案:
如果 E 組很短(即只有少數例外),您可以這樣做:
- 在 Postfix 上,為每個使用者設置別名以將他們的電子郵件轉發到他們的交換帳戶。
- 在 Exchange 上,將伺服器配置為將未知使用者的電子郵件轉發到 Postfix 伺服器。(遺憾的是,我不知道此設置,因為我不知道 Exchange)。
大型網站的解決方案:
對於較大的配置,我建議將兩個伺服器(稱為 serverE.example.com 和 serverP.example.com)配置為分別為 user@serverE.example.com 和 user@serverP.example.com 發送本地電子郵件,但是不在本地為 user@example.com 發送電子郵件。每台機器都訪問一個 LDAP/AccticeDirectory 數據庫,該數據庫表明(例如)tom@example.com 將他的電子郵件發送到了 tom@serverP.example.com,而geri@example.com 將她的電子郵件發送到了geri@serverE.example.com . 這樣,事情就會保持同步,您只有一個地方可以更新。
鮮為人知的事實:使用後綴,如果
aliases
文件包含:tom: tom@serverP.example.com geri: geri@serverE.example.com
而mail.cf 的mydestination 包含
serverP.example.com
但不包含serverE.example.com
,則mail totom
將在本地投遞,而mail togeri
將中繼到serverE。它不會創建循環!我提出這個問題是因為在我知道這一點之前,我編寫了一個大的 perl 腳本,它為每個郵件伺服器生成
aliases
文件,這樣(例如)tom
就不會出現在aliases
文件中serverP
,而只是出現在所有其他文件中。一旦我知道了這一點,我就刪除了腳本。完全相同的aliases
文件可能在所有機器上。(當然,由於 Exchange 不使用aliases
文件,因此必須在這些伺服器上執行其他操作。)如果
myorigin = example.com
然後傳出的電子郵件將在行中包含“tom@example.com”,那麼From:
沒有人會更明智地知道有兩個電子郵件伺服器。(我不知道 Exchange 等價物,但我確定它存在。)測試建議
測試此配置時,不要只測試傳入的電子郵件是否發送到正確的位置。還要確保從每個客戶發送的電子郵件發送到正確的位置。例如,讓 Exchange 使用者發送一條消息
To: tom, geri
並確保兩者都送達。讓 Debian 使用者也這樣做。我已經看到(例如)別名和/或轉發沒有在兩台機器上正確設置並且電子郵件tom
在兩台伺服器上為使用者本地傳遞的情況。tom
必須在這兩個地方閱讀電子郵件,直到這個問題得到解決。哎呀!