Последствия обновлений Exchange Server 2010 и борьба с ними

2011-01-09, 01:30 / Argon

В этой статье я расскажу о тех радостях, который мне принесли официальные обновления Exchange Server 2010 и том, как я с ними боролся:

Моя изначальная конфигурация

  • Домен на уровне Windows Server 2008 R2
  • Выделенный сервер с ОС Windows Server 2008 R2, на нём
    • Exchange Server 2010 с установленными ролями MBX, CAS и HUB; в течение его жизни ставились все актуальные обновления Update Rollup, а затем Service Pack 1
    • Forefront Protection for Exchange 2010

Автоматическое подключение дополнительных почтовых ящиков к Outlook

Не трудно представить ситуации, когда нужно получить доступ к почтовому ящику другого пользователя. Как известно, для этого совсем не нужно сбрасывать пароль этого пользователя, а достаточно в Exchange Management Console назначить Full Access Permission для этого ящика на свою учетную запись.

До выхода Exchange Server 2010 SP1 следующим шагом нужно было открыть свойства вашей учетки в Outlook-e и добавить в неё дополнительный почтовый ящик. После выхода SP1 этого делать не нужно, все почтовый ящики, на которые вам назначены полные права, при запуске Outlook будут автоматически показаны в списке.

С одной стороны, такой поведение может показаться удобным. С другой… Даже если вручную закрыть дополнительный ящик в настройках учетки Outlook, при следующем запуске он снова будет открыт. Это влечет за собой следующие негативные моменты:

  • Далеко не всегда нужно постоянно держать открытыми все ящики (которых может быть много), на которые у вас есть полные права, а также синхронизировать из содержимое.
  • Если отменить полные права на дополнительный ящик, он по-прежнему будет выводится в Outlook, но при попытке просмотреть его содержимое выдаст ошибку прав доступа.

Для того, чтобы отключить автоматическое подключение дополнительных почтовых ящиков к вашей учетке в Outlook, нужно

  • Включить отображение Advanced Features в консоли Active Directory Users and Computers
  • Для каждой учетной записи, ящик которой автоматически подключается к вашей
    • открыть Attribute Editor
    • найти параметр msExchDelegateListLink
    • удалить вашу учетку из этого списка

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

Подробнее об описанной функции можно почитать в статье Auto-mapping shared mailboxes in Exchange 2010 SP1 with Outlook 2010.

Служба Microsoft Exchange Transport на стартует при запуске системы

После перезагрузки сервера можно обнаружить, что письма через него не ходят. Причиной тому — остановленная служба Microsoft Exchange Transport, которая почему-то не запускается при старте системы, хотя должна. Если службу стартовать вручную, она запускается без проблем.

Если взглянуть в системный журнал, можно обнаружить следующие не очень радостные записи:

The Microsoft Exchange Transport service hung on starting.

Я долго не мог решить эту проблему, пока искал неисправности в самой операционной системе и компонентах Exchange. Как выяснилось, моя система и не была в чем-то виновата, а причиной стала неполная совместимость RTM-версии Forefront Protection for Exchange 2010 с Exchange Server 2010 SP1. Эта и другие проблемы была решены в выпуске Hotfix Rollup 2 для Forefront Protection for Exchange 2010 и описаны в статье KB2420647, всего через 3 месяца после выхода SP1 к Exchange 2010 ;[

Служба Microsoft Exchange Address Book на стартует при запуске системы

А должна бы! Эта служба необходима для полноценной работы Exchange, и если она остановлена, то, например, новый пользователь не сможет подключить свой Outlook к Exchange.

В журнале можно увидеть следующие записи:

Log Name: System
Source: Service Control Manager
Event ID: 7000
Description:
A timeout was reached (30000 milliseconds) while waiting for the Microsoft Exchange Address Book service to connect.
Log Name: System
Source: Service Control Manager
Event ID: 7009
Description:
The Microsoft Exchange Address Book service failed to start due to the following error:
The service did not respond to the start or control request in a timely fashion.

Периодически, то же самое можно увидеть и для служб:

  • Net.Tcp Port Sharing Service
  • Microsoft Exchange Anti-spam Update
  • Microsoft Exchange Mailbox Replication

А также для зависимых служб:

The Net.Tcp Listener Adapter service depends on the Net.Tcp Port Sharing Service service which failed to start because of the following error:
The service did not respond to the start or control request in a timely fashion.

Мне не удалось решить эту проблему осмысленными действиями, но после долгих плясок с бубном стабильный автозапуск этих служб заработал после… Удаления клиента System Center Configuration Manager 2007 R3 и агента System Center Operations Manager 2007 R2. Мне не известно, кто из них был виноват, так как после их повторной установки проблем с запуском служб не возникало.

Ошибки счетчиков производительности

В журнале приложений регулярно появляется пачка подобных записей:

Log Name: Application
Source: MSExchange Common
Event ID: 106
Level: Error
Description:
Performance counter updating error. Counter name is Average MWI Processing Time, category name is MSExchangeUMMessageWaitingIndicator. Optional code: 3. Exception: The exception thrown is : System.InvalidOperationException: The requested Performance Counter is not a custom counter, it has to be initialized as ReadOnly.
...
Performance Counters Layout information: FileMappingNotFoundException for category MSExchangeUMMessageWaitingIndicator : Microsoft.Exchange.Diagnostics.FileMappingNotFoundException: Cound not open File mapping for name : Global\netfxcustomperfcounters.1.0msexchangeummessagewaitingindicator
...

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

add-pssnapin Microsoft.Exchange.Management.PowerShell.Setup

Затем для каждой группы счетчиков (в моём примере это группа MSExchangeUMMessageWaitingIndicator):

new-perfcounters –definitionfilename "c:\Program Files\Microsoft\Exchange Server\V14\Setup\Perf\MwiLoadBalancerPerformanceCounters.xml"

Каждой группе потерянных счетчиков в папке c:\Program Files\Microsoft\Exchange Server\V14\Setup\Perf\ соответствует XML-файл, который можно определить либо по имени, либо поиском по содержимому.

Возможные конфликты портов

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

The WinRM service is not listening for HTTP requests because there was a failure binding to the URL (http://+:47001/wsman/) in HTTP.SYS.

No remote requests will be serviced on that URL.

User Action
Please use "netsh http" to check if ACL for URL (http://+:47001/wsman/) is set to Network Service.
Unable to bind to the underlying transport for [::]:47001. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine. The data field contains the error number.

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

netstat -ano | findstr ":47001"
TCP 0.0.0.0:47001 0.0.0.0:0 LISTENING 1412
tasklist |findstr "1412"
Microsoft.Exchange.RpcCli 1412 Services 0 159 036 K

…им оказалась служба Microsoft.Exchange.RpcCli. Чтобы избежать конфликтов, рекомендую настроить привязку к фиксированным портам с помощью следующих записей в реестре (для Exchange 2010 SP1):

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MSExchangeAB\Parameters]
"RpcTcpPort"="59533"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MSExchangeRPC\ParametersSystem]
"TCP/IP Port"=dword:0000e88c

Подробное описание этих настроек можно узнать в статье Configuring Static RPC Ports on an Exchange 2010 Client Access Server.

Предупреждения о HomeMTA

Log Name: Application
Source: MSExchange ADAccess
Event ID: 2937
Level: Warning
Description:
Process powershell.exe (PID=8552). Object [CN=Username,CN=OU,DC=domain,DC=local]. Property [HomeMTA] is set to value [domain.local/Configuration/Deleted Objects/Microsoft MTA DEL:...], it is pointing to the Deleted Objects container in Active Directory. This property should be fixed as soon as possible.

Причиной сему — опять же обновление до SP1, в ходе которого почему-то не все пользователи Exchange были должным образом обработаны. Для решения этой проблемы в Exchange Management Shell нужно выполнить:

Get-Mailbox Username | Update-Recipient

Для массового обновления все ящиков пользователей в конкретной базе MDB можно использовать get-mailbox -database "MDB".

Полезные ссылки



Добавить комментарий