本文件提供從 iRedMail 遷移信箱與郵件到 Mailu 的標準操作程序 (SOP)。Mailu 是一個基於 Docker 的開源郵件伺服器,支援 SMTP、IMAP、POP3、Webmail(Roundcube 或 Rainloop)、反垃圾郵件(Rspamd)等功能,適合取代 iRedMail。本 SOP 涵蓋備份 iRedMail 資料、在 Mailu 上設定環境、同步郵件以及驗證遷移結果。
/etc/iredmail-release
)。imapsync
用於郵件同步(IMAPSync 官網)。rsync
或 scp
進行資料傳輸。在 iRedMail 伺服器上備份所有必要資料,以防止資料遺失。
systemctl stop postfix dovecot amavisd clamd
/var/vmail/vmail1
。rsync
備份到本地:rsync -av /var/vmail/vmail1 /backup/vmail/
mysqldump -u root -p --all-databases > /backup/mysql_all_databases.sql
pg_dumpall -U postgres > /backup/postgres_all_databases.sql
slapcat -l /backup/ldap_backup.ldif
tar -zcvf /backup/iredmail_configs.tar.gz /etc/postfix /etc/dovecot /etc/amavisd /etc/nginx /opt/www
tar -zcvf /backup/ssl_certs.tar.gz /etc/pki/tls/certs/iRedMail.crt /etc/pki/tls/private/iRedMail.key
/var/vmail/backup/backup_sogo.sh
/var/vmail/backup/sogo/<year>/<month>/
。在 Mailu 伺服器上建立與 iRedMail 相同的網域和使用者帳號,為郵件同步做準備。
docker-compose -f /path/to/mailu/docker-compose.yml ps
https://mailu_server_ip/admin
)可訪問。admin@domain
,密碼在 mailu.env
中)。example.com
)。mysql -u root -p vmail -e "SELECT username, password FROM mailbox WHERE active=1;" > /backup/users.csv
psql -U postgres -d vmail -c "COPY (SELECT username, password FROM mailbox WHERE active=1) TO '/backup/users.csv' WITH CSV HEADER;"
ldapsearch -x -D "cn=Manager,dc=xx,dc=xx" -W -b "o=domains,dc=xx,dc=xx" "(objectClass=mailUser)" mail userPassword > /backup/users.ldif
docker-compose exec admin flask mailu admin user@example.com example.com password
/etc/amavisd/dkim/
複製並配置到 Mailu。
使用 imapsync
將 iRedMail 的郵件同步到 Mailu,避免直接複製 Maildir 檔案(因 Mailu 和 iRedMail 的 Maildir 結構可能不同)。
imapsync
:apt update && apt install imapsync
imapsync
,範例:imapsync --host1 <iredmail_ip> --user1 user@example.com --password1 <iredmail_password> \ --host2 <mailu_ip> --user2 user@example.com --password2 <mailu_password> \ --ssl1 --ssl2 --syncinternaldates --allowsizemismatch
–host1
和 –host2
:iRedMail 和 Mailu 的 IMAP 伺服器 IP 或域名。–ssl1
和 –ssl2
:啟用 SSL 連線(IMAP 預設端口 993)。–syncinternaldates
:保留郵件的原始日期。–allowsizemismatch
:忽略可能的檔案大小差異。#!/bin/bash while IFS=, read -r username password; do imapsync --host1 <iredmail_ip> --user1 "$username" --password1 "$password" \ --host2 <mailu_ip> --user2 "$username" --password2 "<mailu_password>" \ --ssl1 --ssl2 --syncinternaldates --allowsizemismatch done < /backup/users.csv
users.csv
格式正確,且 Mailu 的密碼已設定。imapsync
日誌,確保無錯誤。在新伺服器上測試 Mailu 的功能,確保資料完整。
docker-compose -f /path/to/mailu/docker-compose.yml up -d
https://mailu_server_ip/webmail
),檢查郵件是否完整。docker-compose -f /path/to/mailu/docker-compose.yml logs
/var/log/
)。/var/vmail/backup/sogo/
)傳輸到新伺服器。將 DNS 記錄指向 Mailu 伺服器,完成遷移。
mail.example.com
指向 Mailu 伺服器 IP。imapsync
同步增量資料。確認 Mailu 運行正常且無郵件遺失後,關閉 iRedMail 伺服器。
systemctl stop postfix dovecot amavisd clamd nginx
imapsync
有同步次數限制,大量帳號可能需購買授權。