Imap sync tool windows

Перенос почты IMAP

Перенос почты при смене почтового сервера

При решении вопроса о смене почтового сервера часто на первый план выходит вопрос: а что сделать, чтобы почта из старого почтового сервера (например, Dovecot) перекочевала в новый (например, Kerio Connect). Или использовалась почта на стороннем хостинге, и было принято решение о переносе всей почты на другой сервер (в том числе, на другую платформу, MS -> Unix, например).

Если вся почта принималась по POP3 — вопросов особенно не будет, в этом случае проблема возникнет при тотальной смене почтовых клиентов. А мы рассмотрим случай, когда не очень большая организация работает с почтой по протоколу IMAP. В таком случае вопрос будет стоять следующим образом:

  1. Либо находим утилиту по переконвертированию писем со старой на новую платформу.
  2. либо делаем архив почты, а на новом сервере почта будет «с нуля».
  3. либо (наш выбор) в цикле (или просто по очереди) автоматизированно копировать письма IMAP со старого почтового сервера на новый с помощью программы Imapsync.

В любом случае, вопросов будет много, и процесс смены почтового сервера — задача не из разряда легких. Это очень заранее запланированное мероприятие, с предварительными проверками и пр. Сразу становится понятным, почему в начале статьи я уточнил, что организация небольшая. В крупных компаниях, возможно, такой подготовленный штат системных администраторов, что они придумают что-то более быстродействующее. Для нас надо чтобы было попроще и без серьезных переконвертаций.

Imapsync

Imapsync поддерживает сохранение статуса «прочтено, не прочтено, удалено», вложенные почтовые папки и др. Imapsync написан на Perl и может быть запущен практически на любом компьютере, не обязательно запускать его на сервере. Т.е. вы можете произвести перенос почты удаленно по отношению и к старому, и к новому почтовым серверам. Вам не надо иметь доступ к консоли. Все, что необходимо — это протокол IMAP.

Схема действия такая:

  1. на новом почтовом сервере создаем учетные записи пользователей с паролями (пароли могут отличаться от паролей на старом почтовом сервере).
  2. запускаем imapsync.

imapsync \
—host1 —user1 —password1 \
—host2 —user2 —password2

где:
— почтовый сервер, откуда копируем почту,
— логин почтового аккаунта,
— пароль почтового аккаунта,
— почтовый сервер, куда копируем почту,
— логин почтового аккаунта,
— пароль почтового аккаунта

Опций на самом деле гораздо больше, эти — минимум. Можно указывать, использовать SSL или нет, минимальный размер писем, которые будут скопированы и много что еще. Я использовал только минимум опций — для переноса 10 почтовых ящиков этого может быть достаточно.

Если пароль содержит символ доллара ($), то выполнение из командной строки может привести к ошибке логина. В этой ситуации надо просто экранировать символ $ прямо в пароле.

—password1 Gmw$psdtRR надо писать

Скорее всего, у вас не 10, а 30 и больше почтовых ящиков. В таких случаях ручной ввод команд — муторно и неудобно. Разработчик предлагает вариант:

Создаем файл с логинами/паролями file.txt:

user001_1;password001_1;user001_2;password001_2
user002_1;password002_1;user002_2;password002_2
user003_1;password003_1;user003_2;password003_2
user004_1;password004_1;user004_2;password004_2
user005_1;password005_1;user005_2;password005_2 .

В Unix скрипт может выглядеть примерно так:

Imap sync tool windows

Собрал новую мыльницу — exim и dovecot. Всё пучком, но втал вопрос о переносе почты и юзеров со старого сервера на новый. С юзерами решилось просто — на стером была какая-то дикая связка cyrus-imap и exim. Дикость заключалась в том, что для зваедения юзера требовалось руками поправить БД MySQL, зайти в cyradmin (типа WEB-интерфейс) создать директорию, зайти с шелла — завести пользователся при помощи saslpasswd2 . Финиш. Конечно, может когда-то всё это и работало по человечески, но мне досталось именно в таком виде, и на понимание принципа работы ушло немало времени и нервов :))) Перенос облегчался наличием БД с нешифрованными паролями. Поэтому был сделан дамп куска базы, в котором были только нужные пользователи, и этот самый дамп размещён во временной таблице. После чего два таких запроса:

Перенесли всех пользователей. Для переноса самой почты, была заюзана программа из портов — imapsync, и скриптик на шелле, такого вида:

И долго-долго ждём :))) На перенос 3Gb почты ушло часов пять-шесть. Скриптик перловый, работает медленно 🙁 В-общем-то не страшно, всё равно делается это не днём.

P.S. Это даже не руководство к действиям, а просто пример, как можно сделать.

размещено: 2006-08-02,
последнее обновление: 2006-08-02,
автор: lissyara

а для pop3 можно еще пример для полноты =)

Шустрые какие :)))
Юзайте IMAP — ибо POP3 это прошлый век 🙂
========
Когда искал — видел упоминание о том что софт существует, но на этом не зацикливался — я давно pop3 не использую.
www.yandex.ru; www.google.ru — делов-то 🙂

>Юзайте IMAP — ибо POP3 это прошлый век 🙂
я то с тобой согласен. а вот как это обьяснить пачке юзверей

>Скриптик перловый, работает медленно
Почему скриптик perl’овый — когда он башовый?

Имеется в виду скрипт imapsync

Alejandro, 2016-06-12 в 21:34:02

Прошу прощенья за некропостинг, но:
«# временный файл
file_tmp=»/tmp/user.passwd»
.
# создаём файл с паролем:
echo $ > $
.
# Удаляем файл паролей
rm -f $<tmp_file

Alessias, 2017-12-19 в 19:41:52

только надо добавить параметр —skip-column-names к mysql
чтоб не пытался перенести почту пользователя local_part пользователю username

Dmitry, 2018-09-05 в 9:03:23

—nofoldersizes —skipsize —fast и будет работать быстро.


2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов. 2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540 2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма 2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh 2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ 2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией. 2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat 2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp. 2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл. 2011-02-16, fox
hast carp zfs ucarp cluster
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления… 2011-02-04, BlackCat
Восстановление ZFS
История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий. 2011-02-03, Капитан
1-Wire
Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
вверх

Статистика сайта
Сейчас на сайте находится: 16 чел.
За последние 30 мин было: 70 человек
За сегодня было
1404 показов,
193 уникальных IP

Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

IMAPSync. Перенос почты между серверами

В этой статье я хочу поделиться опытом переноса почты между разными серверами с помощью замечательной утилиты IMAPSync.

— Получение IMAPSync.exe из исходников github (компиляция под Windows).
— Перенос почты по IMAP между серверами.

В моем случае встала задача перенести почту со своего сервера IDECO на сервера pdd.yandex.ru. Средствами Яндекса сделать это мне не удалось, инструмент по импорту для домена и инструмент по сбору почты в свойствах ящика выдавал всегда одну ошибку — неверный пароль. Техническая поддержка отвечала раз в сутки, а проблема не решалась. Были рекомендации сменить пароль, подождать, отключить двухфакторную авторизацию и т.п. В общем стандартные отписки, к сожалению. Использовать biz.mail.ru, который прекрасно все импортировал на тестовых ящиках, не хотелось. Так как имею больше опыта с Яндексом, и больше нравится работа почты от Яндекса, было принято решение найти другой способ переноса почты. Им и стал IMAPSync.

Начинаем, при условии, что на сервере назначения у нас созданы пустые (или не очень) ящики с нужными нам логинами и паролями.

Компиляция IMAPSync.exe из исходников под Windows

    Подготавливаем инструменты для компиляции:

Скачиваем последние исходники IMAPSync с github;
Скачиваем и устанавливаем 32-битную версию Strawberry Perl (я использовал strawberry-perl v5.20.3.3-32bit);
Распаковываем исходники и копируем файл из imapsync в Wimapsync;
Запускаем от администратора командную строку, заходим в папку W и запускаем установку необходимых модулей:

Выполняем этот файл дважды, убеждаемся, что все модули установлены, ошибок нет. Если какой-то модуль не устанавливается (у меня, например, Unicode::String не хотел ставится), ставим его через ppm:

и убеждаемся, что все модули установлены, ошибок нет.

На выходе получаем imapsync.exe — запускаем его в том же окне командной строки и проверяем, должен показать справку:

Если все так, никаких ошибок нет, значит приложение готово, можно использовать.

Перенос почты по IMAP между серверами

  1. Копируем наше приложение Wimapsync.exe в examplesimapsync.exe. В папке examples нас интересует несколько файлов:
    • imapsync_example.bat — тестирование настроек переноса и сам перенос почты для одного ящика
    • sync_loop_windows.bat и file.txt — перенос почты для массива ящиков

Подготовка, тестирование, перенос одного ящика:

Открываем файл imapsync_example.bat и прописываем наши реквизиты и параметры:

—host1 mx.example.ru —user1 user —password1 «Pass123»

Сервер назначения, логин ящика, пароль ящика:

—host2 imap.yandex.ru —user2 user@example.biz —password2 «Pass123»

Использование SSL для сервера источника и назначения:

—ssl1 —ssl2

Игнорировать все заголовки в письме, кроме тех, что содержат «Message-Id». Этот параметр полезен в тех случаях, когда для одного письма на разных серверах генерируются разные заголовки, в моем случае они отличались. Яндекс для каждого письма добавлял одну дополнительную строчку, из-за чего письма дублировались при каждом последующем переносе почты. Если фильтровать заголовки по «Message-Id», то при каждом переносе почты, копируются только новые письма.

—skipheader «^(?!Message-Id)»

Автоматически определить и привязать папки на сервере источника к папкам на сервере назначения. Сама сравнивает названия и создает привязки, поддерживает папки с кириллицей в названиях. Inbox-> Входящие. Sent -> Отправленные…

—automap

Удаляет из названия INBOX во всех папках назначения. В моем случае IDECO все папки называет начиная с INBOX (INBOX.Sent, INBOX.Drafts и т.п.). Чтобы не создавать двойные названия в сервере назначения для папок, которые были созданы пользователем вручную. Тут стоит заметить, что это еще зависит от сервера.

—regextrans2 «s/^INBOX.(.+)/$1/»

Выполнять операции только для папок. Письма не переносятся.

—justfolders

Эмуляция выполнения. Будет показан весь план работ, но физически ничего не переносится. Удобно для тестирования.

После прочтения описания запускаем и проверяем как произошла привязка наших папок. Если все успешно — здорово. Если нет, то можно воспользоваться параметрами ручной привязки. Например, параметры ниже создает привязку папок «INBOX.Junk» и «INBOX.Spam» к папке «Удаленные».

Тут мы сталкиваемся с кодировкой. Чтобы определить как должны называться папки с кириллицей нужно заглянуть в логи (LOG_imapsync*.txt), которые создаются после каждого выполнения программы.

Ну, а тут уже все ясно и понятно, и сама программа предлагает нам создать ручную привязку, если это необходимо.

После прогона, убедившись, что все выглядит хорошо, удаляем параметр:

Запускаем, и проверяем как создались папки на нашем сервере назначения. Пока мы проверяем только папки. Если требуется, вносим правки в привязки. Если все выглядит так как нам нужно, отлично, переходим к письмам. Удаляем параметр:

Запускаем и проверяем как создаются папки и перемещаются письма на наш сервер назначения. Также вносим необходимые правки при необходимости. Если нам нужно было перенести только один ящик — то на этом мы закончили. Если нужно перенести больше, то переходим к следующему пункту.

Перенос почты для нескольких ящиков.

Открываем файл file.txt. Этот файл содержит хорошее описание и реальный пример, для демонстрации работы. С заполнением трудностей возникнуть не должно. Закомментируем в нем все примеры, и напишем свои данные ниже. Перечисляем все наши ящики которые хотим перенести.

Открываем файл sync_loop_windows.bat на редактирование, и после строк:

Добавляем наши параметры, не забывая про символ «^» в конце строки после %arguments%, получаем в итоге:

Сохраняем и запускаем. Проверяем как прошла отработка и удаляем параметры —justfolders —dry для запуска реального переноса всех папок и писем.

Теперь остается только ждать завершения переноса почтовых ящиков и проверять логи. Для каждого ящика будет создан свой лог.

Дополнение

Несколько основных моментов которые я для себя выделил при изучении программы и отладке ошибок:

  • В папке examplesFAQ.d есть отличный FAQ с примерами
  • При экспериментах с заголовками поможет параметр «—debug». В этом режиме показывается содержимое всех заголовков каждого письма.
  • В качестве сервера источника и назначения можно использовать один и тот же сервер, например, для удаления дубликатов.

Компиляция и работоспособность протестирована на Windows 10 64bit и Windows 7 64bit.

Читайте также:  Как вернуть приложения после переустановки windows 10
Оцените статью