среда, 24 марта 2010 г.

Грабли Exchange 2007 - удаление пользователя, а не ящика

Как и любой администратор Exchange 2007, привыкший к интерфейсу Exchange 2003, натогкнулся на следующие грабли, с учетом что я знал о них. И так:
Необходимо было переподключить почтовый ящик с одного пользователя на другой (что делалось уже не одно кратно). Вместо этого была удалена пользовательская учетная запись целеком. Потому как операция удаления на учетной записи через Exchange Management Shell удаляет не почтовый ящик, а учетную запись пользователя целиком. Что же делать!?
сразу скажу очень помогла статья:
Быстрое восстановление случайно удаленных объектов Active Directory
Сразу не понял что мне это не поможет и не нужно, поскольку пользователя мне нужно было удалить и так, а нужен был лишь почтовый ящик его(целевой почтовый ящик). Просто почтовый ящик долго не появлялся (около часа) в Disconnected mailbox. Поэтому:
  • Восстановил учетную запись пользователя из удаленных объектов ActiveDirectory, думая что это ускорит процесс появления удаленного почтового ящика в Disconnected mailbox. (помогла утилита AdRestore.NET читаем здесь и здесь, берем здесь)
  • Нашел команду для Exchange Power Shell для ускорения вычистки хранилища:
    Clean-MailboxDatabase "mailcluster-01.corp.domain.ru\Ex2k7_06thSG_300Limit_Database"
    после чего удаленный почтовый ящик сразу появился в Disconnected mailbox.
  • Прицепил ввостановленный почтовый ящик к совершенно новой учетной записи Active Directory. И назначил SMTP адрес, он автоматом не назначался.
При попытках подключиться к почтовому ящику из Outlook 2003 получаем ошибку(панель управления-почта и т.д. настраиваем на Exchange):
"Не удается открыть указанное хранилище по умолчанию. Убедитесь, что к нему имеется доступ, и повторите попытку." При изменении настройки "Размещать новую почту в" и направлении на файл данных .pst все нормально, но нам оно не надо.
Точно также нет доступа через OWA:
"При попытке использование почтового ящика произошла ошибка. обратитесь в службу технической поддержки организации."
Сведения об ошибке:
RequestUrl: https://mail-ht-01.corp.domain.ru:443/owa/lang.owaUser host address: 10.1.233.229
ExceptionException type: Microsoft.Exchange.Data.Storage.MailboxUnavailableExceptionException message: Cannot open mailbox /o=ExchangeOrganization/ou=first administrative group/cn=recipients/cn=Username.fi.
Call stack
Microsoft.Exchange.Data.Storage.ConnectionCachePool.OpenMailbox(String serverDn, String userDn, String mailboxDn, Guid mailboxGuid, Guid mdbGuid, Object identity, ConnectFlag connectFlag, OpenStoreFlag openStoreFlag, CultureInfo cultureInfo, String clientInfoString, Boolean secondTry) Microsoft.Exchange.Data.Storage.ConnectionCachePool.OpenMailbox(String serverDn, String userDn, String mailboxDn, Guid mailboxGuid, Guid mdbGuid, Object identity, ConnectFlag connectFlag, OpenStoreFlag openStoreFlag, CultureInfo cultureInfo, String clientInfoString, Boolean secondTry) Microsoft.Exchange.Data.Storage.ConnectionCachePool.OpenMailbox(String serverDn, String userDn, String mailboxDn, Guid mailboxGuid, Guid mdbGuid, Object identity, ConnectFlag connectFlag, OpenStoreFlag openStoreFlag, CultureInfo cultureInfo, String clientInfoString) Microsoft.Exchange.Data.Storage.MailboxSession.Initialize(LogonType logonType, ExchangePrincipal owner, DelegateLogonUser delegateUser, Object identity, OpenMailboxSessionFlags flags) Microsoft.Exchange.Data.Storage.MailboxSession.CreateMailboxSession(LogonType logonType, ExchangePrincipal owner, DelegateLogonUser delegateUser, Object identity, OpenMailboxSessionFlags flags, CultureInfo cultureInfo, String clientInfoString) Microsoft.Exchange.Data.Storage.MailboxSession.Open(ExchangePrincipal mailboxOwner, WindowsPrincipal authenticatedUser, CultureInfo cultureInfo, String clientInfoString) Microsoft.Exchange.Clients.Owa.Core.OwaWindowsIdentity.CreateMailboxSession(ExchangePrincipal exchangePrincipal, CultureInfo cultureInfo) Microsoft.Exchange.Clients.Owa.Core.RequestDispatcher.DispatchLanguagePostLocally(OwaContext owaContext, OwaIdentity logonIdentity, CultureInfo culture, String timeZoneKeyName, Boolean isOptimized) Microsoft.Exchange.Clients.Owa.Core.RequestDispatcher.DispatchLanguagePostRequest(OwaContext owaContext) Microsoft.Exchange.Clients.Owa.Core.RequestDispatcher.PrepareRequestWithoutSession(OwaContext owaContext, UserContextCookie userContextCookie) Microsoft.Exchange.Clients.Owa.Core.RequestDispatcher.InternalDispatchRequest(OwaContext owaContext) Microsoft.Exchange.Clients.Owa.Core.RequestDispatcher.DispatchRequest(OwaContext owaContext) System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Inner ExceptionException type: Microsoft.Mapi.MapiExceptionUnknownUserException message: MapiExceptionUnknownUser: Unable to open message store. (hr=0x80004005, ec=1003) Diagnostic context: Lid: 18969 EcDoRpcExt2 called [length=821] Lid: 27161 EcDoRpcExt2 returned [ec=0x0][length=172][latency=0] Lid: 23226 --- ROP Parse Start --- Lid: 27962 ROP: ropLogon [254] Lid: 17082 ROP Error: 0x3EB Lid: 26937 Lid: 21921 StoreEc: 0x3EB Lid: 27962 ROP: ropExtendedError [250] Lid: 1494 ---- Remote Context Beg ---- Lid: 26426 ROP: ropLogon [254] Lid: 22086 Lid: 23110 Lid: 17990 Lid: 16966 StoreEc: 0x8004010F Lid: 22086 Lid: 23110 Lid: 17990 Lid: 16966 StoreEc: 0x8004010F Lid: 32457 StoreEc: 0x3EB Lid: 23241 StoreEc: 0x3EB Lid: 32186 Lid: 8620 StoreEc: 0x3EB Lid: 1750 ---- Remote Context End ---- Lid: 26849 Lid: 21817 ROP Failure: 0x3EB Lid: 26297 Lid: 16585 StoreEc: 0x3EB Lid: 32441 Lid: 1706 StoreEc: 0x3EB Lid: 24761 Lid: 20665 StoreEc: 0x3EB Lid: 25785 Lid: 29881 StoreEc: 0x3EB
Call stack
Microsoft.Mapi.MapiExceptionHelper.ThrowIfError(String message, Int32 hresult, Int32 ec, DiagnosticContext diagCtx) Microsoft.Mapi.ExRpcConnection.OpenMsgStore(OpenStoreFlag storeFlags, String mailboxDn, Guid mailboxGuid, Guid mdbGuid, MapiStore msgStorePrivate, String& correctServerDn, ClientIdentityInfo clientIdentityAs, String userDnAs, String applicationId, CultureInfo cultureInfo) Microsoft.Mapi.ConnectionCache.OpenMapiStore(String mailboxDn, Guid mailboxGuid, Guid mdbGuid, ClientIdentityInfo clientIdentity, String userDnAs, OpenStoreFlag openStoreFlags, CultureInfo cultureInfo, String applicationId) Microsoft.Mapi.ConnectionCache.OpenMailbox(String mailboxDn, Guid mailboxGuid, Guid mdbGuid, WindowsIdentity windowsIdentityAs, String userDnAs, OpenStoreFlag openStoreFlags, CultureInfo cultureInfo, String applicationId) Microsoft.Exchange.Data.Storage.ConnectionCachePool.OpenMailbox(String serverDn, String userDn, String mailboxDn, Guid mailboxGuid, Guid mdbGuid, Object identity, ConnectFlag connectFlag, OpenStoreFlag openStoreFlag, CultureInfo cultureInfo, String clientInfoString, Boolean secondTry)


Кроме того почтовый ящик пользователя всё еще отображался в Disconnected mailbox.

Если попробовать подключить почтовый ящик через рабочей станции администратора почтовой системы через Outlook 2007, то получаем:
"Невозможно открыть набор папок. Ошибка при входе на сервер Microsoft Exchange"

Также пробовал в ADUC в свойствах учетной записи пользователя давать все права на SELF. не помогло!

Возникло такое ощющение что не хватает каких то прав на ящик…

Повторил процедуру подключения на 2-м новом пользователе - всё тоже самое.

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

Summary: 1 item(s). 0 succeeded, 1 failed.
Elapsed time: 00:00:01

VIA
Failed

Error:
Error was found for VIA () because: Error occurred in the step: Opening source mailbox. Failed to open mailbox with error: The operation failed., error code: -1056749262

Exchange Management Shell command attempted:
'corp.domain.ru/UO1/OU2/VIA' move-mailbox -TargetDatabase 'MailCluster-01\Ex2k7_04thDisabled_SG\Ex2k7_04thDisabled_Database'

Elapsed Time: 00:00:01


Решение оказалось на поверхности:
1.Необходимо восстановленному пользователю (которого удалили в самом начале) создать новый пользовательский ящик. При этом будет обнаружено что все mail алиасы которые ранее были у прользователя будут применены для этого созданного ящика.
2.Отключить и включить востановленную учетку.
3.Перецепить целевой почтовый ящик - оригинальный для востановленного пользователя от того пользователя (нового созданного), которому мы его подцепили. и Прицепить к тому пользователю, которому наш целевой почтовый ящик необходим.

Решение проблемы с аутентификацией Win9x на Windows 2008 R2 контроллерах домена

При обновление контроллеров домена с Windows 2003 до Windows 2008 R2.
Когда был введен первый контроллер домена с операционной системой Windows 2008 R2 (ракже роли DNS и WINS) обнаружилась пролема аутентификации Win9x компьютеров.
проблема возникла после того как новому контроллеру были переданы роли:
Domain naming master, RID pool manager
(можно посмотреть командой netdom query fsmo)
При попытке входа в домен на Win9x компьютерах выдвалась ошибка:
"Данный запрос не поддерживается сетью"
Раскопки в гугле и сравнение значений реестра наконтроллерах с разной ОС (2003 и 2008R2) привели к следующему решению:
ключи реестра на 2008R2 должны быть следующими:
Windows Registry Editor Version 5.00
[HKLM\SYSTEM\CurrentControlSet\Control\Lsa\]
"lmcompatibilitylevel"=dword:00000002
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0]
"Auth132"="IISSUBA"
"NtlmMinClientSec"=dword:00000000
"NtlmMinServerSec"=dword:00000000

Посмотреть здесь можно.

аналогичные изменения можно внести политикой:

Там же изменил параметры подписывания SMB:
Microsoft network client: Send unencripted password to third-party SMB servers
Microsoft network server: Digitally sign communications (always)
О которых можно почитать здесь.
После чего при входе на Win9x компьютерах (теперь вместо NET-BIOS обязательно нужно использовать полнодоменное имя ) стали выдаватся сообщения вида:
"пароль не опознан и одним из серверов", но при этом все сетевые ресурсы стали доступны.

Примечательно, что, если пользователю менять пароль, то он перестаёт мочь аутентифицироваться и ему не предоставляются сетевые ресурсы. Даже если на Win9x клиенте установлен dsclient v 5.0.2920.5.exe и 266772usa8.exe и 293793USA8.EXE. Как было сказано здесь.


Примечательно, что те пользователи, которые не меняли пароль могут заходить на машину без проблем, а новые - не могут этим похвастать. Версия Windows 98 SE по крайней мере.
Установил: Maximus Decim Cumulative Update - не помогло.
На контроллере домена, обнаружил следующую ошибку:
System
- Provider
[ Name] Microsoft-Windows-Security-Auditing
[ Guid] {54849625-5478-4994-A5BA-3E3B0328C30D}
EventID 4776
Version 0
Level 0
Task 14336
Opcode 0
Keywords 0x8010000000000000
- TimeCreated
[ SystemTime] 2010-03-26T10:50:21.265625000Z
EventRecordID 11209030
Correlation
- Execution
[ ProcessID] 532
[ ThreadID] 704
Channel Security
Computer DC.corp.mydomain.ru
Security
- EventData
PackageName MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
TargetUserName UserName
Workstation \\PCName
Status 0xc000006a
натолкнулся на неожиданное решение. Еще об этом.
Итак решение:
На Windows 98:
1. Установить IE6 SP1
2. Установить DSClient
На Windows 2008:
1. Создать параметр SMB2 (REG_DWORD) и установить в "0" путь HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters)
2. Создать параметр EnableRaw (REG_DWORD) и установить в "0" путь HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters
3. В локальных политиках - Параметры безопасности: Клиент сети Microsoft: использовать цифровую подпись (с согласия сервера) (Microsoft network client: Digitally sign communications (if server agrees) установить в "Включено"
4. Клиент сети Microsoft: использовать цифровую подпись (всегда) ( Microsoft network client: Digitally sign communications (always) установить в "Отключено"
5. Сервер сети Microsoft: использовать цифровую подпись (с согласия клиента) (Microsoft network server: Digitally sign communications (if server agrees)) установить в "Включено"
6. Сервер сети Microsoft: использовать цифровую подпись (всегда) (Microsoft network server: Digitally sign communications (always) установить в "Отключено"
7. Сетевая безопасность: уровень проверки подлинности LAN Manager установить "Отправлять только NTLM-ответ"
Как ни странно, это тоже не помогло...
Еще одну неприятность заметил - если прользователи не меняют пароль (у них в учетной записи выставлена галка не менять пароль), то у них никаких проблем, если же меняют (на другой машине с ОС XP) или им сбрасывается пароль административно - то уже номально аутентифицироваться не могут на сетевых ресурсах доменной учеткой.

Пренос центра сертификации - ROOT Certification Authority

При обновлении контроллеров домена с Windows 2003 до Windows 2008 R2, контроллер домена на котором был расположен центр сртификации отказался понижатья до роли рядового сервера, пока с него не перенесут или не удалят центр сертификации.
По этому поводу нашел мануал:
Active Directory Certificate Services Upgrade and Migration Guide for Windows Server 2008
Благодаря которому удалось перенести центр сертификации c Windows 2003 на Windows 2008 R2 Server.