通常來說,可能不是很多人會遇到這種情況,就是你想要更換信箱,但又需要將目前信箱的郵件帶過去。但一旦發生,你就會發現,一個和互聯網幾乎相同年齡的東西,居然沒有一個成熟的匯出和匯入功能。
比這更令人頭痛的是,如果你是一個郵件伺服器管理員,你就悲慘的發現,有伺服器權限也不行。郵箱裡的內容是使用特殊各式存放的,它不是一個簡單的資料庫,需要使用相應的服務進行存取,直接移動檔案很可能導致資料損壞,得不償失。 影像同步 就派上用場了,它直接使用郵件的 IMAP 協議,下載舊郵箱的數據,然後同步到新的信箱,郵件的寄件人,收件者,時間,附件等等等等一應俱全!
難題
當然,如果是這麼簡單就結束了,那這片文章的意義也就不存在了——我有一個更複雜的使用情況,我的客戶需要將郵箱遷移到新的伺服器,使用新的面板,即從 Plesk 遷移到 Hestia。 那麼問題來了,網域只有一個,我怎麼能實現從 A 到 B 但只能使用 A 的情況?
最後我的解決方案是建立一個臨時郵箱,使用網域 B,這樣我就可以先把郵件從 A 同步到 B,然後修改網域配置,將網域名稱解析到新的伺服器,再將郵件從 B 同步回 A。由於此時網域名稱已經解析到了新的伺服器,實際上則是將郵件同步到了新的郵件伺服器上。然後新伺服器上建立的使用者使用相同的帳號和密碼,理論上客戶不需要做任何更改,只要忍耐短時間的服務暫停就可以了。
配置/踩坑
有一些額外的配置需要完成,默認情況下,如果你打開 Hestia 的 webmail,會看到內部錯誤,這是由於檔案權限導致的,使用以下兩個命令修復:
1 2 |
sudo chown -R hestiamail:hestiamail /etc/roundcube/ sudo find /etc/roundcube/ -type f -iname "*php" -exec chmod 640 {} \; |
另外,如果你的信箱能成功寄信但不能收到,需要查看 進出口4 日誌: /是/日誌/出口4/拒絕日誌 ,如果是如下類似錯誤:
1 |
Rejected because 209.85.214.171 is in a black list at zen.spamhaus.org |
那個大機率是由於 Exim4 預設使用的 垃圾郵件屋 列表過於激進。 在我的測試中,它會直接封鎖任何 gmail 郵件,我們可以去掉它。編輯 /等等/出口4/網域名稱伺服器.CONF 去掉 禪.垃圾郵件屋.組織 這行保存即可。然後使用命令重啟 Exim4 系統控制 重新開始 出口4
影像同步
如果你剛好跟我一樣使用 蘋果系統 的話,請不要使用 自製 來安裝 影像同步。從 2021 年開始,brew 安裝的 imapsync 就有奇怪的記憶體外洩問題,該問題至今仍未修復(沒錯,我也遇到了)。方便省心的解決辦法是安裝依賴後在 Ubuntu 上直接運行它。當然如果你覺得麻煩,也可以使用 Docker,這裡我找到了一個支援 arm64 的鏡像 你可以直接用這個鏡像來跑 imapsync,穩定高效!
這裡給一個我使用的命令舉例:
1 2 3 4 |
docker run --rm -it jauderho/imapsync:latest \ --host1 hostFrom.com --user1 your_address1 --password1 "pwd1" \ --host2 hostTo.com --user2 your_address2 --password2 "pwd2" \ --automap |
值得注意的是,你的密碼應該使用雙引號引起來,這樣可以避免一些特殊符號衝突所導致的命令錯誤。
另外,強烈推薦在你的新伺服器上運行此命令,因為 imapsync 會下載再上傳所有內容-包括附件。這將是一個非常漫長的操作。最理想的情況是在你的新伺服器上運行,這樣數據可以直接下載到你的伺服器,然後本地存入資料庫。尤其像我後期還需要再在同一個伺服器上同步兩個郵箱,而一般家庭寬頻的上傳又很小,真是個大坑。
垃圾郵件以及防毒功能開關
給 Hestia 配置 斯巴馬刺客 和 克拉馬夫 。如果你跟我一樣使用了小記憶體的 Lightsail 作為伺服器,那麼即使你勾選了這兩個模組,它們也可能不會被安裝,這時就需要我們手動安裝它們: 須藤 易於 安裝 斯巴馬刺客 克拉馬夫 克拉馬夫-守護程式
編輯 赫斯提亞 的設定檔 須藤 我們 /USR/本地/赫斯提亞/CONF/赫斯提亞.CONF ,在文件開頭加入如下兩行:
1 2 |
ANTISPAM_SYSTEM='spamassassin' ANTIVIRUS_SYSTEM='clamav-daemon' |
在 Hestia 管理員帳號介面進入設定→出口4 的編輯介面,將下面 4 行取消註釋:
然後逐行執行下面的命令來配置 克拉馬夫
1 2 3 4 5 |
gpasswd -a clamav mail > /dev/null 2>&1 gpasswd -a clamav Debian-exim > /dev/null 2>&1 cp -f /usr/local/hestia/install/deb/clamav/clamd.conf /etc/clamav/ update-rc.d clamav-daemon defaults systemctl start clamav-daemon |
還有下面的命令配置 斯巴馬刺客
1 2 3 4 |
update-rc.d spamassassin defaults > /dev/null 2>&1 sed -i "s/ENABLED=0/ENABLED=1/" /etc/default/spamassassin systemctl start spamassassin systemctl enable spamassassin > /dev/null 2>&1 |
最後編輯文件 /等等/圓立方體/配置.公司.PHP ,在頂部加入以下內容:
1 2 3 4 5 6 7 |
// See real folder names in Roundcube, only temp. activated: // Disable localization of the default folder names listed above $config['show_real_foldernames'] = true; // default folder to store spam messages // NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP) $config['junk_mbox'] = 'Spam'; |
重啟伺服器,然後你就能在 赫斯提亞 郵箱設定介面看到垃圾郵件和防毒的開關了。
本文由 落格博客 原創撰寫:落格博客 » imapsync 信箱遷移 Plesk 到 Hestia
轉載請保留出處和原文鏈接:https://www.logcg.com/archives/3853.html