Управление клиентскими сессиями Exchange

Опубликовано: 26.04.2012
Автор: Виталий Бочкарев
Поддержать автора статьи по этой ссылке

Иногда пользователи MS Exchange сталкиваются с такими проблемами, когда они не могут открыть свой почтовый ящик через программу MS Outlook, хотя сетевое подключение есть, почтовый сервер доступен, коллеги по работе не испытывают аналогичных проблем с использованием почты.

Проблема заключается в том, что в MS Exchnage имеются ограничения на количество MAPI сессий к почтовому ящику. Если их количество превышает 16 (для MS Exchange 2010), то все попытки создать новую сессию будут отклоняться сервером (эта проблема обсуждается в этой ветке форума Microsoft).

Чтобы узнать, сколько подключений открыто к почтовому ящику, можно воспользоваться командой PowerShell на почтовом сервере или в сеансе PowerShell к почтовому серверу (как открыть сеанс для управления почтового сервера со своего компьютера рассказано тут).

Итак, команда Get-LogonStatistics позволяет узнать, сколько же сессий открыто к почтовому ящику:

Get-LogonStatistics -Identity VitBoch | FT username, clientname, clientversion, LogonTime, LastAccessTime

На выходе эта команда выдает таблицу с описанием сессий к ящику, например:

UserName               ClientName    ClientVersion         LogonTime                LastAccessTime
--------               ----------    -------------         ---------                --------------
Bochkarev Vitaly       MBX12         3585.0.33038.1        26.04.2012 10:45:05      26.04.2012 10:45:06
Bochkarev Vitaly       MBX12         3585.0.33038.1        26.04.2012 10:45:06      26.04.2012 14:31:50
Bochkarev Vitaly       MBX12         3585.0.33038.1        26.04.2012 14:24:14      26.04.2012 14:37:31
Bochkarev Vitaly       MBX12         3585.0.33038.1        26.04.2012 14:33:10      26.04.2012 14:33:45
Bochkarev Vitaly       MBX12         3585.0.33038.1        26.04.2012 10:45:07      26.04.2012 10:45:07
Bochkarev Vitaly       MBX12         3585.0.33038.1        26.04.2012 14:36:37      26.04.2012 14:37:10
Bochkarev Vitaly       MBX12         3585.0.33038.1        26.04.2012 10:45:08      26.04.2012 14:36:57
Bochkarev Vitaly       MBX12         3585.0.33038.1        26.04.2012 14:36:59      26.04.2012 14:37:32
Bochkarev Vitaly       MBX12         3585.0.33038.1        26.04.2012 14:36:36      26.04.2012 14:37:32
Bochkarev Vitaly       MBX12         3585.0.33038.1        26.04.2012 10:45:43      26.04.2012 14:37:28
Bochkarev Vitaly       MBX12         3585.0.33038.1        26.04.2012 10:45:43      26.04.2012 10:45:43
Bochkarev Vitaly       MBX12         3585.0.33038.1        26.04.2012 14:36:37      26.04.2012 14:37:12
Bochkarev Vitaly       MBX12         3585.0.33038.1        26.04.2012 10:46:03      26.04.2012 13:31:39

Чтобы посмотреть все сессии, открытые на почтовом сервере, можно воспользоваться такой командой:

Get-LogonStatistics -Server MBX12 |Sort username | FT username, clientversion, LogonTime, LastAccessTime

Если выявлено, что у пользователя сессий больше, чем 16 штук, то необходимо их как-то закрыть. Но проблема состоит в том, что в MS Exchange 2010 это невозможно сделать напрямую. Есть только косвенные способы, чтобы сбросить клиентские сессии:

  1. Перезагрузить почтовый сервер, где находится ящик пользователя (неприемлимо - затронет других пользователей).
  2. Размонтировать и смонтировать хранилище, в котором находится ящик пользователя (неприемлимо - затронет других пользователей).
  3. Переместить ящик проблемного пользователя на другой сервер/в другое хранилище и вернуть обратно (самый оптимальный косвенный вариант).

Итак, я советую использовать перемещение ящика проблемного пользователя между хранилищами, так как в момент миграции все сессии к почтовому ящику закрываются.

Кстати, в упомянутом выше блоге рекомендуется увеличить количество возможных сессий для одного почтового ящика, но я бы не советовал этого делать, так как это вызовет более интенсивное использование ресурсов сервера, а желаемый результат так и не будет достигнут - пользователи так и будут блокировать свои сессии. Причина блокировки - разрывы в связи между клиентом и сервером. Микроразрывы в работе сети подвешивают сессии: когда на клиенте объект (письмо, задача, встреча) закрывается, а в этот момент связь с сервером теряется, сессия не закрывается на стороне сервера - мы получаем повисшую сессию. Описанный пример видно более наглядно, когда пользователь переключатся с кабеля на WiFi и обратно, в этот момент у компьютера меняется IP адрес, сессии открытые со старого IP адреса остаются висеть на стороне сервера, пока не истечет их время жизни (обычно 24 часа).