IMAP миграция · 5 min read · Sep 25, 2025
Как мигрировать почтовые ящики между IMAP-серверами с помощью imapsync

Этот гид объясняет, как вы можете мигрировать почтовые ящики между IMAP-серверами с помощью imapsync. imapsync — это инструмент для синхронизации, копирования или миграции IMAP. Поддерживается более 32 различных программного обеспечения IMAP-сервера. Все флаги сохраняются, непрочитанные останутся непрочитанными, прочитанные останутся прочитанными, удаленные останутся удаленными.
1 Предварительная заметка
Я использую два сервера Debian или Ubuntu (процедура должна быть такой же для других дистрибутивов, только установка imapsync будет отличаться):
- server1.example.com (источник)
- server2.example.com (цель)
Я хочу мигрировать почтовый ящик [email protected] (имя пользователя: [email protected], пароль: secret) на server1.example.com в почтовый ящик [email protected] на server2.example.com (имя пользователя и пароль такие же, как на server1.example.com).
2 Перед началом
Перед тем как начать, давайте взглянем на оба почтовых ящика, чтобы увидеть, что в них (вы можете сделать это с помощью почтового клиента, такого как Outlook, Thunderbird или веб-клиента, такого как SquirrelMail - я использую SquirrelMail здесь).
server1.example.com:

server2.example.com:

После миграции два сообщения на server1.example.com должны быть доступны на server2.example.com.
3 Установка imapsync
Не имеет значения, устанавливаем ли мы imapsync на server1.example.com или server2.example.com - мы даже можем установить его на третьем, неучаствующем сервере.
aptitude install imapsyncЧтобы узнать о его использовании, посмотрите на
man imapsyncи
imapsync --help4 Выполнение миграции
Мы должны сообщить imapsync имена пользователей и пароли почтовых аккаунтов, которые мы хотим мигрировать. Теоретически, мы можем использовать переключатели –password1 и –password2 для паролей, но это опасно, потому что пароли появятся в выводе
ps aux(Таким образом, любой пользователь, которому разрешено выполнять эту команду, будет знать пароли.)
Поэтому лучше создать два файла (/etc/secret1 и /etc/secret2 в этом примере), которые содержат пароли (в этом примере это secret для обоих почтовых аккаунтов), выполнить chmod 600 на этих файлах и использовать переключатели –passfile1 и –passfile2.
echo "secret" > /etc/secret1
echo "secret" > /etc/secret2
chmod 600 /etc/secret1
chmod 600 /etc/secret2Теперь мы можем выполнить миграцию с помощью этой простой команды:
imapsync --host1 server1.example.com --user1 [email protected] --passfile1 /etc/secret2 --host2 server2.example.com --user2 [email protected] --passfile2 /etc/secret2Вот пример вывода:
root@server1:~# imapsync --host1 server1.example.com --user1 [email protected] --passfile1 /etc/secret2
--host2 server2.example.com --user2 [email protected] --passfile2 /etc/secret2
$RCSfile: imapsync,v $ $Revision: 1.252 $ $Date: 2008/05/08 02:30:17 $
Here is a [linux] system (Linux server1.example.com 2.6.28-11-server #42-Ubuntu SMP Fri Apr 17 02:45:36 UTC 2009 x86_64)
with perl 5.10.0 and the module Mail::IMAPClient version used here is 2.2.9
Command line used :
/usr/bin/imapsync --host1 server1.example.com --user1 [email protected] --passfile1 /etc/secret2
--host2 server2.example.com --user2 [email protected] --passfile2 /etc/secret2
Turned ON syncinternaldates, will set the internal dates on host2 same as host1.
TimeZone :[CEST]
Will try to use CRAM-MD5 authentication on host1
Will try to use CRAM-MD5 authentication on host2
From imap server [server1.example.com] port [143] user [[email protected]]
To imap server [server2.example.com] port [143] user [[email protected]]
Banner : * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA
IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2008 Double Precision, Inc. See COPYING for distribution information.
Host server1.example.com says it has NO CAPABILITY for AUTHENTICATE CRAM-MD5
Error login : [server1.example.com] with user [[email protected]] auth [CRAM-MD5]: 3 NO Login failed.
Trying LOGIN Auth mechanism on [server1.example.com] with user [[email protected]]
Success login on [server1.example.com] with user [[email protected]] auth [CRAM-MD5]
Banner : * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA
IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2008 Double Precision, Inc. See COPYING for distribution information.
Host server2.example.com says it has NO CAPABILITY for AUTHENTICATE CRAM-MD5
Error login : [server2.example.com] with user [[email protected]] auth [CRAM-MD5]: 3 NO Login failed.
Trying LOGIN Auth mechanism on [server2.example.com] with user [[email protected]]
Success login on [server2.example.com] with user [[email protected]] auth [CRAM-MD5]
From capability : QUOTA STARTTLS NAMESPACE IDLE THREAD=ORDEREDSUBJECT ACL SORT UIDPLUS CHILDREN ACL2=UNION IMAP4REV1 THREAD=REFERENCES
To capability : QUOTA STARTTLS NAMESPACE IDLE THREAD=ORDEREDSUBJECT ACL SORT UIDPLUS CHILDREN ACL2=UNION IMAP4REV1 THREAD=REFERENCES
From state Authenticated
To state Authenticated
From separator and prefix : [.][INBOX.]
To separator and prefix : [.][INBOX.]
++++ Calculating sizes ++++
From Folder [INBOX] Size: 2412 Messages: 2
From Folder [INBOX.Drafts] Size: 0 Messages: 0
From Folder [INBOX.Sent] Size: 0 Messages: 0
From Folder [INBOX.Trash] Size: 0 Messages: 0
Total size: 2412
Total messages: 2
Time : 11 s
++++ Calculating sizes ++++
To Folder [INBOX] Size: 16844 Messages: 6
To Folder [INBOX.Drafts] Size: 0 Messages: 0
To Folder [INBOX.Sent] Size: 0 Messages: 0
To Folder [INBOX.Trash] Size: 0 Messages: 0
Total size: 16844
Total messages: 6
Time : 0 s
++++ Listing folders ++++
From folders list : [INBOX] [INBOX.Drafts] [INBOX.Sent] [INBOX.Trash]
To folders list : [INBOX] [INBOX.Drafts] [INBOX.Sent] [INBOX.Trash]
++++ Looping on each folder ++++
From Folder [INBOX]
To Folder [INBOX]
++++ From [INBOX] Parse 1 ++++
++++ To [INBOX] Parse 1 ++++
++++ Verifying [INBOX] -> [INBOX] ++++
+ NO msg #1 [FID6mR7SVC7csdmRce+7PQ:924] in INBOX
+ Copying msg #1:924 to folder INBOX
flags from : [\Seen]["26-May-2009 22:00:59 +0200"]
Copied msg id [1] to folder INBOX msg id [7]
+ NO msg #2 [4lu3SCjZGH2mRuiP1dY7Mw:1488] in INBOX
+ Copying msg #2:1488 to folder INBOX
flags from : [()]["27-May-2009 14:12:59 +0200"]
Copied msg id [2] to folder INBOX msg id [8]
Time : 0 s
From Folder [INBOX.Drafts]
To Folder [INBOX.Drafts]
++++ From [INBOX.Drafts] Parse 1 ++++
++++ To [INBOX.Drafts] Parse 1 ++++
++++ Verifying [INBOX.Drafts] -> [INBOX.Drafts] ++++
Time : 0 s
From Folder [INBOX.Sent]
To Folder [INBOX.Sent]
++++ From [INBOX.Sent] Parse 1 ++++
++++ To [INBOX.Sent] Parse 1 ++++
++++ Verifying [INBOX.Sent] -> [INBOX.Sent] ++++
Time : 0 s
From Folder [INBOX.Trash]
To Folder [INBOX.Trash]
++++ From [INBOX.Trash] Parse 1 ++++
++++ To [INBOX.Trash] Parse 1 ++++
++++ Verifying [INBOX.Trash] -> [INBOX.Trash] ++++
Time : 1 s
++++ Statistics ++++
Time : 12 sec
Messages transferred : 2
Messages skipped : 0
Total bytes transferred: 2412
Total bytes skipped : 0
Total bytes error : 0
Detected 0 errors
Please, rate imapsync at http://freshmeat.net/projects/imapsync/
?Happy with this free, open source and gratis GPL software?
Feel free to thank the author by giving him a book:
http://www.amazon.com/gp/registry/wishlist/1C9UNDIH3P7R7/
(or its paypal account [email protected])
root@server1:~#После этого мы можем удалить два файла паролей:
rm -f /etc/secret1
rm -f /etc/secret2На целевом сервере (server2.example.com) выйдите из своей учетной записи IMAP и войдите снова (простое обновление может быть недостаточно), и вы должны увидеть сообщения с server1.example.com:
server2.example.com:

5 Ссылки
Get new posts in your inbox
No spam. Unsubscribe anytime.