суббота, 2 апреля 2011 г.

System Mailbox в Exchange 2010

clip_image002Системные почтовые ящики на сервере Exchange зачастую настолько не заметны, что на них мало кто обращает внимания. Но при этом, они несут на себе достаточно важные функции и неполадки с этими ящиками могут доставить много неудобств администраторам. Несмотря на то, что системные почтовые ящики являются «самодостаточной единицей», если можно так выразиться, и в большинстве случаев не требуют к себе внимания со стороны администраторов, все же бывают ситуации, когда у них что-то ломается и вмешательство становится уже просто необходимым. В связи с этим, я предлагаю в данной статье поговорить о том, зачем этот тип почтовых ящиков нужен и как их лечить в случае неприятностей.

Типы System Mailboxes

Что касается сервера Exchange 2010, то тут есть три типа системных почтовых ящиков:

  • Message Approval - SystemMailbox {1f05a927-xxxx- xxxx - xxxx -xxxxxxxxxxxx}

Где х – это случайное число

  • Discovery - SystemMailbox {e0dc1c29-89c3-4034-b678-e6c29d823ed9}
  • Federated E-mail - FederatedEmail 4c1f4d8b-8179-4148-93bf-00a95fa1e042

Из названий очевидно для чего каждый из них служит. Подробнее про типы получателей в Exchange 2010 можно почитать здесь.

Через графическую консоль управления Exchange (EMC), увидеть системные ящики невозможно. Чтобы получить их список, даже командлета Get-Mailbox не достаточно, понадобится ещё параметр Arbitration:

Get-Mailbox –Arbitration

clip_image004

Рис.1: Список системных почтовых ящиков.

Здесь нужно заметить, что кроме этих трех системных почтовых ящиков, есть так называемый «специальный» почтовый ящик – Discovery Search Mailbox, его не нужно путать с озвученным выше системным ящиком. Системный почтовый ящик Discovery используется механизмом Multi-Mailbox Search для хранения метабазы поиска, а в Discovery Search Mailbox копируются результаты поиска. При этом, в отличие от системных почтовых ящиков, создать дополнительный Discovery Search Mailbox нет ни каких проблем, нужно просто c командлетом New-Mailbox использовать параметр Discovery.

Если смотреть на данные почтовые ящики со стороны Active Directory, то не трудно заметить, что учетные записи, связанные с ними находятся в отключенном состоянии:

clip_image006

Рис.2: Учетные записи Active Directory, ассоциированные с системными почтовыми ящиками.

Восстановление System Mailbox

Со стороны Exchange`a, повредить системные почтовые ящики достаточно не просто, хотя бы потому, что их не видно при обычном просмотре. Но это реально, и для того, чтобы вернуть их на место нужно просто заново активировать почтовый ящик для соответствующих учетных записей. Делается это при помощи командлета Enable-Mailbox:

Enable-Mailbox “SystemMailbox{e0dc1c29-89c3-4034-b678-e6c29d823ed9}” -Arbitration

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

Проблема усложнится, если были удалены соответствующие учетные записи в Active Directory.

Дело в том, что учетные записи системных почтовых ящиков автоматически создаются во время установки сервера Exchange, а если быть точнее, то создаются они во время подготовки базы данных Active Directory. Раз так, то восстановить их можно будет просто ещё раз выполнив PrepareAD, для этого надо найти дистрибутив, с которого был установлен Exchange и запустить setup c ключом PrepareAD:

Setup.com /PrepareAD

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

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

25 комментариев:

Анонимный комментирует...

Добрый день! у меня вопрос. Как проверить что системные ящики востановлены и работают?
И второй вопрос: после ввода get-mailbpx - –Arbitration/ показывает -
SystemMailbox{1f05a927... SystemMailbox{1f0... win-stk01 unlimited
SystemMailbox{e0dc1c29... SystemMailbox{e0d... win-stk01 unlimited
DiscoverySearchMailbox... DiscoverySearchMa... win-stk01 unlimited
FederatedEmail.4c1f4d8... FederatedEmail.4c... win-stk01 unlimited
Что дальше делать?

Заранее благодарен, за все статьи, благодаря которым проктически освоил Exchange )

Анонимный комментирует...

Возможны ли перемещения системных ящиков из одной базы в другую? Переместил все ящики в другую БД, а старую БД удалить не могу из-за системных...

Анонимный комментирует...

Перенос системных ящиков возможен.
1 получаем список ящиков Get-Mailbox –Arbitration | fl
2 Находим для каждого ящика параметр ExchangeGuid и выписываем его куда-нибудь, чтоб не запутаться (ибо по name перенос нет идет - мешают скобки воспринимаемые как команды)
3 создаем команду new-moverequest -identity (ExchangeGuid нужного ящика) -targetdatabase (имя БД, в которую надо перенести)
4 закрываем запрос на перенос в консоли Эксчендж

Алексей Богомолов (Alexx) комментирует...

Можно перенести все и сразу: Get-Mailbox -Database DB1 –Arbitration | new-moverequest -targetdatabase DB2

Анонимный комментирует...

[PS] C:\Windows\system32>Get-Mailbox -Database 1211585413 -Arbitration | new-moverequest -targetdatabase 1317060511
Не удалось подключиться к базе данных почтовых ящиков.
+ CategoryInfo : ResourceUnavailable: (0:Int32) [New-MoveRequest], MailboxUnavailableException
+ FullyQualifiedErrorId : D8DD299E,Microsoft.Exchange.Management.RecipientTasks.NewMoveRequest

Не удалось подключиться к базе данных почтовых ящиков.
+ CategoryInfo : ResourceUnavailable: (1:Int32) [New-MoveRequest], MailboxUnavailableException
+ FullyQualifiedErrorId : D8DD299E,Microsoft.Exchange.Management.RecipientTasks.NewMoveRequest

Не удалось подключиться к базе данных почтовых ящиков.
+ CategoryInfo : ResourceUnavailable: (2:Int32) [New-MoveRequest], MailboxUnavailableException
+ FullyQualifiedErrorId : D8DD299E,Microsoft.Exchange.Management.RecipientTasks.NewMoveRequest

Вячеслав комментирует...

Спасибо! Статься помогла вернуть системные ящики из AD на место в Exchange.
А на что влияет ProhibitSendQuota? И как им управлять для системных почтовых ящиков?
У меня все восстановленные ящики получились с параметром Unlimited.
А когда создал DiscoverySearchMailbox - для него установилось значение 50Gb.

Алексей Богомолов (Alexx) комментирует...

Это дефолтные значения, не переживайте.
ProhibitSendQuota - это квота на размер ящика.

Алексей Богомолов (Alexx) комментирует...

После превышения этой квоты будет запрещена отправка сообщений из этого ящика.

Андрей комментирует...

Добрый день!Спасибо за статью,такой вопрос: отмонтировали базу, удалили файлы БД. В ней находились Arbitration пользователи.
Enable-Mailbox говорит
This task does not support recipients of this type. The specified recipient mosgas.lan/Users/SystemMailbox{1f05a927-afc
e-41d2-b91e-cad15fb801bd} is of type UserMailbox.
Монтирование отсутствующей базы предупреждает о невозможности в дальнейшем вернуться назад.
Можно ли в этой ситуации что-то сделать?

Алексей Богомолов (Alexx) комментирует...

Попробуйте смонтировать базу как Recovery Database и сделайте move ящика. Либо выполните Setup.com /PrepareAD (но не уверен что поможет в данном случае, возможно будет необходио сначала удалить учетки, а потом Setup.com /PrepareAD).

Андрей комментирует...

Спасибо, попробую.

Андрей комментирует...

Алексей, а возможно ли удалить мэйлбоксы этих пользователей, не монтируя базу которой уже нет?
а потом заново создать ящики?

Алексей Богомолов (Alexx) комментирует...

Да, удалите учетки в АД.

Андрей комментирует...

Спасибо огромное! Все получилось.

Анонимный комментирует...

На до было подчистить ткстовоую мошину и удалить почтовый сервер, но возник косяк с этими записями. Попробывал все выше описаное, но фиг...
Мне помогло только то, что предложил сам exchange:

Get-Mailbox -Arbitration | disable-Mailbox -Arbitration -DisableLastArbitrationMailboxAllowed

Анонимный комментирует...

Как посмотреть в какой базе находятся системные ящики?

Анонимный комментирует...

Здравствуйте, собираюсь удалять базу (EX2010), сейчас пока перемещаю из нее ящики. Подковырка в том. что если выводить список ящиков кмандлетом
get-mailboxstatistics -Database DB | Where-Object {$_.totalitemsize -gt 1} | ft displayname,totalitemsize
то он показывает среди оставшихся ящиков пользователей SystemMailbox{4470a1aa-b099-48a3-8fb6-15fe7a0cf2aa}. Если смотреть список ящиков той же базы командлетом Get-mailbox -database DB -arbitration то не возвращается ничего. Если выполнить команду
Get-Mailbox -Arbitration то среди возвращаемых системных ящиков этого ящика нет. В AD также не нашла учетки, которая ему соответствовала бы.
Как можно обхитрить Exchange и перенести этот ящик? ведь только Get-mailboxstatistics yне позволит мне это сделать.

Алексей Богомолов (Alexx) комментирует...

А прямо так New-MoveRequest -Identity"SystemMailbox{4470a1aa-b099-48a3-8fb6-15fe7a0cf2aa}" ... - не получается?

Unknown комментирует...

Алексей, при выполнении PrepareAD (Exch2010) выдает ошибку "Не удается найти службу обновления получателей, которая отвечает за домен......" как можно восстановить systemmailbox в таком случае?

Алексей Богомолов (Alexx) комментирует...

Посмотрите эту статью http://technet.microsoft.com/en-us/library/bb676693.aspx Setup /PrepareLegacyExchangePermissions

Анонимный комментирует...

Грохнулась база - завел новую, перебросил ящики -все вроде ОК, НО
в старой осталось 3 арбитражных ящика. Поскольку база отключена навечно есть только учетки в АД. Не перенести и пересоздать не дает. Соответственно и удалить старую тоже. Как бы выкрутится?

Unknown комментирует...

у меня умер маилбокс датабазе осле переноса майлбокс датабазе на другой сервер я стер старый и vместе сним арбитраторов тоже как мне поступить? пожалуиста если сможете по подробней

Анонимный комментирует...

Ситуация такая же "Грохнулась база - завел новую, перебросил ящики -все вроде ОК, НО
в старой осталось 3 арбитражных ящика."

Что делать? удалять три учетки в АД и запускать Setup.com /PrepareAD?

Unknown комментирует...

Смотрю свой AD и Exchange, учетные записи связанные с системными почтовыми ящиками должны быть выключены?
Как понять что системные ящики вышли из строя ?

Unknown комментирует...

На заметку:
Exchange 2010 не даст удалить последний служебный ящик. Последовательность должна быть следующей:


1. Отключаем служебные ящики
Get-Mailbox -Arbitration | Disable-Mailbox "SystemMailbox{}" -Arbitration

2. Один служебный ящик скорее всего не удалиться, поэтому нужно подтвердить удаление последнего служебного ящика
Disable-Mailbox "SystemMailbox{}" -Arbitration -DisableLastArbitrationMailboxAllowed

3. Создаем ящики в нужной базе (в конце каждой команды можно дописать -database )
Enable-Mailbox –Arbitration –Identity "SystemMailbox{GUID}"
Enable-Mailbox –Arbitration –Identity "SystemMailbox{GUID}"
Enable-Mailbox -Discovery -Identity "DiscoverySearchMailbox{GUID}"
Enable-Mailbox -Discovery -Identity "FederatedEmail.GUID"

Отправить комментарий