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 --help

4 Выполнение миграции

Мы должны сообщить 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 Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.