При установке нового Exchange Server 2019/2016/2013/2010 с ролью почтовых ящиков (mailbox) автоматически создается база по умолчанию. База создается в каталоге установки Exchange (C:\Program Files\Microsoft\Exchange Server\V15\Mailbox). Имя базы данных генерируется также автоматически (в моем случае это «Mailbox Database 1200388344»). Если вы попробуете удалить почтовую базу по умолчанию, вы столкнетесь с ошибкой “
This mailbox database contains one or more mailboxes
”. Дело в том, что в этой почтовой базе хранится ряд системных почтовых ящиков, которые необходимы для работы Exchange.
This mailbox database contains one or more mailboxes, mailbox plans, archive mailboxes, public folder mailboxes or arbitration mailboxes. To get a list of all mailboxes in this database, run the command Get-Mailbox -Database <Database ID>. To get a list of all mailbox plans in this database, run the command Get-MailboxPlan. To get a list of archive mailboxes in this database, run the command Get-Mailbox -Database <Database ID> -Archive. To get a list of all public folder mailboxes in this database, run the command Get-Mailbox -Database <Database ID> -PublicFolder. To get a list of all arbitration mailboxes in this database, run the command Get-Mailbox -Database <Database ID> -Arbitration. To disable a non-arbitration mailbox so that you can delete the mailbox database, run the command Disable-Mailbox <Mailbox ID>. To disable an archive mailbox so you can delete the mailbox database, run the command Disable-Mailbox <Mailbox ID> -Archive. To disable a public folder mailbox so that you can delete the mailbox database, run the command Disable-Mailbox <Mailbox ID> -PublicFolder. Arbitration mailboxes should be moved to another server; to do this, run the command New-MoveRequest <parameters>. If this is the last server in the organization, run the command Disable-Mailbox <Mailbox ID> -Arbitration -DisableLastArbitrationMailboxAllowed to disable the arbitration mailbox. Mailbox plans should be moved to another server; to do this, run the command Set-MailboxPlan <MailboxPlan ID> -Database <Database ID>.
Как переименовать и перенести почтовую базу по умолчанию в Exchange Server?
Сначала нужно определить имя базы данных, путь к файлу EDB и логам. Запустите консоль Exchange Management Shell (EMS) или подключитесь к своему Exchange Server удаленно с помощью PowerShell:
Get-MailboxDatabase -server mbx3.winitpro.ru| fl Name, EdbFilePath, LogFolderPath
Чтобы изменить имя базы, воспользуйтесь командлетом Set-MailboxDatabase (не обязательно отмонтировать базу):
Set-MailboxDatabase “Mailbox Database 1200388344” -Name MBX3-01
Exchange по умолчанию помещает базу данных на системный диск (C:\). Обязательно перенесите файлы базы данных на другой диск. Благодаря этому рост размена edb файла и лог файлов почтовой базы Exchange не займет все свободное место на системном диске Windows.
Для переноса базы данных используется PowerShell командлет Move-DatabasePath. Сначала нужно отмонтировать базу:
Dismount-Database -Identity MBX3-01
Затем запустите перенос файлов базы данных и лог-файлов:
Move-DatabasePath MBX3-01 -EdbFilePath E:\DB\MBX3-01.edb -LogFolderPath E:\DB\ MBX3-01
После окончания переноса можно смонтировать базу:
Mount-Database -Identity MBX3-01
Удаляем базу данных по умолчанию в Exchange Server
Для удаления базы, требуется перенести все ящики пользователей и служебные ящики в другую базу данных. Командлет Get-Mailbox без дополнительных параметров не выводит системные и служебные ящики в базе. Для поиска арбитражных почтовых ящиков необходимо выполнить команду:
Get-Mailbox -Arbitration -Database "Mailbox Database 1200388344"
Set-ADServerSettings -ViewEntireForest $true
Теперь переместим эти ящики в другую базу:
Get-Mailbox -Arbitration -Database "Mailbox Database 1200388344" | New-MoveRequest -TargetDatabase MBX3-02
Кроме арбитражных ящиков в дефолтной почтовой базе также могут ящики пользователей, почтовый ящик администратора и Discovery Search Mailbox (используется для поиска писем в ящиках Exchange. Их тоже нужно переместить:
Get-Mailbox -Database "Mailbox Database 1200388344" | New-MoveRequest -TargetDatabase MBX3-02
Также в почтовой базе могут быть другие типы ящиков: Monitoring, Auditing (используется для хранения событий аудита о действиях пользователей в ящиках), архивные ящики, ящики общих папок. Последовательно проверьте, что в вашей базе нет этих ящиков:
$mbxdb="Mailbox Database 1200388344"
Get-Mailbox -Database $mbxdb -Auditlog
Get-MailBox -Database $mbxdb -Archive
Get-MailBox -Database $mbxdb -PublicFolder
Get-MailBox -Database $mbxdb -GroupMailbox
Get-MailBox -Database $mbxdb -Monitoring
При обнаружении таких ящиков их нужно переместить с помощью pipe:
| New-MoveRequest -TargetDatabase MBX3-02
(ящик Monitoring можно отключить
| Disable-Mailbox -Confirm:$false
)
Проверьте, что в базе данных не осталось ящиков пользователей:
Get-Mailbox -Database "Mailbox Database 1200388344"
Get-MailboxStatistics -Database "Mailbox Database 1200388344" | Where { $_.DisconnectReason -eq "Disabled" } | ft DisplayName,Database,DisconnectDate,MailboxGUID
После удаления базы эти ящики нельзя будет восстановить.
Проверьте, что процесс переноса закончился успешно (статус Completed):
Get-MoveRequest | Get-MoveRequestStatistics
После завершения переноса обязательно очистите очередь миграции:
Get-MoveRequest | Remove-MoveRequest
Теперь почтовую базу данных по умолчанию можно удалить:
Remove-MailboxDatabase "Mailbox Database 1200388344"
После этого вручную удалите каталог с базой данных с диска:
Remove-Item -LiteralPath "C:\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 1200388344" -Force -Recurse