Утилита syncIMAPMail |
syncIMAPMail это программа для копирования почтовых папок с письмами по протоколу IMAP.
Её можно использовать для миграции между серверами, для создания копий аккаунтов внутри одного сервера, и для других целей.
Программа копирует "инкрементально": она проверяет какие письма уже есть в папке назначения и копирует из источника только новые письма не создавая дубликатов, так что вы можете применять программу к одному аккаунту много раз. Программа быстрее других утилит копирования потому что она многопоточная: она может читать из источника и писать в приёмник одновременно; также она может читать несколько сообщений одним запросом, и писать несколько несколько собщений за раз если приёмник поддерживает расширение MULTIAPPEND протокола IMAP.
Скачивание syncIMAPMail
-
Операционная Система Процессор Скачать Windows x86 Linux x86 x86-64 e2k FreeBSD 9+ x86 MacOS X x86 Sun Solaris Sparc
Поддерживаются только избранные платформы. Программа syncIMAPMail работает по сети, то есть её не обязательно запускать на сервере источника или приёмника (хотя если так делать, то копировать будет быстрее).
По вопросам техподдержки пишите на адрес support@old.communigatepro.ru.
Параметры
- syncIMAPMail [необязательные параметры] SrcServer[:port] srcUserName srcPassword DstServer[:port] dstUserName dstPassword
- SrcServer
- Имя хоста или IP-адрес IMAP сервера-источника, опционально с номером порта.
Внимание: программа не поддерживает шифрование SSL/TLS. Если оно требуется (например, для CGmail), используйте утилиту stunnel для создания прокси-соединения.
- srcUserName, srcPassword
- Значения для входа на сервер-источник (имя пользователя и пароль).
Внимание: программа использует пароль открытым текстом, без SASL. Если источник и приёмник находятся в разных сетях и требуется "безопасность" - создайте VPN или используйте stunnel.
- DstServer
- Имя хоста или IP-адрес IMAP сервера-приёмника, опционально с номером порта.
- dstUserName, dstPassword
- Значения для входа на сервер-приёмник (имя пользователя и пароль). Пример:
- --verbose
- Включает подробное ведение журнала.
- --logfile file.txt
- Перенаправляет журнал в указанный файл.
Пример:./syncIMAPMail --verbose --logfile logs/$1.txt localhost:1143 $1 $2 imap.company.com $1 $2 - --list фильтр
- Строка фильтр используется для ограничения списка папок копируемого аккаунта.
Пример:./syncIMAPMail --list INBOX ...Скопировать только папку INBOX.
Пример:./syncIMAPMail --list "INBOX/*" ...Скопировать под-папки от папки INBOX, но не саму папку INBOX.
Внимание: здесь и далее везде имена папок с не-латинскими символами должны быть указаны "как есть" в кодировке modified UTF-7.
Пример:./syncIMAPMail --list "&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-" ...Скопировать папку "Отправленные". - --source префикс
- Строка префикс используется как 1-й параметр IMAP-команды LIST. Если имена папок, выдаваемые командой LIST, начинаются с заданного префикса,
то префикс удаляется из имён папок, создаваемых на приёмнике.
Этот параметр позволяет скопировать отдельное поддерево из иерархии папок аккаунта-источника в корень иерархии аккаунта-приёмника. Например, если источник содержит папки abc/box1 и abc/box2, то с параметром --source abc/ скопируются папки box1 и box2 в корень приёмника.
Если источником является сервер CommuniGate Pro, то в качестве префикса можно использовать тильду и имя аккаунта, и таким образом от имени администратора можно скопировать папки другого пользователя : --source '~username/'
См. ниже параметр --target. - --target префикс
- Строка префикс добавляется ко всем именам папок на приёмнике.
Если приёмником является сервер CommuniGate Pro, то в качестве префикса можно использовать тильду с именем аккаунта, и копировать в аккаунт, пароля которого вы не знаете, от имени администратора (аккаунта postmaster).
Пример:./syncIMAPMail --source ~user@company.com/ --target ~user@company.com/ 10.0.0.1 postmaster pass 10.0.0.2 postmaster passКопировать все папки аккаунта user@company.com используя пароль postmaster-а. - --skipMailbox имяПапки
- Не копировать указанную папку.
имяПапки может содержать шаблоны (символы * и ?).
Этот параметр можно использовать несколько раз, чтобы исключить несколько папок. - --renameMailbox староеИмяПапки новоеИмяПапки
- Имя староеИмяПапки в источнике будет заменено на новоеИмяПапки на приёмнике.
староеИмяПапки может содержать шаблоны (символы * и ?).
Этот параметр можно использовать несколько раз, чтобы переименовать несколько папок. - --mode режим
- Устанавливает режим синхронизации. Возможные режимы:
- syncSrcAll
- Копирует с источника сообщения, которые не существуют на приёмнике.
Это режим по умолчанию. Используйте его для миграции. - syncSrcNew
- Копирует только сообщения, которые новее самого нового сообщения на приёмнике.
Автоматически подразумевается параметр "--list INBOX", но это может быть переопределено.
Используйте этот режим если пользователь уже работает с сообщениями на приёмнике, но новые сообщения ещё доставляются на источник и требуется их копирование. - syncDst
- Копирует сообщения с источника, которые не существуют на приёмнике.
Копирует/синхронизирует флажки существующих сообщений.
Удаляет сообщения с приёмника, которые не существуют на источнике.
Удаляет папки (ящики) с приёмника, если они не существуют на источнике, если не указан параметр --list.
Удаляет элементы подписки с приёмника, которые не существуют на источнике.
Используйте этот режим когда пользователь работают на источнике, а приёмник используется как "зеркало".
- --notimeout
- тайм-аут операции IMAP увеличивается с 60 секунд до 1 часа. Используйте этот параметр когда копируете с очень медленного сервера.
- --noSubscription
- Выключает копирование подписки на папки.
- --noACL
- Выключает копирование прав доступа (Access Control Lists) папок.
- --noSpecialUse
- Выключает копирование атрибута папок SPECIAL-USE.
- --noForceIndex
- Выключает принудительное создание индексов. По умолчанию индексы принудительно создаются установкой и сбросом флажка на первом сообщении в папке.
- --noNewUID
- Выключает использование расширения IMAP для установки UID сообщений.
Внимание: Это расширение работает только с CommuniGate Pro 6.1.9 и новее, поэтому ОБЯЗАТЕЛЬНО нужно использовать --noNewUID если приёмник не CommuniGate Pro, а какой-то другой сервер. - --copyMailboxClass
- Может использоваться, если источником и приёмником являются серверы CommuniGate Pro; тогда будут копироваться папки не-почтовых классов ("Календарь", "Контакты", и т.д.)
- --proxyAuth username
- Использовать команду 'PROXYAUTH username' с источником.
Используйте этот параметр чтобы войти на сервер-источник администратором и скопировать папки пользователя, пароля которого вы не знаете, если IMAP-сервер источника поддерживает команду PROXYAUTH. - --srcAuthPlain username
- --dstAuthPlain username
- Использовать команду AUTHENICATE PLAIN для аутентификации на источнике или приёмнике.
Используйте этот параметр чтобы войти на сервер от имени администратора и скопировать папки пользователя, пароля которого вы не знаете, если IMAP-сервер источника/приёмника поддерживает команду AUTHENICATE PLAIN. - --srcOAuth2
- Использовать метод OAUTH2 для аутентификации на источнике.
Параметр srcPassword должен быть именем файла, который содержит токен доступа. - --fetchMax число
- Устанавливает максимальное число сообщений, скачиваемых с источника за один запрос. По умолчанию 50.
- --fetchSizeMax число
- Устанавливает максимальный размер сообщений, скачиваемый с источника за один запрос, в мегабайтах. По умолчанию 10.
- --storeMax число
- Устанавливает максимальное число сообщений, записываемых на приёмник за один запрос. По умолчанию 50.
- --storeSizeMax число
- Устанавливает максимальный размер сообщений, записываемых на приёмник за один запрос, в мегабайтах. По умолчанию 10.
- --queueMax число
- Устанавливает максимальное число сообщений, хранимых во внутренней очереди программы. По умолчанию 150.
- --queueSizeMax число
- Устанавливает максимальный размер сообщений, хранимых во внутренней очереди программы, в мегабайтах. По умолчанию 30.
Можно использовать меньшие значения, если серверы медленные или мало памяти. - --noThreads
- Выключает многопоточный режим.
Используйте, если ваша ОС плохо справляется с многопоточностью.
Замечания:
Если имя папки на источнике начинается с символа . или ~,
то на приёмнике имя папки будет начинаться с сиимвола _.
Начальные и конечные пробелы, символы \ и # в именах папок на источнике заменяются на символы _ на приёмнике.
Символы " заменяются на '.
Если имя папки на источнике заканчивается на .mbox или .mdir или .mslc,
то на приёмнике имя папки будет заканчиваться на соответственно -mbox или -mdir или -mslc.
Замечания:
Сообщения с флажком \Deleted не копируются.
Если текст сообщения не заканчивается на EOL, то он автоматически добавляется.
Строки сообщений длиннее 9000 байт автоматически обрезаются.
Работа с множеством пользователей
Предположим, имеется файл users.txt с именами аккаунтов и паролями, разделёных табуляцией. Тогда можно автоматизировать запуск программы для каждого аккаунта, используя скрипт.
- Пример на Bash:
- #!/bin/bash inFile="users.txt" logDir="logs" if [ ! -d $logDir ]; then mkdir $logDir fi while read line do read user pass <<<$(IFS=$'\t'; echo $line) echo "Syncing '$user'" eval ./syncIMAPMail --logfile $logDir/$user.txt 10.10.10.10 $user $pass 127.0.0.1 $user $pass done < "$inFile"
- Пример на Perl:
- #!/usr/bin/perl -w my $inFile="users.txt"; my $logDir="logs"; mkdir($logDir) unless(-d $logDir); open(F,$inFile) || die "can't open $inFile: $!"; while(<F>) { my($user,$pass)=split(/\s+/); print "Syncing '$user'\n"; system("./syncIMAPMail --logfile $logDir/$user.txt 10.10.10.10 $user $pass 127.0.0.1 $user $pass"); } close(F);
- Пример Windows файла BAT:
- @echo off SET inFile=users.txt SET logDir=logs IF NOT EXIST %logDir% mkdir %logDir% FOR /F "tokens=1,2" %%i in (%inFile%) do ( echo Syncing '%%i' syncIMAPMail --logfile %logDir%/%%i.txt 10.10.10.10 %%i %%j 127.0.0.1 %%i %%j )