简而言之: 是否有人知道将 maildir 数据从一个 dovecot 迁移到另一个 dovecot 的分步指南?
长话短说: 我尝试将我的邮件服务器迁移到新机器上。
- 旧服务器
- 后缀/dovecot
- 逐步指南:https://www.debinux.de/2015/05/mailserver-from-scratch-debian-8/
- 新服务器
- postfix/dovecot 但在 docker 中
- 逐步指南:https://github.com/tomav/docker-mailserver
我首先尝试简单地 tar 和 rsync 我的单个 maildir 目录,但是thunderbird 中的所有子文件夹都显示为灰色。
所以我想我再用 doveadm sync 做一次,但现在我找不到明确的路径来做到这一点dovecot 手册、google 或 serverfault。
难道现在真的没有简单的分步指南来指导我吗?还是说这太简单了,我看不懂?对于我这样的邮件服务器新手来说,手册没有提供足够的解释。
doveadm
同步/备份我开始使用。它告诉我:
doveadm backup -u [email protected] ...
doveadm(root):错误:用户不存在
但
doveadm user *@domain.tld
返回的正是这个用户。现在我偶然发现了下面的要点,所以我暂时不想去理解这个问题。doveadm 导入
由于我已经将数据 tar 并 rsynced 到我的新机器上,所以我接下来尝试了这个。
我启动了没有打开端口的 docker 容器,因此 dovecot 正在运行,但没有人能够连接到 postfix 或 dovecot。
我连接到容器的控制台并尝试
doveadm
导入。出现权限被拒绝的问题。尝试将权限设置为 777。doveadm
导入完成,没有告诉我任何问题,但用户的目录仍然是空的(只有标准文件夹,没有邮件)
答案1
我没能找到好的 dovecot<->dovecot 复制指南的原因是,有一种更简单、更通用的 imap<->imap 方法可以做到这一点。(例如同步感谢 Sven 对我的问题的评论)。
ImapSync:我是这样做的。
- 从 github 下载代码并构建
- 用它
构建所需的依赖项
apt-get install makepasswd rcs perl-doc libio-tee-perl git libmail-imapclient-perl libdigest-md5-file-perl libterm-readkey-perl libfile-copy-recursive-perl build-essential make automake libunicode-string-perl libauthen-ntlm-perl libcrypt-ssleay-perl libdigest-hmac-perl libfile-copy-recursive-perl libio-compress-perl libio-socket-inet6-perl libio-socket-ssl-perl libio-tee-perl libmodule-scandeps-perl libnet-ssleay-perl libpar-packer-perl libreadonly-perl libterm-readkey-perl libtest-pod-perl libtest-simple-perl libunicode-string-perl liburi-perl cpanminus
CPAN 模块(CPAN = 综合 Perl 档案网络)
cpanm JSON::WebToken Test::MockObject Unicode::String Data::Uniqid
然后从 github 获取 imapsync 代码并使用make install
完成后,使用它就像
imapsync \
--host1 test1.lamiral.info --user1 test1 --password1 secret1 \
--host2 test2.lamiral.info --user2 test2 --password2 secret2
更多细节这里
答案2
我已经从基于 Wheezy 的 postfix+courier+mysql 迁移到基于 Stretch 的 (postfix+mysql+dovecot),并在全新安装中稍微更新了配置并增加了一些新选项。
我迁移的关键是用户都是虚拟的(通过 mysql 表),并且所有邮件都存储在 /home/vmail/domain/user/[various maildirs] 中
新系统的邮件目录结构类似,只是位于 /var/vmail/domain/user 下,而不是 /home/vmail 下...
唯一的“技巧”是复制文件并确保在新位置应用正确的所有权和其他权限。
答案3
您实际上可以使用 imapsync...但是它因一些不明显的错误而导致失败。
rsync 不是一个好主意...因为 dovecot/thunderbird/icedove 不会重建索引文件/文件夹结构。
解决方案其实很简单:使用 thunderbird/icedove 您的邮件客户端!
- 在新服务器上创建与旧服务器相同的邮件帐户
- 在 thunderbird 中添加新旧帐户(如果域名已经指向新服务器,则可以使用 IP 地址)
- 将旧邮件文件夹从旧帐户拖放到新帐户等待...所有邮件都会从旧帐户本地下载,然后上传到新帐户。
附言:感谢您对我上一篇改进帖子投反对票并删除“万岁”。这个平台很烂。我真的考虑抵制。
答案4
hostnamectl
Static hostname: debian
Icon name: computer-vm
Virtualization: oracle
Operating System: Debian GNU/Linux 9 (stretch)
Kernel: Linux 4.9.0-6-amd64
Architecture: x86-64
今天尝试了这个恕我直言认为还缺少:
apt install libssl-dev
然后抱怨:
Here is a cpanm command to install missing Perl modules:
cpanm "Crypt::OpenSSL::RSA Dist::CheckConflicts JSON::WebToken::Crypt::RSA Regexp::Common Sys::MemInfo"
Makefile:99: recipe for target 'testp' failed
make: *** [testp] Error 1
所以我尝试了:
cpanm Crypt::OpenSSL::RSA Dist::CheckConflicts JSON::WebToken::Crypt::RSA Regexp::Common Sys::MemInfo
然后“make install”起作用了:
imapsync -v
1.882