При удалении почтового ящика (или удалении связанной с ним учетной записи в AD), почтовый ящик продолжает храниться в почтовой базе 30 дней(это значение по умолчанию и может быть изменено)
В связи с этим , администратор может восстановить его, удалить принудительно или даже переназначить другому пользователю.
При удалении почтового ящика в MS Exchange просиходит отвязка почтового ящика от учетной записи пользователя в AD, в которой хранятся конфигурационные данные ящика, поэтому по сути удаленный ящик представяет собой "почтовый ящик в вакууме".
Следует различать два статуса удаленных почтовых ящиков - Disabled и Soft Deleted . Первый присваивсется при удалении ящика через использование командлетов Disable и Remove Mailbox(напомню, что Disable – удаляет атрибуты почтового ящика у учетной записи пользоватлея, но оставляет саму учетную запись пользователя в AD. Почтовый ящик остается в базе Exchange до истечения срока хранения, после чего он автоматически удаляется. Remove – удаляет ящик пользователя и его учетную запись из Active Directory)
Второй, Soft Deleted, присваивается после перемещения ящика в другую базу данных, и служит целям защиты информации, это своего рода "бэкап" перемещенного ящика для защиты от проблем в процессе перемещения.
Полезные командлеты для работы с удаленными ящиками MS Exchange:
Get-MailboxDatabase | Get-MailboxStatistics | Where { $_.DisconnectReason -eq "Disabled" } | ft DisplayName,Database,DisconnectDate,MailboxGUID
- вывод списка всех удаленных ящиков
Get-MailboxStatistics –database DB1 | Where { $_.DisconnectReason -eq "Disabled" } | ft DisplayName,Database,DisconnectDate,MailboxGUID
- только для базы данных DB1
Get-MailboxDatabase | Get-MailboxStatistics | Where { $_.DisconnectReason -eq "SoftDeleted" } | ft DisplayName,Database,DisconnectDate,MailboxGUID
- вывод списка ящиков со статусом Soft Deleted
При необходимости окончательного удаления ящиков, не дожидаясь окончания срока хранения, необходимо воспользоваться командлетом Remove—StoreMailbox, указав MailboxGUID удаляемого ящика.
Например,
Remove-StoreMailbox -Database DB1 -Identity "2432444e-5eeb-4c7e-6bd3-ec2a223b081f" -MailboxState Disabled
, где DB1 - база данных с ящиком, а "2432444e-5eeb-4c7e-6bd3-ec2a223b081f" - его MailboxGUID
Для удаления всех отключенных ящиков -
Get-MailboxDatabase | Get-MailboxStatistics | where {$_.DisconnectReason -eq "Disabled"} | foreach {Remove-StoreMailbox -Database $_.database -Identity $_.mailboxguid -MailboxState SoftDeleted}
Для удаления оставшихся после переноса копий в базе DB1-
Get-MailboxStatistics –Database DB1 | Where-Object {$_.DisconnectReason –eq “Softdeleted”} | ForEach {Remove-StoreMailbox –Database $_.database –identity $_.mailboxguid –MailboxState Softdeleted –Whatif}
Для подключения ящика другому пользователю -
Connect-Mailbox -Identity "Identity_1 " -Database DB1 -User VPupkin
Отдельно следует отметить, что при удалении отключенных ящиков, сам по себе размер базы данных не изменится(не уменьшится). Меняется только White Space, пространство, которое будет в дальнейшем использоваться для создания новых ящиков, заполнения старых и тд.
В случае, если стоит цель именно уменьшить занимаемое пространство, следует выполнить дефрагментацию БД в режиме offline.
Для проверки размера white Space -
Get-MailboxDatabase DB1 | ft Name, AvailableNewMailboxSpace
, где DB1 - наша база данных.