如何測試並實際執行將 Internet 域轉移到有關郵件的新伺服器?
我的設置是
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.2
以進行測試(例如測試郵件過濾器、垃圾郵件辨識等,因為並非所有內容都將設置相同)。這是一個好主意(例如關於反彈等)嗎?postfix 中實現此目的的正確方法是什麼(類似於 Apache HTTP Server 中的反向代理)?- 執行從舊伺服器到新伺服器的域轉移的最佳方法是什麼,這樣停機時間最短(至少在 IMAP 帳戶轉移期間,我確信我需要停止所有郵件伺服器)並且沒有郵件失去/被延遲?我的想法是讓舊伺服器在一段時間內將郵件轉發到新伺服器,以便也可以從具有過時 DNS 記憶體的系統接收郵件。
一般來說,我正在尋找一種方便且最佳實踐的方法來執行此操作。而且,我不知道我對這兩個問題的想法是否指向正確的方向。
我通過讓舊伺服器
1.1.1.1
將所有郵件轉發到新伺服器來做到這一點1.1.1.2
。在舊伺服器上使用 postfix1.1.1.1
,您可以執行以下操作將每個傳入郵件的副本發送到另一台伺服器:
- 在每封郵件中為某個虛假域添加一個盲人收件人。例如,為每封郵件添加
user@example.com
密件抄送收件人user@example.migration
- 將此虛假域配置為傳送到您的新伺服器。因此,郵件
example.migration
被傳遞到1.1.1.2
.- 在傳送到新伺服器期間將此虛假域恢復正常。因此,在 SMTP 傳遞時替換
example.migration
為example.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
同步。要執行遷移本身:
- 進行上述設置。
- 停止兩台伺服器上的 postfix 和 IMAP 服務。
- 將郵箱從舊伺服器複製到新伺服器。
- 在兩台伺服器上啟動 postfix,在新伺服器上啟動 IMAP。
- 更改域以指向新伺服器。
- 域切換在DNS中傳播後,使用者可以訪問他們的郵箱。
對於傳入郵件,停機時間最短,因為它們僅在第 2 步和第 3 步之間延遲。