Как сохранить текст письма zimbra в файл

от admin

Архивация почтовых сообщений и сохранение архива на свой компьютер в Zimbra Web

2. Укажите имя папки, задайте цвет (если необходимо) и нажмите на кнопку "ОК".

3. Выберите все сообщения, которые необходимо архивировать и нажмите на любом выбраном сообщении правой кнопкой мыши. В появившемся меню выберите пункт "Переместить"

4. Из списка выберите папку для архивных сообщений.

5. После того, как вы переместили все сообщения в папку для архивации, перейдите в меню "Настройка → Импорт и экспорт".

6. В настройках "Экспорт" установите следующие значения:

Тип: Учетная запись

Источник: Выберите из списка созданную папку для архивации сообщений.

Дополнительные настройки:

Типы данных: Почта

Нажмите кнопку "Экспорт".

7. После того, как вы нажали кнопку "Экспорт", на странице (меню) загрузки должно появиться сообщение о скачивании файла "Архив-Сегодняшняя дата".

Дополнение:

Так же вы можете архивировать все ваши ежедневники, задачи, контакты, портфели. Для этого в дополнительных настройках пункта "Типы данных" установите нужное вам значение.

Если вам необходимо архивировать сообщения за конкретный период, то в настройках экспорта выберите "Источник" — Входящие (или другую папку), а в дополнительных настройках, в пункте "Дата", укажите период

Zimbra архивация старых сообщений

Есть удаленно работающий почтовый сервер Zimbra 8.6.0_GA_1153 на 1000 пользователей и 4 Тб дискового пространства для почты. 90% этого пространства занято. ОС — Ubuntu. Необходимо: архивировать почту старше 1 года и удалить эти письма из почтовых ящиков.

Вот мой кривой костыль вариант на основе постов CentOS: Zimbra — переносим почтовые ящики с сервера на сервер и Zimbra: удаление случайных или ненужных писем Первым делом останавливаем наш старый почтовый сервер

zimbra # zmcontrol stop

При помощи команды из под пользователя zimbra # выгрузим список всех e-mail адресов в файл, zimbra # zmprov gqu mail | awk ‘‘ > /tmp/mailbox.txt

затем при помощи скрипта, что бы не бекапить каждый ящик в ручную, заархивируем все письма, старше 400 дней. В первой части команды извлекаем их, затем grep выбирает только старые письма и передает их на архивирование.

#!/bin/bash filename=’mailbox.txt’ filelines=`cat $filename` for line in $filelines ; do /opt/zimbra/bin/zmmailbox -z -m $line getRestURL «//?fmt=tgz» > /tmp/$line.tgz done

Уверен, что удаление этих писем после архивирования можно выполнить простым способом. Именно в этом прошу подсказки. В настоящее время планирую решать это по информации из хабрахабра так:

DOMAIN_NAME=«corp.org» # Тут домен EMAIL=/tmp/email.list # Это список всем ящиков MESID=/tmp/mesid.list # это ID писем для удаления DELTEXT=’вечеринка’ # Слово в теме письма или сама тема письма

IFS=$’\n’ # Переменная отвечающая за разделитель поля

before=«$(date +%s)» # Время запуска скрипта t=0 # Переменная, для подсчета удаленных писем

/opt/zimbra/bin/zmprov -l gaa $DOMAIN_NAME | sort > $EMAIL # Собираем список ящиков

# Ну и циклом их перебираем

for i in $(cat $EMAIL); do echo $i # Тут мы получаем список всех папок, отсеим папки которые расшаренные, так как они и так будут пройдены и исключаем папки, которые не почтовые — это Портфель, и Контакты и прочие, не mess

/opt/zimbra/bin/zmmailbox -z -m $i gaf | grep mess | cut -d"/" -f 2- | grep -v «@corp.org» > /tmp/messfolder.list # Теперь циклом проходим по списку и получаем название папки, затем всталяем в запрос и получаем id сообщения для удаления. И так проделываем с каждой папкой.

for p in $(cat /tmp/messfolder.list); do echo $p # Тут все просто: до первого grep мы выводим сообщения из ящика, grep фильтрует по дате, второй grep по теме, затем sed’ы убирают лишние пробелы и cut вырезает остаток и получаем чистый, фильтрованный номер сообщения. /opt/zimbra/bin/zmmailbox -z -m $i s -l 300 in:«\»$p"\" | grep `date -d ‘-5 day’ +%m/%d/%y` | grep «$DELTEXT» | sed -e «s/^\s\s*//» | sed -e «s/\s\s*/ /g» | cut -d" " -f2 > $MESID

# Выводим номер сообщения и считаем кол-во сообщений. cat $MESID count=`grep " $MESID -c` let t=$t+$count

for a in $(cat $MESID | grep ^- | sed s/-//g ) do /opt/zimbra/bin/zmmailbox -z -m $i deleteMessage $a done

for a in $(cat $MESID | sed /-/d) do /opt/zimbra/bin/zmmailbox -z -m $i deleteConversation $a done echo -n > $MESID RES=$? if [ «$RES» == «0» ]; then echo "[Ok]"; else echo "[Err]"; fi

echo «Найдено писем: »$t

after=«$(date +%s)» elapsed=«$(expr $after — $before)» hours=$(($elapsed / 3600)) elapsed=$(($elapsed — $hours * 3600)) minutes=$(($elapsed / 60)) seconds=$(($elapsed — $minutes * 60)) echo «Скрипт выполнялся: $hours часов $minutes минут $seconds секунд» echo «Всего удалено: »$t" писем"

Как сохранить текст письма zimbra в файл

image
Реализуется архивирование почты через встроенную функцию Postfix BCC. Работает она следующим образом: системный администратор задает для почтового ящика адрес архивной почты, вводить определенные настройки, после чего каждое входящее и исходящее письмо будет копироваться в архивную почту, в которой впоследствии можно будет отыскать нужное письмо. Рекомендуем создать для почтового архива отдельный домен. Это значительно упростит управление архивными почтовыми ящиками в будущем.


Пример настройки фильтра входящих сообщений

Особо отметим, что при каждом добавлении или удалении электронных адресов в списках /opt/zimbra/postfix/conf/sender_bcc и /opt/zimbra/postfix/conf/recipient_bcc необходимо повторно выполнять команду postmap с указанием измененного списка, а также перезагружать Postfix. Также рекомендуем воспользоваться почтовыми фильтрами Zimbra OSE на основе имени отправителя и получателя для того, чтобы входящие и исходящие сообщения в сортировалась по папкам и впоследствии вам было легче отыскать нужное письмо.


Пример настройки фильтра исходящих сообщений

Перенос данных между различными версиями Zimbra безопасно и без простоя

  • Автор: Уваров А.С.
  • 16.05.2019

zimbra-server-migration-000.pngПредставляем вашему вниманию перевод статьи зарубежного автора, в которой он подробно рассказывает о процессе переноса данных между двумя серверами Zimbra OSE разных версий, работающих под управлением разных операционных систем. На наш взгляд данный материал будет полезен широкому кругу администраторов почтовых серверов, тем более что аналогичного по полноте и проработанности русскоязычного материала нам не попадалось. В процессе перевода мы немного адаптировали материал для читателей нашего блога, не затрагивая при этом основной смысл исходной статьи.

Zmmailbox и bash спешат на помощь
  1. Установите значение TTL для DNS-записей относящихся к почтовому серверу на минимально короткое время, лучше сделать это не менее чем за сутки до переноса.
  2. Подготовьте полностью рабочий новый сервер
  3. Импортируйте все обслуживаемые домены со старого сервера
  4. Перенесите все учетные записи, пароли, списки рассылки и псевдонимы
  5. Измените все записи DNS и перенаправьте на брандмауэре 25 порт на новый сервер (или не меняя DNS поменяйте местами IP-адреса серверов)
  6. Убедитесь, что новая почта приходит на новый сервер
  7. Убедитесь, что пользователи могут подключаться и работать с новым сервером
  8. Экспортируйте почтовые ящики на старом сервере и загрузите их на новый
zimbra-server-migration-001.pngШаг 2. Экспорт аккаунтов
  • Измените все DNS-записи и переадресацию портов на брандмауэре на новый IP-адрес сервера
  • Дождитесь распространения DNS-записей, прежде чем продолжить миграцию
  • Отключите новый сервер от сети
  • Измените его IP-адрес на адрес старого сервера
  • Измените /etc/hosts и настройки /etc/dnsmasq.conf соответственно
  • Перезапустите службы Zimbra
  • Убедитесь, что сервер может отправлять / получать электронную почту на адреса собственного домена
  • Отключите старый сервер от сети
  • Подключите новый сервер к сети
  • Измените IP-адрес старого сервера на неиспользуемый IP-адрес
  • Измените его /etc/hosts и настройки /etc/dnsmasq.conf соответственно
  • Перезапустите службы Zimbra
  • Подключите его снова к сети, чтобы продолжить миграцию данных

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал

Перенос почтовых ящиков и почты Zimbra с одного сервера на другой

mkdir -p /backup/zimbra

chown -R zimbra:zimbra /backup/zimbra

zmprov gad | tee -a domains.txt

zmprov gaaa | tee -a admins.txt

zmprov -l gaa | tee -a users.txt

for user in `cat users.txt`; do zmprov ga $user | grep -i Name: | tee -a users_settings/$user.txt ; done

for user in `cat users.txt`; do zmprov -l ga $user userPassword | grep userPassword: | awk » | tee -a passwords/$user.shadow; done

zmprov gadl | tee -a distribution_lists.txt

for list in `cat distribution_lists.txt`; do zmprov gdlm $list > distribution_lists/$list.txt ; echo «$list»; done

for user in `cat users.txt`; do zmprov ga $user | grep zimbraMailAlias | awk ‘

‘ | tee -a aliases/$user.txt ; echo $i ; done

find aliases/ -type f -empty | xargs -n1 rm -v

[zimbra@mail zimbra]$ ll
total 24
-rw-r—— 1 zimbra zimbra 52 Jun 12 09:31 admins.txt
drwxr-x— 2 zimbra zimbra 151 Jun 12 10:46 aliases
drwxr-x— 2 zimbra zimbra 264 Jun 12 10:35 distribution_lists
-rw-r—— 1 zimbra zimbra 170 Jun 12 10:22 distribution_lists.txt
-rw-r—— 1 zimbra zimbra 69 Jun 12 09:28 domains.txt
drwxr-x— 2 zimbra zimbra 4096 Jun 12 09:51 passwords
-rw-r—— 1 zimbra zimbra 878 Jun 12 09:34 users.txt
drwxr-x— 2 zimbra zimbra 4096 Jun 12 09:43 users_settings

rsync -a -e ‘ssh -p 22’ /backup/zimbra root@192.168.1.20:/tmp/

scp -r -P 22 /backup/zimbra root@192.168.1.20:/tmp/

mv /tmp/zimbra/ /backup/

chown -R zimbra:zimbra /backup/zimbra

for domain in `cat domains.txt` ; do zmprov cd $domain zimbraAuthMech zimbra ; echo $domain ; done

for i in `cat users.txt`
do
givenName=$(grep givenName: $ACCOUNT_DETAILS/$i.txt | cut -d «:» -f2)
displayName=$(grep displayName: $ACCOUNT_DETAILS/$i.txt | cut -d «:» -f2)
shadowpass=$(cat $PASSWDS/$i.shadow)
zmprov ca $i «TeMpPa55^()» cn «$givenName» displayName «$displayName» givenName «$givenName»
zmprov ma $i userPassword «$shadowpass»
done

for lists in `cat distribution_lists.txt`; do zmprov cdl $lists ; echo «$lists — done » ; done

for list in `cat distribution_lists.txt`
do
for mbmr in `grep -v ‘#’ distribution_lists/$list.txt | grep ‘@’`
do
zmprov adlm $list $mbmr
echo » $mbmr has been added to $list»
done
done

echo «Processing User accounts»
for user in `cat users.txt`
do
echo $user
if [ -f «aliases/$user.txt» ]; then
for alias in `grep ‘@’ aliases/$user.txt`
do
zmprov aaa $user $alias
echo «$user ALIAS $alias — Restored»
done
fi
done
echo «Processing Admin accounts»
for user in `cat admins.txt`
do
echo $user
if [ -f «aliases/$user.txt» ]; then
for alias in `grep ‘@’ aliases/$user.txt`
do
zmprov aaa $user $alias
echo «$user ALIAS $alias — Restored»
done
fi
done

for user in `cat users.txt`; do echo «Exporting mailbox $user» ; zmmailbox -z -m $user getRestURL ‘/?fmt=tgz’ > mailbox_data/$user.tgz ; done

mkdir tmp
set -x
clear
for user in `cat users.txt`;
do
filter=`zmprov ga $user zimbraMailSieveScript > ./tmp/$user`
sed -i -e «1d» ./tmp/$user
sed ‘s/zimbraMailSieveScript: //g’ ./tmp/$user > filters/$user;
rm ./tmp/$user
echo «Export filter for $user»
done
\rm -rf tmp

  • mailbox_data
  • filters

rsync -a -e ‘ssh -p 22’ /backup/zimbra/mailbox_data /backup/zimbra/filters root@192.168.1.20:/tmp/

scp -r -P 22 /backup/zimbra/mailbox_data /backup/zimbra/filters root@192.168.1.20:/tmp/

mv /tmp/mailbox_data /tmp/filters /backup/zimbra/

chown -R zimbra:zimbra /backup/zimbra

for mailbox in `cat users.txt`; do zmmailbox -z -m $mailbox postRestURL «/?fmt=tgz&resolve=skip» mailbox_data/$mailbox.tgz ; echo «$mailbox — done «; done

for filter in filters/*
do
Filter_String=`cat «$filter»`
Account=$filter
zmprov ma $(echo $filter | grep -E -o «\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]\b») zimbraMailSieveScript «$Filter_String»
echo «Process filter $Account»
done
echo «All filter has been import successfully»

Как сохранить текст письма zimbra в файл

Архивация почтовых сообщений и сохранение архива на свой компьютер в Zimbra Web

2. Укажите имя папки, задайте цвет (если необходимо) и нажмите на кнопку "ОК".

3. Выберите все сообщения, которые необходимо архивировать и нажмите на любом выбраном сообщении правой кнопкой мыши. В появившемся меню выберите пункт "Переместить"

4. Из списка выберите папку для архивных сообщений.

5. После того, как вы переместили все сообщения в папку для архивации, перейдите в меню "Настройка → Импорт и экспорт".

6. В настройках "Экспорт" установите следующие значения:

Тип: Учетная запись

Источник: Выберите из списка созданную папку для архивации сообщений.

Дополнительные настройки:

Типы данных: Почта

Нажмите кнопку "Экспорт".

7. После того, как вы нажали кнопку "Экспорт", на странице (меню) загрузки должно появиться сообщение о скачивании файла "Архив-Сегодняшняя дата".

Дополнение:

Так же вы можете архивировать все ваши ежедневники, задачи, контакты, портфели. Для этого в дополнительных настройках пункта "Типы данных" установите нужное вам значение.

Если вам необходимо архивировать сообщения за конкретный период, то в настройках экспорта выберите "Источник" — Входящие (или другую папку), а в дополнительных настройках, в пункте "Дата", укажите период

Архивирование почты в Zimbra Collaboration Suite Open-Source Edition

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

Специально для этих целей был создан плагин Zimbra Archiving and Discovery, который позволяет архивировать исходящие и входящие письма в каждом почтовом ящике и даже сохраненные в черновиках письма. Однако это решение не лишено минусов. Во-первых оно работает только с платной Zimbra Collaboration Suite Network Edition, а во-вторых оно работает только в рамках веб-клиента и при использовании десктопных или мобильных почтовых клиентов не будет ничего архивировать. В связи с этим мы расскажем вам о том, как реализовать архивирование входящей и исходящей почты в бесплатной ZImbra Collaboration Suite Open-Source Edition. которое, к тому же, будет архивировать письма, которые отправляются из любых почтовых клиентов.

image
Реализуется архивирование почты через встроенную функцию Postfix BCC. Работает она следующим образом: системный администратор задает для почтового ящика адрес архивной почты, вводить определенные настройки, после чего каждое входящее и исходящее письмо будет копироваться в архивную почту, в которой впоследствии можно будет отыскать нужное письмо. Рекомендуем создать для почтового архива отдельный домен. Это значительно упростит управление архивными почтовыми ящиками в будущем.

Архивирование исходящих электронных писем

Настроим архивирование исходящих писем. Для примера возьмём учетную запись manager@company.ru и сделаем для него архивный почтовый ящик manager@archive.company.ru. Для того, чтобы исходящие письма архивировались, необходимо внести ряд изменений в настройки Postfix. Для этого нужно открыть файл /opt/zimbra/postfix/conf/main.cf и в его конце добавить строку sender_bcc_maps = lmdb:/opt/zimbra/postfix/conf/sender_bcc. После этого надо создать файл /opt/zimbra/postfix/conf/sender_bcc и внести в него почтовые ящики, которые планируется архивировать, а также почтовые ящики, в которые будут пересылаться архивные письма. Имеется возможность архивировать несколько почтовых ящиков в один. Делается это следующим образом:

После того как все почтовые ящики будут добавлены остается лишь выполнить команду postmap /opt/zimbra/postfix/conf/sender_bcc и перезагрузить Postfix с помощью команды postfix reload. Как следует из нашего примера, после перезагрузки все исходящие письма учетных записей manager@company.ru и sales@company.ru будут попадать в один почтовый ящик manager@archive.company.ru, а исходящие письма учетной записи support@company.ru будут архивироваться в почтовом ящике support@archive.company.ru

Архивирование входящих электронных писем

Теперь настроим автоматическое архивирование входящих писем. Для этого можно воспользоваться все тем же Postfix BCC. Как и в случае с архивированием исходящих писем, нужно открыть файл /opt/zimbra/postfix/conf/main.cf и добавить в него строку recipient_bcc_maps = lmdb:/opt/zimbra/postfix/conf/recipient_bcc. После этого необходимо создать файл /opt/zimbra/postfix/conf/recipient_bcc и добавить в него нужные почтовые адреса в прежнем формате.

После добавления ящиков нужно выполнить команду postmap /opt/zimbra/postfix/conf/recipient_bcc и перезагрузить Postfix с помощью команды postfix reload. Теперь все входящие письма учетных записей manager@company.ru и sales@company.ru будут архивироваться в почтовом ящике manager@archive.company.ru, а входящие письма учетной записи support@company.ru будут копироваться в почтовый ящик support@archive.company.ru.


Пример настройки фильтра входящих сообщений

Особо отметим, что при каждом добавлении или удалении электронных адресов в списках /opt/zimbra/postfix/conf/sender_bcc и /opt/zimbra/postfix/conf/recipient_bcc необходимо повторно выполнять команду postmap с указанием измененного списка, а также перезагружать Postfix. Также рекомендуем воспользоваться почтовыми фильтрами Zimbra OSE на основе имени отправителя и получателя для того, чтобы входящие и исходящие сообщения в сортировалась по папкам и впоследствии вам было легче отыскать нужное письмо.


Пример настройки фильтра исходящих сообщений

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

Архивирование почты в Zimbra Collaboration Suite Open-Source Edition

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

Специально для этих целей был создан плагин Zimbra Archiving and Discovery, который позволяет архивировать исходящие и входящие письма в каждом почтовом ящике и даже сохраненные в черновиках письма. Однако это решение не лишено минусов. Во-первых оно работает только с платной Zimbra Collaboration Suite Network Edition, а во-вторых оно работает только в рамках веб-клиента и при использовании десктопных или мобильных почтовых клиентов не будет ничего архивировать. В связи с этим мы расскажем вам о том, как реализовать архивирование входящей и исходящей почты в бесплатной ZImbra Collaboration Suite Open-Source Edition. которое, к тому же, будет архивировать письма, которые отправляются из любых почтовых клиентов.

Архивирование почты в Zimbra Collaboration Suite Open-Source Edition
Реализуется архивирование почты через встроенную функцию Postfix BCC. Работает она следующим образом: системный администратор задает для почтового ящика адрес архивной почты, вводить определенные настройки, после чего каждое входящее и исходящее письмо будет копироваться в архивную почту, в которой впоследствии можно будет отыскать нужное письмо. Рекомендуем создать для почтового архива отдельный домен. Это значительно упростит управление архивными почтовыми ящиками в будущем.

Читать:
Имеются 5 ключей из которых только один подходит
Архивирование исходящих электронных писем

Архивирование почты в Zimbra Collaboration Suite Open-Source Edition

Настроим архивирование исходящих писем. Для примера возьмём учетную запись [email protected] и сделаем для него архивный почтовый ящик [email protected] Для того, чтобы исходящие письма архивировались, необходимо внести ряд изменений в настройки Postfix. Для этого нужно открыть файл /opt/zimbra/postfix/conf/main.cf и в его конце добавить строку sender_bcc_maps = lmdb:/opt/zimbra/postfix/conf/sender_bcc. После этого надо создать файл /opt/zimbra/postfix/conf/sender_bcc и внести в него почтовые ящики, которые планируется архивировать, а также почтовые ящики, в которые будут пересылаться архивные письма. Имеется возможность архивировать несколько почтовых ящиков в один. Делается это следующим образом:

Архивирование почты в Zimbra Collaboration Suite Open-Source Edition

После того как все почтовые ящики будут добавлены остается лишь выполнить команду postmap /opt/zimbra/postfix/conf/sender_bcc и перезагрузить Postfix с помощью команды postfix reload. Как следует из нашего примера, после перезагрузки все исходящие письма учетных записей [email protected] и [email protected] будут попадать в один почтовый ящик [email protected], а исходящие письма учетной записи [email protected] будут архивироваться в почтовом ящике [email protected]

Архивирование входящих электронных писем

Теперь настроим автоматическое архивирование входящих писем. Для этого можно воспользоваться все тем же Postfix BCC. Как и в случае с архивированием исходящих писем, нужно открыть файл /opt/zimbra/postfix/conf/main.cf и добавить в него строку recipient_bcc_maps = lmdb:/opt/zimbra/postfix/conf/recipient_bcc. После этого необходимо создать файл /opt/zimbra/postfix/conf/recipient_bcc и добавить в него нужные почтовые адреса в прежнем формате.

Архивирование почты в Zimbra Collaboration Suite Open-Source Edition

После добавления ящиков нужно выполнить команду postmap /opt/zimbra/postfix/conf/recipient_bcc и перезагрузить Postfix с помощью команды postfix reload. Теперь все входящие письма учетных записей [email protected] и [email protected] будут архивироваться в почтовом ящике [email protected], а входящие письма учетной записи [email protected] будут копироваться в почтовый ящик [email protected]

Архивирование почты в Zimbra Collaboration Suite Open-Source Edition
Пример настройки фильтра входящих сообщений

Особо отметим, что при каждом добавлении или удалении электронных адресов в списках /opt/zimbra/postfix/conf/sender_bcc и /opt/zimbra/postfix/conf/recipient_bcc необходимо повторно выполнять команду postmap с указанием измененного списка, а также перезагружать Postfix. Также рекомендуем воспользоваться почтовыми фильтрами Zimbra OSE на основе имени отправителя и получателя для того, чтобы входящие и исходящие сообщения в сортировалась по папкам и впоследствии вам было легче отыскать нужное письмо.

Архивирование почты в Zimbra Collaboration Suite Open-Source Edition
Пример настройки фильтра исходящих сообщений

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

По всем вопросам, связанными c Zextras Suite вы можете обратиться к Представителю компании «Zextras» Екатерине Триандафилиди по электронной почте [email protected]

Записки IT специалиста

Перенос данных между различными версиями Zimbra безопасно и без простоя

  • Автор: Уваров А.С.
  • 16.05.2019

zimbra-server-migration-000.pngПредставляем вашему вниманию перевод статьи зарубежного автора, в которой он подробно рассказывает о процессе переноса данных между двумя серверами Zimbra OSE разных версий, работающих под управлением разных операционных систем. На наш взгляд данный материал будет полезен широкому кругу администраторов почтовых серверов, тем более что аналогичного по полноте и проработанности русскоязычного материала нам не попадалось. В процессе перевода мы немного адаптировали материал для читателей нашего блога, не затрагивая при этом основной смысл исходной статьи.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Немного предыстории

После четырех лет работы почтового сервера Zimbra в виртуальной машине объемом в 500 ГБ сервер начал испытывать недостаток свободного места и когда вывод df -h показал, что осталось всего 50 ГБ пришло время перейти на более емкую виртуальную машину.

Бесплатная версия, с которой я работал (и продолжаю работать) не имеет в своем составе инструментов для миграции, хотя в интернете можно найти массу инструкций о переносе данных между старым и новым серверами при помощи rsync. Но этот способ меня не устраивал. Во-первых, требовался простой системы, а во-вторых, синхронизацию требуется проводить между одинаковыми серверами, т.е. мой новый сервер должен был оставаться Zimbra 8.6 под управлением CentOS 6.

Также некоторое время назад был случай аварийного завершения работы сервера (из-за сбоя питания) и база данных оказалась повреждена, что время от времени приводило к ошибкам в логах. То, что с базой не все в порядке стало очевидно после попытки обновления до 8.7.1, которая с треском провалилась и единственное что меня спасло — это сделанная прошлой ночью резервная копия. Поэтому я опасался, что при переносе с помощью rsync я перемещу на новый сервер проблемные данные, которые будут доставлять мне проблемы в будущем.

Так как мне все равно предстояло преодолеть множество сложностей, я хотел получить не только больше свободного места, но и перейти на новую операционную систему CentOS 7 и новую (на тот момент) версию Zimbra 8.7.1, поэтому об rsync не могло быть и речи.

Zmmailbox и bash спешат на помощь

Если вы хоть немного занимались администрированием Zimbra, то вам должна быть знакома такая команда как zmprov. Вы могли использовать ее для сброса забытого пароля администратора, получения списка учетных записей, использующих пересылку почты или делать многие другие вещи, не заходя в веб-интерфейс. Также вы можете быть немного знакомы с zmmailbox.

Zmmailbox, также как и zmprov, очень мощная команда, ее можно использовать для таких тривиальных вещей, как создание почтовой папки, а можно с ее помощью экспортировать в формат tgz целые почтовые ящики с любой структурой пользовательских папок.

Единственным недостатком является то, что вы должны экспортировать каждый ящик отдельно, не допускается использовать * или иные подстановочные символы. Но мы же работаем в Linux, поэтому всегда можно написать bash-скрипты, которые сделают всю тяжелую работу за нас.

Подготовка нового сервера

Вам потребуется установить новый сервер с теми же настройками, что и у старого, но с иным IP-адресом. Не забудьте правильно настроить записи на внутреннем DNS-сервере (dnsmasq) и проверить /etc/hosts. При этом не следует заводить все обслуживаемые сервером домены, укажите только основной, остальные мы перенесем со старого сервера автоматически.

План перехода на новый сервер

Чтобы обеспечить минимальное время простоя мы будем действовать следующим образом:

  1. Установите значение TTL для DNS-записей относящихся к почтовому серверу на минимально короткое время, лучше сделать это не менее чем за сутки до переноса.
  2. Подготовьте полностью рабочий новый сервер
  3. Импортируйте все обслуживаемые домены со старого сервера
  4. Перенесите все учетные записи, пароли, списки рассылки и псевдонимы
  5. Измените все записи DNS и перенаправьте на брандмауэре 25 порт на новый сервер (или не меняя DNS поменяйте местами IP-адреса серверов)
  6. Убедитесь, что новая почта приходит на новый сервер
  7. Убедитесь, что пользователи могут подключаться и работать с новым сервером
  8. Экспортируйте почтовые ящики на старом сервере и загрузите их на новый
Прежде чем продолжить

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

Важно! Прерывание работы любого из описанных ниже сценариев во время импорта может привести к повреждению базы данных, поэтому запускайте их из только из консоли сервера или используя команду screen! Мы вас предупредили.

Подготовка к переносу

Прежде чем начать экспорт нужно убедиться, что у нас достаточно места для хранения, которое доступно как со старого, так и с нового сервера. На старом сервере у меня совсем не было свободного места, тогда как на новом свободен был почти целый 1 ТБ, поэтому в моем случае было сделано удаленное монтирование NFS-ресурса с нового сервера и использование его в качестве промежуточного хранилища.

Вы можете использовать иные способы: USB-диски, сетевые ресурсы, iSCSI и т.д. В общем — на ваше усмотрение.

Следующие шаги предполагают, что промежуточное хранилище находится в /migration/zimbra, если ваш путь отличается, то вам нужно соответствующим образом изменить сценарии. Чтобы везде был порядок, мы будем использовать разные папки для разных файлов миграции, также убедитесь, что пользователь zimbra имеет полный доступ к папкам. Я бы порекомендовал:

Шаг 1. Экспорт доменов

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

zimbra-server-migration-001.pngШаг 2. Экспорт аккаунтов

Вернитесь в /migration/zimbra и создайте новый каталог accounts. Затем экспортируем туда учетные записи администраторов:

Посмотреть список экспортированных аккаунтов вы также можете командой cat, затем экспортируем пользовательские аккаунты:

Шаг 3. Экспорт данных учетных записей

Снова вернемся в /migration/zimbra и создадим новый каталог account_details, в него экспортируем данные учетных записей:

Шаг 4. Экспорт паролей учетных записей

Также возвращаемся в /migration/zimbra, где создаем каталог passwords в который экспортируем пароли:

Шаг 5. Экспорт списков рассылок

Вернемся в /migration/zimbra и создадим каталог distribution_lists, в который выгрузим списки рассылок:

Шаг 6. Экспорт псевдонимов

Также создадим в каталоге /migration/zimbra директорию aliases и экспортируем туда псевдонимы:

Этот процесс займет некоторое время, в зависимости от количества учетных записей, а так как многие аккаунты не имеют псевдонимов, то мы получим много пустых файлов. Удалим их командой:

Таким образом мы экспортировали со старого сервера все данные, кроме самих ящиков пользователей и любых созданных ими фильтров.

Шаг 7. Импорт доменов на новом сервере

Первый шаг в процессе восстановления на новом сервере заключается в восстановлении доменов, если вы уже создали основной домен, то можете удалить его из файла /migration/zimbra/domains/domains.txt.

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

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

Давайте начнем, войдите в систему под пользователем zimbra и выполните следующие команды:

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

Шаг 8. Импорт учетных записей и паролей

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

Перейдем в /migration/zimbra, где следует создать каталог scripts. В нем при помощи любимого редактора создадим и откроем файл restore_accounts.sh:

Внесем в него следующие строки и сохраним:

Сделаем его исполняемым и запустим:

В процессе импорта вы можете время от времени получать сообщение об ошибке:

Это означает, что данные учетные записи уже существуют. Это справедливо для учетной записи администратора и служебных учетных записей, перед импортом вы можете удалить их из файла /migration/zimbra/accounts/users.txt.

Также имейте ввиду, что после выполнения сценария пароль администратора нового сервера будет заменен паролем со старого, если вы конечно не удалите запись admin@domain.com из users.txt

Шаг 9. Импорт списков рассылки

Перейдите в /migration/zimbra и выполните следующую команду, чтобы заново создать списки рассылки:

Теперь заполним их, используя короткий bash-скрипт. Перейдем в /migration/zimbra/distribution_lists и откроем на редактирование скрипт restore_dist_lists.sh:

Внесем в него следующий текст:

Сделаем исполняемым и выполним:

Этот сценарий может занять несколько минут, в зависимости от количества списков рассылки и от количества учетных записей в каждом из них.

Шаг 10. Импорт псевдонимов

Как вы уже догадались, перейдем в /migration/zimbra и создадим новый скрипт restore_aliases.sh:

Внесем в него следующий текст:

Сделаем исполняемым и выполним:

Шаг 11. Подключаем новый сервер к сети и переводим старый в автономный режим

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

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

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

Также проверьте /var/log/zimbra.log на наличие ошибок.

Если все хорошо, то самое время переключить сервера. Есть два способа сделать это:

  • Измените все DNS-записи и переадресацию портов на брандмауэре на новый IP-адрес сервера
  • Дождитесь распространения DNS-записей, прежде чем продолжить миграцию
  • Отключите новый сервер от сети
  • Измените его IP-адрес на адрес старого сервера
  • Измените /etc/hosts и настройки /etc/dnsmasq.conf соответственно
  • Перезапустите службы Zimbra
  • Убедитесь, что сервер может отправлять / получать электронную почту на адреса собственного домена
  • Отключите старый сервер от сети
  • Подключите новый сервер к сети
  • Измените IP-адрес старого сервера на неиспользуемый IP-адрес
  • Измените его /etc/hosts и настройки /etc/dnsmasq.conf соответственно
  • Перезапустите службы Zimbra
  • Подключите его снова к сети, чтобы продолжить миграцию данных

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

После переключения все пользователи, использующие IMAP или веб-клиент, обнаружат пустой почтовый ящик, но вся новая почта будет доставляться на новый сервер.

В последних шагах мы экспортируем содержимое почтовых ящиков со старого сервера и перенесем их на новый.

Шаг 12. Перенос данных почтовых ящиков

Это шаг будет наиболее продолжительным, в зависимости от объема ящиков он может занять сутки и более, импорт данных потребует столько же времени.

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

Войдите на старый сервер через консоль или используя команду screen. Предполагается что промежуточное хранилище снова смонтировано на старом сервере по прежнему пути.

Сменим учетную запись на zimbra и перейдем в /migration/zimbra, затем начнем экспорт содержимого ящиков:

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

Если какие-либо ящики выдают ошибки во время экспорта, то запишите эти учетные записи, чтобы попробовать экспортировать их еще раз позже. Список таких аккаунтов разместите в /migration/zimbra/accounts/problematic_accounts.txt, затем можете повторить экспорт командой:

После того, как завершится экспорт содержимого ящиков, следует экспортировать пользовательские фильтры, для этого понадобится еще один скрипт, создадим новый каталог filters с файлом export_filters.sh в нем.

Внесем в него следующий текст:

Сделаем исполняемым и запустим:

Смонтируем, скопируем или иным образом перенесем промежуточное хранилище на новый сервер. Затем перейдем в /migration/zimbra/mailbox_data и выполним:

Этот процесс также займет много времени, при этом пользователи могут продолжать использовать сервер, когда подойдет их очередь — они увидят, как их ящик начал заполняться письмами со старого сервера.

Если во время импорта вы получили ошибки, можно повторно выгрузить и загрузить проблемные учетные записи, соответственно изменив /migration/zimbra/accounts/users.txt и повторно выполнив команду экспорта. Если вы получаете ошибки типа broken pipe , это означает, что архив tgz был поврежден во время передачи по тем или иным причинам и не может быть распакован.

Давайте теперь импортируем пользовательские фильтры. Перейдем в /migration/zimbra/filters и создадим скрипт import_filters.sh:

Внесем в него следующие строки:

Сделаем исполняемым и выполним:

Заключение

Вот и всё, ваши пользователи должны быть довольны, работая с новым сервером. Единственное, что пропадет у них — это подписи их аккаунтов, к сожалению я так и не нашел способа их надежного автоматизированного переноса. Поэтому я временно сделал доступным старый сервер, чтобы пользователи могли войти в свой старый аккаунт и скопировать оттуда свою подпись.

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

Перевод: Уваров А.С.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Дополнительные материалы:

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал

Похожие статьи