我正在尝试同步位于不同服务器的两个邮箱。这是由于迁移过程。旧服务器是快递服务器,需要通过 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