从旧的 postfix/dovecot 邮件服务器迁移到新的

从旧的 postfix/dovecot 邮件服务器迁移到新的

简而言之: 是否有人知道将 maildir 数据从一个 dovecot 迁移到另一个 dovecot 的分步指南?

长话短说: 我尝试将我的邮件服务器迁移到新机器上。

我首先尝试简单地 tar 和 rsync 我的单个 maildir 目录,但是thunderbird 中的所有子文件夹都显示为灰色

所以我想我再用 doveadm sync 做一次,但现在我找不到明确的路径来做到这一点dovecot 手册、google 或 serverfault。

难道现在真的没有简单的分步指南来指导我吗?还是说这太简单了,我看不懂?对于我这样的邮件服务器新手来说,手册没有提供足够的解释。

  1. doveadm同步/备份

    我开始使用。它告诉我:doveadm backup -u [email protected] ...

    doveadm(root):错误:用户不存在

    doveadm user *@domain.tld返回的正是这个用户。现在我偶然发现了下面的要点,所以我暂时不想去理解这个问题。

  2. doveadm 导入

    由于我已经将数据 tar 并 rsynced 到我的新机器上,所以我接下来尝试了这个。

    我启动了没有打开端口的 docker 容器,因此 dovecot 正在运行,但没有人能够连接到 postfix 或 dovecot。

    我连接到容器的控制台并尝试doveadm导入。出现权限被拒绝的问题。尝试将权限设置为 777。doveadm导入完成,没有告诉我任何问题,但用户的目录仍然是空的(只有标准文件夹,没有邮件)

答案1

我没能找到好的 dovecot<->dovecot 复制指南的原因是,有一种更简单、更通用的 imap<->imap 方法可以做到这一点。(例如同步感谢 Sven 对我的问题的评论)。

ImapSync:我是这样做的。

  1. 从 github 下载代码并构建
  2. 用它

构建所需的依赖项

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 您的邮件客户端!

  1. 在新服务器上创建与旧服务器相同的邮件帐户
  2. 在 thunderbird 中添加新旧帐户(如果域名已经指向新服务器,则可以使用 IP 地址)
  3. 将旧邮件文件夹从旧帐户拖放到新帐户等待...所有邮件都会从旧帐户本地下载,然后上传到新帐户。

附言:感谢您对我上一篇改进帖子投反对票并删除“万岁”。这个平台很烂。我真的考虑抵制。

答案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

相关内容