Linux

如何測試並實際執行將 Internet 域轉移到有關郵件的新伺服器?

  • February 2, 2013

我的設置是1.1.1.1託管域的生產伺服器(例如),可以說example.com。目前,postfix 和 courier(僅 IMAP)正在做託管郵件的工作。我計劃將域轉移到新伺服器(例如1.1.1.2),同樣使用後綴,但使用 dovecot 作為新的 IMAP 伺服器。我已經設置了 postfix1.1.1.2來接受 example.com 的所有郵件,這些郵件被傳遞到郵箱並且可以通過 IMAP 訪問。所有帳戶,包括郵件,都是 shell 帳戶。我在兩台伺服器上都使用 Debian。

在我的虛擬主機提供商的網路界面中,我可以為example.com. 1.1.1.1目前,它們分別指向server.example.com(後者1.1.1.1也自動解析為 )。我無法影響任何 TTL 設置。而且,我不會更改我的提供商,只是更改託管域的虛擬機。

兩個問題:

  1. 我想讓我的舊伺服器1.1.1.1將所有收到的郵件傳送到新伺服器1.1.1.2以進行測試(例如測試郵件過濾器、垃圾郵件辨識等,因為並非所有內容都將設置相同)。這是一個好主意(例如關於反彈等)嗎?postfix 中實現此目的的正確方法是什麼(類似於 Apache HTTP Server 中的反向代理)?
  2. 執行從舊伺服器到新伺服器的域轉移的最佳方法是什麼,這樣停機時間最短(至少在 IMAP 帳戶轉移期間,我確信我需要停止所有郵件伺服器)並且沒有郵件失去/被延遲?我的想法是讓舊伺服器在一段時間內將郵件轉​​發到新伺服器,以便也可以從具有過時 DNS 記憶體的系統接收郵件。

一般來說,我正在尋找一種方便且最佳實踐的方法來執行此操作。而且,我不知道我對這兩個問題的想法是否指向正確的方向。

我通過讓舊伺服器1.1.1.1將所有郵件轉發到新伺服器來做到這一點1.1.1.2。在舊伺服器上使用 postfix 1.1.1.1,您可以執行以下操作將每個傳入郵件的副本發送到另一台伺服器:

  1. 在每封郵件中為某個虛假域添加一個盲人收件人。例如,為每封郵件添加user@example.com密件抄送收件人user@example.migration
  2. 將此虛假域配置為傳送到您的新伺服器。因此,郵件example.migration被傳遞到1.1.1.2.
  3. 在傳送到新伺服器期間將此虛假域恢復正常。因此,在 SMTP 傳遞時替換example.migrationexample.com.

為此,請創建以下文件:

  • /etc/postfix/migration/recipient_bcc_map:
/^(.*)@example\.com$/ $1@example.migration
  • /etc/postfix/migration/transport_map:
example.migration smtp:[1.1.1.2]
  • /etc/postfix/migration/smtp_generic_maps:
/^(.*)@example\.migration$/ $1@example.com

現在將所有這些包含到您的main.cf

recipient_bcc_maps = pcre:/etc/postfix/migration/recipient_bcc_map
transport_maps = hash:/etc/postfix/migration/transport_map
smtp_generic_maps = pcre:/etc/postfix/migration/smtp_generic_maps

從 2.3 版開始的 Postfix 避免了此配置中的反彈。因此,如果在 上發生錯誤1.1.1.2,則不會返回它們(請參閱http://www.postfix.org/postconf.5.html#recipient_bcc_maps)。

現在所有郵件都作為副本傳遞到1.1.1.2. 使用此設置,您可以在新伺服器上測試所有遷移內容,例如過濾器。一定要/etc/aliases同步。

要執行遷移本身:

  1. 進行上述設置。
  2. 停止兩台伺服器上的 postfix 和 IMAP 服務。
  3. 將郵箱從舊伺服器複製到新伺服器。
  4. 在兩台伺服器上啟動 postfix,在新伺服器上啟動 IMAP。
  5. 更改域以指向新伺服器。
  6. 域切換在DNS中傳播後,使用者可以訪問他們的郵箱。

對於傳入郵件,停機時間最短,因為它們僅在第 2 步和第 3 步之間延遲。

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