Linux

熱/不冷不熱的郵件伺服器設置

  • August 20, 2009

我們有兩台郵件伺服器(“dubone”和“dubdeuce”),一台完成所有工作,另一台閒置。我們希望有一個設置,如果 dubone 忙或宕機,dubdeuce 可以像 dubone 一樣接受/拒絕/過濾電子郵件。

然後,一旦 dubone 再次可用,dubdeuce 會將其儲存的所有電子郵件推送到 dubone,以便電子郵件都在一個地方。

我們正在使用由 MySQL 支持的 Exim4 和 Dovecot,並且可以通過 RoundCube 訪問。兩台機器都執行 Ubuntu Linux。

如何在兩台機器之間同步數據庫,以便 dubdeuce 始終是最新的(它需要正確地完成其工作),然後我將如何指示 dubdeuce 將其累積的所有消息推送到 dubone?

您在此處詢問的內容包含三個組件:數據庫複製、郵件冗餘和使用者訪問。

數據庫複製很容易,並且在MySQL 文件中有很好的介紹。

郵件複製通常與確保正確設置 MX 記錄一樣簡單。如果 dubdeuce 不是主 MX,它會在主 MX 再次可用時將郵件轉發到主 MX。

但是,您沒有明確說明,但您包含 roundcube 意味著您希望第二個系統就 MUA 而言完全可操作 - 您希望使用者能夠閱讀電子郵件。如果不是這種情況——你很高興roundcube 在 dubone 回來之前一直處於離線狀態——那麼上述組件將為你完成這項工作。

再一次:如果您想要的只是一個簡單的系統,它將儲存和轉發電子郵件直到主伺服器返回,那麼您所需要的只是 mysql 的數據庫複製並使用輔助 MX。這個系統應該隨時執行,而不是在需要時啟動。


如果您想要一個完全冗餘的系統,其中 roundcube 始終​​可用,那麼您想要的是兩個系統之間的共享郵件池。沒有真正的方法可以將 dubduece 配置為主要 MX 並讓使用者能夠從中讀取郵件,並讓它明智地將電子郵件轉發到 dubone。

所以,你需要一個共享的郵件池。這可能是作為文件伺服器的第三個系統,將郵件池提供給兩個主要主機,但是由於鎖定問題,長期以來一直建議不要將 NFS 用於郵件池。

這可以在兩個節點之間使用DRBD來完成,在活動/備份模式下 - 當一個節點發生故障時,您使用心跳將另一個節點切換到活動狀態。當第一個節點重新上線時,您還需要一個心跳程序來切換所有內容。您仍然需要弄清楚如何複製數據庫 - 您現在可能需要一個多主機設置。

最後,您可以使用 DRBD 做同樣的事情,但在其上使用集群感知文件系統,並讓兩個節點始終處於活動狀態。但這有點複雜。您也可以在節點之間對整個郵件系統進行 DRBD。並且有很多方法可以擴大規模——更高級的解決方案涉及 SAN 和 Citrix Xenserver 或 VMware 等 VM 堆棧。

為了我的錢,我會堅持使用主動/被動 DRBD 郵件池、多主機 mysql 或 DRBD 主動/被動支持的 mysql,並使用 heartbeat 在故障轉移時啟用主動服務。另一種方法是使用 Xen 或 KVM 或任何您喜歡的方式將整個郵件伺服器放入 VM,將 VM 備份到 DRBD 系統,並在發生故障時對 DRBD 進行心跳故障轉移並在第二個節點上啟動 VM . 在這個例子中,你實際上只有“一個”郵件伺服器,它只是在你的節點之間浮動。缺點是您必須等待它在故障轉移時啟動,這可能需要一段時間。


附帶說明一下,無論您採用哪種方式,請確保您的垃圾郵件/病毒/惡意軟體/等掃描在兩個系統上的配置相同。

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