从任何 IMAP/POP3 服务器迁移到 Dovecot

从任何 IMAP/POP3 服务器迁移到 Dovecot

我正在尝试同步位于不同服务器的两个邮箱。这是由于迁移过程。旧服务器是快递服务器,需要通过 IMAP 访问,而新服务器是 dovecot 服务器。我正在尝试遵循原始 Dovecot 文档。遗憾的是,当脚本在目标服务器上运行时,没有指定需要在哪里设置源 IMAP 的配置doveadm。文档提供了设置,但没有提到必须将设置输入到哪个 dovecot 配置文件中。

答案1

您还可以在没有配置文件的情况下在命令行上执行以下操作:

# doveadm -Dv  \
  -o imapc_host=<SOURCE_HOST> \
  -o imapc_user=<SOURCE_USERNAME> \
  -o imapc_password=<SOURCE_PASSWORD> \
  -o imapc_features=rfc822.size \
  -o imapc_ssl=starttls \
  -o mail_fsync=never \
   backup -R -u <DESTINATION_MAILBOX> imapc:

我遇到了很大的问题,因为我的源 IMAP 仅支持端口 143 上的 STARTTLS。-o imapc_ssl=starttls对我来说是一个救星。

您可以在初始备份后使用以下命令进行同步:

# doveadm -Dv \
  -o imapc_host=<SOURCE_HOST> \
  -o imapc_user=<SOURCE_USERNAME> \
  -o imapc_password=<SOURCE_PASSWORD> \
  -o imapc_features=rfc822.size \
  -o imapc_ssl=starttls \
  -o mail_fsync=never \
  sync -1 -R -u <DESTINATION_MAILBOX> imapc:

当然,如果有更多的用户可以通过who查看 .bash_history 文件来查看您的命令(和密码),那么这是非常不安全的,所以要小心。

答案2

如果两个邮件服务器的 IMAP 协议运行正常,我就会用它们imapsync来完成这项工作。Courier 和 Dovecot 均受 支持imapsync

它的使用非常简单,并且支持许多功能,例如用于不同文件夹同步的正则表达式映射。

该软件是 FOSS,可以在这里找到:http://imapsync.lamiral.info

如果您需要 UID 同步,您可以在 imapsync 中添加选项--useuid。我不确定您说的是不是这种 UID。但这是您应该寻找的选项:

--useuid :使用 uid 而不是 header 作为识别消息的标准。除非使用 --nousecache,否则将隐含使用选项 --usecache。

答案3

您应该使用 Dovecot 中的实用程序迁移邮件dsync。这将保留 UID 甚至 POP3 UIDL(如果需要)。

dsync使用选项运行backup -R,从远程 IMAP 服务器“反向备份”到本地 Dovecot 服务器。您需要创建一个特殊的配置文件,如下所示:

imapc_host = imap.company.com
imapc_user = %[email protected]
imapc_password =  mypassword
imapc_features = rfc822.size fetch-headers
imapc_port = 143
pop3c_host = pop3host.company.com
pop3c_user = %[email protected]
pop3c_password = mypassword
pop3c_port = 110
namespace pop3c {
   prefix = POP3-MIGRATION-NS/
   location = pop3c:~/pop3c
   list = no
   hidden = yes
}

!include /etc/dovecot/dovecot.conf

plugin {
  pop3_migration_mailbox = POP3-MIGRATION-NS/INBOX
  pop3_migration_skip_size_check = yes
  pop3_migration_ignore_missing_uidls=yes
}
mail_prefetch_count = 20
mail_shared_explicit_inbox = no
protocol doveadm {
  mail_plugins = $mail_plugins pop3_migration
}

请注意,这适用于单个用户;如果您使用主用户/密码,或者需要 SSL 进行连接,则可能需要有不同的选项。

然后用类似如下的方式调用它: dsync -D -v -u username -c configfile.cfg

替换username文件%u中的config.cfg。这-D -v是详细调试模式。

答案4

您需要在 Dovecot 配置中包含这些设置,通常 Dovecot 配置位于 中/etc/dovecot/

最好的方法是将配置放入/etc/dovecot/conf.d/90-migration.conf(目录中的所有文件conf.d都会自动包含在内)。

要重新加载配置,您需要运行:

sudo doveadm reload

相关内容