Сервер в кармане, или просто о сложном!

главная - Статьи - Почта

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

Теги: Резервное копирование Почтовый сервер

Imapsync

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

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

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

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

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

Imapsync

Итак, Imapsync (http://freshmeat.net/projects/imapsync).

Страница документации: http://ks.lamiral.info/imapsync/README

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

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

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

    imapsync \
           --host1 <host1> --user1 <user1> --password1 <secret1> \
           --host2 <host2> --user2 <user2> --password2 <secret2>

    где:
    <host1> - почтовый сервер, откуда копируем почту,
    <user1> - логин почтового аккаунта,
    <secret1> - пароль почтового аккаунта,
    <host2> - почтовый сервер, куда копируем почту,
    <user2> - логин почтового аккаунта,
    <secret2> - пароль почтового аккаунта

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

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

Пример: вместо

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

--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 скрипт может выглядеть примерно так:

{ while IFS=';' read  u1 p1 u2 p2; do
       imapsync --host1 imap.side1.org --user1 "$u1" --password1 "$p1" \
                --host2 imap.side2.org --user2 "$u2" --password2 "$p2"
done ; } < file.txt

Обратите внимание, что есть вероятность, что ваш почтовый сервер не поддерживается Imapsync. Это лучше всего проверить лично, не полагаясь только на официальный список совместимых почтовых серверов.

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

Я использовал эту программу для переноса 15 почтовых ящиков общим объемом 4 Гб. Метод себя оправдал, но занял приличное время. Я бы не стал использовать данную программу для переноса больших объемов почты, например, почтовых ящиков по 3+ Гб. Если у вас именно такие крупные почтовые ящики, и их много, вам нужно что-то другое, более быстрое, но, возможно, более платное!

Авторизуйтесь для добавления комментариев!


    забыли пароль?    новый пользователь?