大家好!imapsync是一款使用广泛的、用perl编写的程序。这款程序由法国人Gilles Lamiral编写,从2001年一直维护至今,其官方网站是 https://imapsync.lamiral.info/。
imapsync程序免费开源(不过在官网上您可以选择付费60欧元支持作者)。使用imapsync, 我们可以轻松地迁移邮箱中的全部邮件,而搭配cronjob就可以实现邮箱的定期备份。
今天,我们就来介绍如何使用imapsync进行邮箱的迁移和定期自动备份。本文作者为香菇肥牛,原文链接为 https://qing.su/article/email-migration-backup-with-imapsync.html , 转载请注明原文链接。谢谢!
1. imapsync网页版邮箱迁移工具
如果您没有定期备份的需求,而仅仅是需要一次性的邮箱迁移,那么就不需要安装使用imapsync了。您可以直接使用官方网页版的免费imapsync邮箱迁移工具 https://imapsync.lamiral.info/X/,输入迁移前后的邮箱信息即可实现一次性的邮箱迁移。
官方网页版的imapsync迁移工具仅支持3GB以下的邮件。如果您的邮件较多,您可以使用OVH官网提供的免费迁移工具 https://omm.ovh.net/Migration/Create 这两个工具均可以实现一次性的邮箱迁移。
如果您和我一样,想要定期备份一些邮箱,那么就需要在电脑或者服务器上安装imapsync程序了。
2. 在Linux服务器中安装imapsync
imapsync程序可以在Windows, MacOS, Linux中使用。这里我仅介绍Linux中的安装与使用;如果您使用Windows或者MacOS,可以自行从官网下载安装程序 (https://imapsync.lamiral.info/dist2/),这里不做介绍。
imapsync的资源占用很小,运行时仅需要200 MB不到的内存,因此可以在512 MB的Linux VPS中流畅运行。
以Ubuntu 24.04 LTS系统为例,首先安装必要的perl相关库。
1 | apt-get install libauthen-ntlm-perl libclass-load-perl libcrypt-openssl-rsa-perl libcrypt-ssleay-perl libdata-uniqid-perl libdigest-hmac-perl libdist-checkconflicts-perl libencode-imaputf7-perl libfile-copy-recursive-perl libfile-tail-perl libio-compress-perl libio-socket-inet6-perl libio-socket-ssl-perl libio-tee-perl libjson-webtoken-perl libmail-imapclient-perl libmodule-scandeps-perl libnet-dbus-perl libnet-ssleay-perl libpar-packer-perl libproc-processtable-perl libreadonly-perl libregexp-common-perl libsys-meminfo-perl libterm-readkey-perl libtest-fatal-perl libtest-mock-guard-perl libtest-mockobject-perl libtest-pod-perl libtest-requires-perl libtest-simple-perl libunicode-string-perl liburi-perl libtest-nowarnings-perl libtest-deep-perl libtest-warn-perl make time cpanminus -y |
这里,我将imapsync安装于 /opt/imapsync 文件夹,您可以自行设定。
1 2 3 4 5 | mkdir /opt/imapsync cd /opt/imapsync wget https://imapsync.lamiral.info/dist2/imapsync-2.290.tgz tar zxvf *.tgz rm *.tgz && cd imapsync-2.290 |
imapsync是使用perl编写的,不需要额外的编译和安装,解压后就可以直接使用。这里我们先来测试一下imapsync. 运行:
1 | ./imapsync --testslive |
如果看到类似下面的回显,说明imapsync安装正常。
最后,我们新建一个目录用于存储日志,并且将程序复制到 /usr/bin目录方便运行。
1 | mkdir logs && cp imapsync /usr/bin |
这样,我们就完成了imapsync的安装。
3. imapsync命令详解
imapsync的主要作用是将源邮箱(用1表示)的所有邮件同步至目标邮箱(用2表示)。因此,使用imapsync至少需要6个参数:源邮箱的IMAP服务器地址、用户名、密码,以及目标邮箱的IMAP服务器地址、用户名、密码。
如果我们用一个专门的邮箱 my@mailbackup.com 用来存储其他所有邮箱的备份,那么我们可能希望在这个目标邮箱中建立一系列的子文件夹,比如新建一个文件夹 backup_hello_example.com 用于存储 hello@example.com 这个邮箱的备份,再新建一个文件夹 backup_user_test.net 用于存储 user@test.net 这个邮箱的备份。
使用下面的命令,我们可以将 hello@example.com 这个邮箱的所有邮件同步至 my@mailbackup.com 邮箱的 backup_hello_example.com 子文件夹。这个对应的子文件夹将包含源邮箱的所有目录层级(收件箱,已发送,垃圾箱等)。
1 | imapsync --host1 'mx.example.com' --user1 'hello@example.com' --password1 'user1_password' --host2 'mx.mailbackup.com' --user2 'my@mailbackup.com' --password2 'user2_password' --subfolder2 'backup_hello_example.com' |
命令中,host1, user1, password1 对应的是源邮箱的服务器地址、用户名、密码,host2, user2, password2 对应的是目标邮箱的服务器地址、用户名、密码,subfolder2 对应的是目标邮箱的子文件夹名称。请注意,如果您的源邮箱或者目标邮箱是 Gmail, Outlook, iCloud等邮箱,您需要去对应的网站生成应用密码App-specific Password. 如果您的邮箱是自建的邮箱,比如Stalwart, Mailu等,您也可以为imapsync服务器生成一个单独的应用密码,提升安全性。
在开始同步之前,我们可以加上
--dry
这个参数,用来进行测试(只生成对应的日志,不实际进行迁移或同步)。我们还可以加上
--logdir /opt/imapsync/logs
用来指定日志文件的存放目录。
其他的参数可以参考imapsync官方文档 https://imapsync.lamiral.info/README.
首次备份时,由于需要复制全部邮件,因此时间较长。后续每次执行同样的命令,程序会自动判断并仅执行增量备份,速度会快很多。
4. 使用imapsync + cron 实现定期邮箱自动增量备份
如果您已经按照上述步骤安装好了imapsync, 就可以配合cronjob实现邮箱的定期自动增量备份了。
比如,如果我想每天定期将 hello@example.com 这个邮箱增量备份到 my@mailbackup.com 邮箱的 backup_hello_example.com 子文件夹,那么我们只需要编辑 cronjob,
1 | crontab -e |
添加下面一行
1 | 0 12 * * * imapsync --host1 'mx.example.com' --user1 'hello@example.com' --password1 'user1_password' --host2 'mx.mailbackup.com' --user2 'my@mailbackup.com' --password2 'user2_password' --subfolder2 'backup_hello_example.com' --logdir /opt/imapsync/logs |
然后保存退出。这样,每天中午12点,系统就会自动执行imapsync帮我们进行增量备份了。您可以按需依次添加您需要备份的其他邮箱。
至此,我们在Linux服务器中下载安装了imapsync邮箱同步与备份程序,并搭配cronjob实现了定期的邮箱增量备份。
如果您有任何疑问,欢迎在这里留言,我将尽力解答。本文作者为香菇肥牛,原文链接为 https://qing.su/article/email-migration-backup-with-imapsync.html , 转载请注明原文链接。谢谢!