
我有一個場景:
- Postfix 伺服器 M(儲存郵件)
- Postfix 伺服器 A(使用網際網路連線 IA 中繼郵件)
- Postfix 伺服器 B(使用網際網路連線 IB 中繼郵件)
- 內部 DNS 伺服器(進行本機名稱解析)
伺服器M、A和B位於同一個網路LAN中,這意味著即使網路連線IA和IB斷開,M&A和M&B之間的通訊也不一定會斷開,所以我不能使用Postfix的smtp_fallback_relay選項為了這。
現在,我需要伺服器 M 僅提交到在中繼到它時具有互聯網連接的伺服器。
我們怎樣才能做到最好?
我們嘗試了什麼
我和我的同事分享了兩種選擇(並非詳盡無遺):
- 建立腳本以使中繼郵件在郵件儲存 (M) 的感知中從「LAN」離線,以便它回退到回退中繼
- 在dns 伺服器(D) {或M 上的等主機中,任何更好,但M 的基本DNS} 上建立腳本,該腳本將mail-relay.ourdomain.com 更改為指向具有互聯網的伺服器郵件中繼A 或 B使用足夠小的 TTL 進行存取(例如 5 秒)
這兩個選項在大多數情況下都有效,我需要的是為什麼它們不起作用(使用其中一個有任何危險)?
答案1
這兩種方法的問題都是賽車狀況,即您的互聯網正在運行,A 或 B 確認已成功傳送給他們,但是當 A 或 B 嘗試將其轉發到互聯網時,連接就消失了。
上述場景是可能的,因為電子郵件在 postfix 中的流動方式。
Email from client ---> Received ---> Queued -> Sent
當電子郵件已排隊時,伺服器 A 中的 Postfix 會向 M 發送確認電子郵件已被 A 接受的訊息。因此,當 postfix 嘗試向網路發送電子郵件時,連線可能會被切斷,並且您的電子郵件將排隊直到連線再次恢復。
注意:這種行為在典型的 MTA 中是預料之中的。請記住,SMTP 是儲存並轉發協定.