检测并纠正 msExchMasterAccountSid 问题

 

上一次修改主题: 2006-08-16

运行 Microsoft® Exchange Server 2003 或 Exchange 2000 Server 的服务器上的邮箱必须链接到 Active Directory® 目录服务帐户,以便可以进行访问。通过设置邮箱上的多个 Active Directory 属性可完成此链接。链接 Exchange 邮箱的 Active Directory 帐户可处于启用或禁用状态。不能使用禁用的 Active Directory 用户帐户登录到 Active Directory 域。

将 Exchange 邮箱链接到禁用的 Active Directory 用户帐户的最常见原因是将一个 Active Directory 林中的邮箱链接到 Microsoft Windows® NT 或林外的 Active Directory 帐户。不能直接将 Active Directory 林中的邮箱与外部用户帐户关联。因此,使用禁用的用户帐户可间接完成此任务。这是通过完成下列任务(不必按所列的顺序)实现的:

  • 启用与运行 Exchange 的服务器所在的同一 Active Directory 林中的 Active Directory 帐户(帐户 A)的邮箱。

  • 禁止使用 Active Directory 帐户 A 进行登录。应仅使用禁用的帐户将邮箱分配给外部所有帐户。

  • 授予不同帐户(帐户 B)“完全邮箱访问和读取权限”权利,其中帐户 B 位于林外部或是常用的安全标识符 (SID)。有关常用 SID 的详细信息,请参阅以下内容。
    在帐户 A 的对象属性中可查看和更改“完全邮箱访问”权利。此权利在“Exchange 高级”页面上的“邮箱权利”对话框中可见。可将此权利授予多个内部和外部帐户。

    note注意:
    若要使“Exchange 高级”属性页面在“Active Directory 用户和计算机”控制台中可见,Exchange 系统管理器必须安装在管理工作站上。
  • 授予外部帐户(帐户 B)或常用 SID“关联外部帐户”权利。
    大多数情况下,Windows 中的 SID 与单个 Active Directory 林中的单个帐户唯一关联。常用 SID 与某些标准 Windows 帐户关联,此情况也适用于所有林之间的相同标准帐户。自身帐户和匿名帐户是具有一般常用 SID 的两种示例帐户。有关常见 SID 的详细信息,请参阅知识库文章 243330“Windows 操作系统中的常见安全标识符”。

仅有帐户 A 驻留的林外部的帐户或具有常用 SID 的帐户才能设置为关联外部帐户。关联外部帐户设置实际并不正确,尽管为了方便在“邮箱权利”对话框中将其显示了出来。但它实际是帐户 A 上的邮箱安全描述符中设置的标志,用于将帐户 B 标识为应“拥有”邮箱的外部帐户。

每次只能在一个帐户上设置关联外部帐户。将帐户 B 设置为关联外部帐户之前,还必须授予其“完全邮箱访问和读取权限”权利。如果重新启用 Active Directory 帐户,则 Active Directory 不会强制同时执行所有这些任务,也不会强制删除关联外部帐户或 msExchMasterAccountSid。此注意事项非常重要,因为仅有禁用的帐户才应有具有关联外部帐户权利或 msExchMasterAccountSid 属性的用户。如果未正确设置和同步这些属性,则可能出现各种问题。这些问题可包括将邮件传递到受影响的帐户出现的问题、委派和公用文件夹访问问题,以及包含大量帐户时运行 Exchange 的服务器的常规性能问题。有关这些问题的详细信息,请参阅知识库文章:

可以将关联外部帐户和 msExchMasterAccountSid 设置为任何常见 SID 或外部帐户。但是,这些值应仅分配给自身帐户或外部帐户。Microsoft 不支持将其他常用 SID 委派为关联外部帐户。此外,也不支持委派安全组为关联外部帐户。

如果启用的 Active Directory 帐户与 Exchange 邮箱关联,则使用 Active Directory 帐户 (objectSid) 的 SID 执行邮箱安全相关的功能。

例如,考虑一个用户使用 Microsoft Office® Outlook 授予另一个用户文件夹权限的情况。在 Outlook 中,将权限授予给其他邮箱,而不是直接授予给 Active Directory 帐户。通过这种间接授予,Outlook 可识别不是基于 Active Directory 的帐户的权限,例如 Exchange 5.5 Server 帐户。

在 Exchange Server 2003 和 Exchange 2000 Server中,如果在 Outlook 中将权限授予给另一个用户的文件夹,则实现权限的通常方法是将权限授予给与邮箱关联的 Active Directory 帐户的 SID。但是,如果禁用此帐户,则这些权限将不起作用。防止使用此帐户登录到资源或授予资源访问权限。这是关联外部帐户和 msExchMasterAccountSid 变为有用的关键。当 Exchange 评估安全凭据时,通过它们可使用实际拥有邮箱的外部帐户的其他 SID 进行替换。

如果在帐户 A 的“邮箱权利”属性上设置了关联外部帐户标志,则在邮箱安全操作中使用 msExchMasterAccountSid 中列出的 SID,而不是使用帐户 A 的 objectSid。唯一的例外是,如果 msExchMasterAccountSid 的值为常用自身帐户,则这种情况下仍将使用 objectSid。如果 msExchMasterAccountSid 的值不存在,则无论是否设置了关联外部帐户,有关邮箱的安全操作都将失败。关联外部帐户和 msExchMasterAccountSid 一前一后配合工作。因此,遵循下列规则很重要:

  • 如果帐户具有关联外部帐户或 msExchMasterAccountSid,则必须禁用此帐户。启用的 Active Directory 帐户不应具有关联外部帐户或 msExchMasterAccountSid
  • 每个已启用邮箱的禁止登录的 Active Directory 帐户都必须同时具有关联外部帐户和 msExchMasterAccountSid 属性。

通过以下 LDAP 查询,可搜索具有 msExchMasterAccountSid 属性的已启用的 Active Directory 帐户:

(&(objectCategory=user)(msExchUserAccountControl=0)(msExchMasterAccountSid=*))

此查询可用于各种 LDAP 应用程序和脚本。例如,可将其与 Windows 2000 Server 和 Windows Server™2003 轻型目录访问协议 (LDAP) 数据交换格式 (LDIF) 目录导出工具 (LDIFDE) 工具一起使用:

LDIFDE -F BadAccounts.txt -D "DC=CONTOSO,DC=COM" -R "(&(objectCategory=user)(msExchUserAccountControl=0)(msExchMasterAccountSid=*))"

应检查 BadAccounts.txt 中所列的每个帐户,并且从中删除关联外部帐户。

在“邮箱权利”对话框中删除关联外部帐户将自动删除 msExchMasterAccountSid 属性。在“邮箱权利”对话框中设置关联外部帐户将自动设置 msExchMasterAccountSid 属性。启用和禁用的 Active Directory 帐户都会出现这种情况。

反过来,也可以搜索不具有 msExchMasterAccountSid 值的禁用的 Active Directory 用户帐户。

(&(objectCategory=user)(msExchUserAccountControl=2)(!(msExchMasterAccountSid=*)))

通常,相比环境中没有 msExchMasterAccountSid 的已启用帐户的问题,更可能注意到没有 msExchMasterAccountSid 的禁用的 Active Directory 帐户的问题。出现这种情况是因为未记录有关具有 msExchMasterAccountSid 的已启用用户的事件。

详细信息

有关 Active Directory 和 Exchange 邮箱的详细信息,请参阅使用 Active Directory 属性启用、禁用和迁移邮箱

有关移动 Exchange 邮箱数据库的详细信息,请参阅将 Exchange 邮箱数据库移动到另一个服务器或存储组