При удалении почтового ящика Exchange или удалении учетной записи пользователя в Active Directory, почтовый ящик сразу не удаляется, продолжая храниться в почтовой базе определенное время (по умолчанию 30 дней), в течении которого администратор может восстановить данные из ящика или переназначить его другому пользователю. В этой статье мы поговорим о типах удаленных ящиков, способах управления и восстановления таких ящиков в Exchange.
Что происходит с ящиком Exchange после его удаления
Почтовый ящик Exchange состоит из двух частей: учетной записи пользователя в Active Directory (в атрибутах которой хранится конфигурационные данные ящика) и самого ящика в почтовой базе Exchange. Удаленный ящик Exchange (наверно, более правильно говорить отключенный) представляет собой ящик, хранящийся в базе, но не связанный ни с одной учетной записью в AD. Есть два типа удаленных ящиков Exchange:
- Disabled– ящики, отключенные с помощью командлетов Disable-Mailbox или Remove-Mailbox (первый командлет отключает ящик от учетки, второй – еще и удаляет учетную запись в AD)
- Soft Deleted– копии ящиков, которые сохраняются в хранилище после перемещения ящика в другую почтовую базу. Тем самым обеспечивается дополнительная защита данных от проблем, который могут возникнуть в процессе или после переноса ящика в другую базу.
Оба типа удаленных ящиков хранятся в базе Exchange до истечения срока хранения, заданного администратором. Время, после которого ящик удаляется, указывается в настройках каждой базы Exchange на вкладке Limits -> Keep deleted mailboxes for days (скриншоты для Exchange 2013 и Exchange 2010).
Чтобы вывести список всех имеющихся отключенных ящиков во всех базах организации, выполните команду:
Get-MailboxDatabase | Get-MailboxStatistics | Where { $_.DisconnectReason -eq "Disabled" } | ft DisplayName,Database,DisconnectDate,MailboxGUID
Если нужно найти удаленные ящики в одной базе:
Get-MailboxStatistics –database Msk-DB1 | Where { $_.DisconnectReason -eq "Disabled" } | ft DisplayName,Database,DisconnectDate,MailboxGUID
Список удаленных ящиков со статусом SoftDeleted можно получить командой:
Get-MailboxDatabase | Get-MailboxStatistics | Where { $_.DisconnectReason -eq "SoftDeleted" } | ft DisplayName,Database,DisconnectDate,MailboxGUID
Очистка баз Exchange от удаленных ящиков
В течении заданного времени Exchange автоматически очищает базу от отключенных ящиков. Но отключенные ящики продолжают занимать место в базе, поэтому при массовых миграциях/переносах/удалении пользователей, бывает необходимо принудительно удалить такие ящики, освободив место в почтовых базах.
Чтобы окончательно удалить из базы конкретный отключенный ящик (без возможности его восстановления), нужно воспользоваться командлетом Remove–StoreMailbox, указав MailboxGUID удаленного ящика.
Remove-StoreMailbox -Database Msk-DB1 -Identity "2532944e-8eeb-4c7e-8bd3-ee2a223b071e" -MailboxState Disabled
Чтобы удалить все отключенные ящики в организации:
Get-MailboxDatabase | Get-MailboxStatistics | where {$_.DisconnectReason -eq "Disabled"} | foreach {Remove-StoreMailbox -Database $_.database -Identity $_.mailboxguid -MailboxState SoftDeleted}
Если нужно удалить оставшиеся после переноса копии ящиков в определенной базе, выполните команду:
Get-MailboxStatistics –Database Msk-DB1 | Where-Object {$_.DisconnectReason –eq “Softdeleted”} | ForEach {Remove-StoreMailbox –Database $_.database –identity $_.mailboxguid –MailboxState Softdeleted –Whatif
Подключение удаленного ящика пользователю
Отключенный ящик можно переподключить к той же или другой учетной записи пользователя Active Directory (естественно, учетка должна быть без ящика). Чтобы переподключить ящик к тому же аккаунту, выполните команду:
Connect-Mailbox -Identity "AAndreev" -Database Msk-DB1 -User AAndreev
Эту же операцию можно выполнить из интерфейса EAC: Exchange Admin Center -> Recipients -> Connect a Mailbox.
Восстановление удаленного ящика в ящик другого пользователя
Данные из удаленного ящика можно восстановить в имеющийся ящик другого пользователя с помощью командлета New-MailboxRestoreRequest (мы показывали, как использовать этот командлет в статье о восстановлении ящиков в Exchange):
New-MailboxRestoreRequest -SourceDatabase Msk-DB1 -SourceStoreMailbox "AAndreev" -TargetMailbox "Admin"
Либо можно восстановить ящик по его MailboxGuid, к примеру в отдельную папку RestoreBox:
New-MailboxRestoreRequest -SourceDatabase Msk-DB1 -SourceStoreMailbox “2532944e-8eeb-4c7e-8bd3-ee2a223b071e” -TargetMailbox “Admin” –TargetRootFolder “RestoreBox” –AllowLegacyDNMismatch