«Приходится бежать со всех ног, чтобы только остаться на том же месте» — эту фразу Льюиса Кэролла можно смело применить к работе айтишников, ведь тренды в отрасли информационных технологий меняются быстрее, чем где бы то ни было. Так, например, внедренный когда-то на предприятии корпоративный почтовый сервер уже не в полной мере отвечает запросам современного бизнеса, который, для того чтобы оставаться на плаву, нуждается в полноценной системе совместной работы, способной легко интегрироваться с другими информационными системами предприятия.

image

IT-менеджеры, которые хотят не только организовать работающую коллаб-систему на предприятии, но и максимально сэкономить бюджет, выделенный на ИТ, нередко обращают внимание на Zimbra Open-Source Edition. К плюсам Zimbra OSE можно отнести бесплатность и полностью открытый исходный код решения, а также то, что десятки тысяч предприятий по всему миру успешно используют Zimbra OSE в своей работе. Но мало просто внедрить систему на предприятии, необходимо перенести в нее всю накопившуюся переписку из старого почтового сервера.

Для решения этой задачи существует сразу несколько коммерческих продуктов с различным функционалом. Однако есть и бесплатный способ переноса писем со старого сервера в Zimbra при помощи приложения imapsync. Именно он является официально рекомендуемым. Впрочем, несмотря на кажущуюся простоту, там все же таится несколько подводных камней, с которыми могут столкнуться ИТ-менеджеры при синхронизации почты.

Устанавливать imapsync необходимо на исходный сервер. Перенос переписки осуществляется простой консольной командой, в которой указываются адрес исходного сервера и адрес сервера с Zimbra, а также логин и пароль пользователя на обоих почтовых серверах.

imapsync --nosyncacls --subscribe --syncinternaldates \
--host1 mail.server.local --user1 %Login% --password1 %Password% \
--host2 zimbra.server.local --user2 %ZimbraLogin% --password2 %ZimbraPassword%

В том случае, если пользователей слишком много, можно попробовать автоматизировать процесс путем создания файла imap_users, в который затем добавить информацию о доменах, именах пользователей и паролях к их учетным записям. Например, вот так:



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

. imap_users
src_srv = source.server.com
dest_srv = zimbra.server.com
for ((i = 0; i < ${#users[@]}; i++ ))
do
/usr/bin/imapsync --noauthmd5 --syncinternaldates --buffersize 65535000 --subscribe \
-host1 $src_srv --ssl1 --user1 ${users[$i]} --password1 ${passwords[$i]} --nofastio1
--host2 $dest_srv --ssl2 --user2 ${users[$i]} --password2 ${passwords[$i]} --nofastio2
done

В том случае, если вы не собираетесь выводить из эксплуатации старый почтовый сервер после переезда на Zimbra и на нем будет появляться новая переписка, можно автоматизировать исполнение данного скрипта с помощью cron.

Впрочем, гладко этот процесс выглядит только на бумаге. Зачастую ИТ-менеджеры сталкиваются с неожиданными проблемами. Одной из них является установленное по умолчанию в Zimbra ограничение в 10 мегабайт на одно письмо, из-за чего попытка синхронизации писем с большими вложениями может привести к появлению ошибки.

Решить этот вопрос можно увеличив максимально допустимый размер письма. Например команда zmprov mcf zimbraMtaMaxMessageSize 52428800 увеличивает его до 50 мегабайт.

Ошибки могут возникнуть и при синхронизации больших почтовых ящиков с огромным числом папок и подпапок, содержащих тысячи писем. Из-за большого размера таких ящиков на стороне сервера Zimbra может произойти разрыв связи из-за истечения времени сессии. Для того, чтобы этого не происходило, рекомендуем запускать синхронизацию с параметрами --nofoldersizes --skipsize --fast.

Комментарии (2)


  1. rionnagel
    05.07.2018 15:32

    А если паролей нет в открытом виде?


    1. KaterinaZextras Автор
      05.07.2018 15:43

      Добрый день, существует вариант переноса почтовых ящиков и без необходимости знания паролей, однако доступен он только в тех системах, в которых поддерживается и включен так называемый «Аккаунт администратора», дающий доступ к почтовой переписке других пользователей. Для таких случаев можно использовать флаг --authuser[1|2] при переносе содержимого почтовых ящиков.