SCROLL

Посты с тэгом: mailbox

Рассмотрим как делать резервную копию баз данных MS Exchange Server 2010, используя оснастку Windows Server Backup в Windows Server 2012 R2.

 

Резервное копирование выполняется с помощью VSS (Volume Shadow Copy Service), с условием полной архивацией указанного тома. Только с этими условиями, сделанная резервная копия будет считаться корректной, в базы данных будет записана информация о времени выполнении резервной копии, а так же удалятся логи транзакций журналов Exchange.

 

Если оснастка Windows Server Backup не добавлена в систему, добавляем ее с помощью мастера добавления ролей и компонентов:

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

 

Решать данную задачу будем с помощью скрипта для Powershell. Задача скрипта:

  • Возможность выполнять одиночный экспорт указанного почтового ящика
  • Возможность выполнять массовый экспорт, указанных почтовых ящиков

 

[stextbox id=’warning’]По-умолчанию в PowerShell включена максимальная политика безопасности, которая позволяет выполнять команды PowerShell в командной строке, но не позволяет в той же командной строке выполнить скрипт с командами PowerShell. Разрешить выполнение скриптов в Powershell:

powershell -Command Set-ExecutionPolicy RemoteSigned[/stextbox]

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

При отключении или удалении почтового ящика в MS Exchange 2010 SP3, он помечается как «Отключенный» (Disable) и «Удаленный» (SoftDeleted). При этом сам ящик физически будет по прежнему находится в базе данных, в течении установленного времени хранения (по-молчанию 14 дней).

 

При помощи консольной оснастки Exchange Management Shell (Командлет Remove-StoreMailbox), можно удалить помеченный как «Отключенный», «Удаленный» немедленно.

 

Отобразить все почтовые ящики на сервере, помеченные как «Отключенные» (Disabled), выполним команду:

Get-MailboxStatistics -Server EXCHANGE | where {$_.DisconnectReason -eq "Disabled"} | Select DisplayName, MailboxGuid, Database

DisplayName    MailboxGuid                                  Database
-----------    -----------                                  --------
Студент        8bcb9ac4-c2d8-4089-8d3d-e80a82a6ca50         USER

Отобразить все почтовые ящики на сервере, помеченные как «Удаленные» (SoftDeleted), выполним команду:

Get-MailboxStatistics -Server EXCHANGE | where {$_.DisconnectReason -eq "SoftDeleted"} | Select DisplayName, MailboxGuid, Database

Получение информации о размере почтового ящика, можно получить как в графической оснастке Exchange Managment Console, так и через консольную оснастку Exchange Management Shell.

Рассмотрим как импортировать/экспортировать почтовые ящики пользователей в MS Exchange 2010 SP3.

 

Импортирование/Экспортирование почтовых ящиков в Exchange 2010 SP3, осуществляется посредством Exchange Managment Shell (Командлеты New-MailboxImportRequest и New-MailboxExportRequest). Для возможности импорта/экспорта почтовых ящиков, необходимо выдать пользователю разрешение.

 

Добавление прав доступа

В Active Directory в подразделении Microsoft Exchange Security Groups создаем глобальную группу Mailbox Import Export и добавляем в нее пользователей, которым будет разрешено импортировать/экспортировать почтовые ящики.

 

 

В этой статье мы разбирали как развернуть Zimbra Collaboration 8.6 на Ubuntu 14.04 Trusty Tahr. В бесплатной версии почтового сервера нет удобного функционала по бекапу и восстановлению почтовых ящиков. А создание бекапов, есть неотъемлемая часть работы любого системного администратора. Да и наличие бекапа всегда нас спасет в трудную минуту.

 

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

 

 

Резервное копирование всех почтовых ящиков

Создаем текстовый файл и делаем его исполняемым:

nano backup_all_mailbox.sh
sudo chmod +x backup_all_mailbox.sh

 

В созданный скрипт вписываем следующее (в параметрах настроек скрипта указываем данные свои):

#!/bin/bash

#####################
# Настройки скрипта #
#####################
# Путь к месту бекапа
Path_backup="/home/jakonda/bkzm"
# Временный файл для работы
Source_list="/home/jakonda/temp"
# Название домена
Domain="jakondo.ru"
# Значение текущей даты
Current_date=$(date +%d-%m-%Y)
# Лог-файл
Log=$Path_backup"/"$Current_date"/log"
echo "#####################################################"
echo "# Резервное копирование всех почтовых ящиков Zimbra #"
echo "#####################################################"
echo ""
echo "Время начала бекапа всех почтовых ящиков - $(date +%T)"
echo "Начало бекапа - $(date +%T)" > $Log
# Запоминаем время начала бекапа
Begin_time=$(date +%s)
echo ""
# Определяем список всех имеющихся почтовых ящиков
echo "Формируем список всех почтовых ящиков для бекапа..."
/opt/zimbra/bin/zmprov -l gaa $Domain > $Source_list
if [ $? -eq 0 ]; then
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]"
echo "Формирование списка почтовых ящиков успешно выполнено." >> $Log
echo
else
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[FAIL]"
echo "Формирование списка почтовых ящиков не удалось выполнить. Завершение работы (Неудача)." >> $Log
exit
echo
fi
# Проходимся по всем ящикам в полученном списке и делаем бекап каждого
echo "Выполняем резервное копирование всех почтовых ящиков"
echo "----------------------------------------------------"
mkdir -p $Path_backup/$Current_date/
echo "Создание каталога $Current_date для размешения бекапа." >> $Log
for mailbox in $( cat $Source_list); do
echo "Резервирование почтового ящика - $mailbox"
/opt/zimbra/bin/zmmailbox -z -m $mailbox getRestUrl "//?fmt=tgz" > $Path_backup/$Current_date/$mailbox.tgz
if [ $? -eq 0 ]; then
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]"
echo "Бекап почтового ящика $mailbox успешен" >> $Log
echo
else
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[FAIL]"
echo "Бекап почтового ящика $mailbox не удачно" >> $Log
echo
fi
done
# Вычисление времени работы бекапа почтовых ящиков
End_time=$(date +%s)
Elapsed_time=$(expr $End_time - $Begin_time)
Hours=$(($Elapsed_time / 3600))
Elapsed_time=$(($Elapsed_time - $Hours * 3600))
Minutes=$(($Elapsed_time / 60))
Seconds=$(($Elapsed_time - $Minutes * 60))
echo "Затрачено времени на резервное копирование : $Hours час $Minutes минут $Seconds секунд"
echo "Затрачено времени на резервное копирование : $Hours час $Minutes минут $Seconds секунд" >> $Log