Exchange Server 2003 Active Directory 集成

 

上一次修改主题: 2006-03-09

本文提供了在 Microsoft® Exchange Server 中集成 Active Directory® 目录服务的简要说明。本文内容的来源是《Microsoft Exchange Server 2003 技术参考指南》。

Active Directory 架构定义可以在目录中创建的所有对象类,以及可以分配给每一个对象实例的属性。在 Active Directory 目录林中安装第一台运行 Exchange Server 2003 的服务器的过程中,Exchange 必须修改此架构,这样 Active Directory 才能存储 Exchange 特定的收件人和配置信息。Exchange 安装程序中的 ForestPrep 过程扩展了 Active Directory 架构。也可以通过在命令提示符下键入 Setup /ForestPrep 来明确地运行此过程,这样可以在不必实际安装服务器的情况下,将 Exchange 特定的类和属性添加到 Active Directory 架构中。如果安装 Exchange Server 2003 的用户没有架构管理员权利,必须额外执行此步骤。

Exchange Server 2003 安装程序通过将一系列 .ldf 文件导入 Active Directory 来扩展 Active Directory 架构。除了 Exschema.ldf 以外的其他所有 .ldf 文件都位于产品 CD 的 \Setup\i386\Exchange 目录中。Exschema.ldf 位于 \Setup\i386\Exchange\Bin 目录中。

下表列出了具有 Active Directory 架构扩展的 Exchange Server 2003 安装文件以及相关描述。

 

文件名 描述

Schema0.ldf

包含收件人对象的架构扩展(如 Exchange 扩展属性的定义),可以用这些扩展来将任何标准属性都未涵盖的信息分配给收件人对象。

Schema1.ldf

包含 Active Directory 连接器的架构扩展,可以利用这些扩展将 Exchange Server 5.5 版组织与 Active Directory 集成。

Schema2.ldf

包含 Internet 访问协议、目录同步以及 Exchange 存储配置对象的架构扩展。

Schema3.ldf

包含系统监视、Lotus Notes 连接器配置对象、脱机通讯簿设置以及属于 X.400 连接器的设置的架构扩展。

Schema4.ldf

包含路由组、桥头服务器、协议容器、邮件数据库、地址列表服务以及 Microsoft Exchange 邮件传输代理 (MTA) 配置对象的架构扩展。

Schema5.ldf

包含协议容器、路由组连接器以及与可扩展存储引擎 (ESE) 有关的参数的架构扩展。

Schema6.ldf

包含协议虚拟服务器、管理组、邮件连接器以及 Exchange 存储的架构扩展。

Schema7.ldf

包含邮件数据库和邮箱管理器的架构扩展。

Schema8.ldf

包含邮箱管理器、系统监视、公用文件夹以及简单邮件传输协议 (SMTP) 传输配置对象的架构扩展。

Schema9.ldf

包含日历连接器、Novell GroupWise 连接器、动态通讯组列表、邮件文件夹以及 Microsoft Outlook® Mobile Access 的架构扩展。

note注意:
Schema1.ldf 到 Schema8.ldf 对于 Exchange Server 2003 和 Exchange 2000 Server 是相同的。Schema9.ldf 包含 Exchange Server 2003 中新增的架构扩展。

Exschema.ldf

将 Object-GUID、Replication-Signature、Unmerged-Attributes 和 ADC-Global-Names 属性添加到架构中,以便用 Exchange Server 2003 必需的信息更新 Exchange 2000 Server Service Pack 1 之前版本的架构。

Exchange Server 2003 服务访问存储在 Active Directory 中的信息,并将信息写入到 Active Directory 中。如果此通信直接发生在每个服务与 Active Directory 之间,那么 Exchange Server 2003 便可能由于过多的通信请求使 Active Directory 域控制器崩溃。必须通过一个中心组件来简化与 Active Directory 之间的通信。该组件就是目录服务访问 (DSAccess) 模块。

DSAccess 是一个共享的 API,Exchange Server 2003 中的多个组件用它来查询 Active Directory 并获取配置信息和收件人信息。DSAccess 在 DSAccess.dll 中实现,后者由包括系统助理、邮件传输代理、Microsoft Exchange Information Store 服务、Exchange Management 服务、Internet 信息服务 (IIS) 以及 Microsoft Windows® Management Instrumentation (WMI) 在内的 Exchange 组件和非 Exchange 组件加载。DSAccess 探查 Active Directory 拓扑、检测域控制器和全局编录服务器,并维护适用于 Exchange 组件使用的一系列有效目录服务器。此外,DSAccess 还维护一个缓存。该缓存使得各个组件发送到 Active Directory 服务器的轻型目录访问协议 (LDAP) 请求数减少,从而最大限度地降低了 Active Directory 上的负载。

important重要提示:
DSAccess.dll 是实现 DSAccess 的主要 DLL。DSAccess.dll 要正确运行,其版本必须与其伴生 DLL 的版本相匹配。伴生 DLL(Dscmgs.dll 和 Dscperf.dll)分别存储事件日志消息字符串和性能对象提供程序。

DSAccess 将可用的目录服务服务器分为下面三类(可能有重叠):

  • 全局编录服务器:要获取目录林中所有收件人对象的完整地址信息,Exchange Server 2003 必须访问全局编录服务器。只有全局编录服务器才包含域中所有对象的完整副本以及目录林中所有对象的不完整副本。Exchange 服务器当前使用的全局编录服务器称为工作的全局编录服务器。
    几乎所有 Exchange Server 2003 用户上下文目录服务事务都以全局编录为目标。无论本地 Active Directory 站点中有多少台全局编录服务器,最多只能有 10 台全局编录服务器可以添加到工作全局编录列表中。如果本地站点没有全局编录服务器,或者本地站点没有任何全局编录服务器通过适用性测试,则 DSAccess 将以开销最低的方式使用最多 200 台其他站点的全局编录服务器。由于用于全局编录的目录服务服务器本身也是域控制器,因此该服务器可能同时用作两种类型的目录服务器。
  • 域控制器:如果请求方服务的信息足够详细,能够找到所发出搜索中被请求的用户对象的位置,则域控制器将用于用户上下文请求。这些域控制器也称为工作的域控制器。工作的域控制器是本地域中能够接受域命名上下文查询的域控制器。无论本地 Active Directory 站点中有多少台域控制器,最多只能有 10 台域控制器能够添加到工作域控制器列表中。如果本地站点中没有域控制器,或者本地站点中没有任何域控制器通过适用性测试,那么 DSAccess 将使用其他站点中开销最低的域控制器。
    向工作域控制器发出的查询根据循环法的原则进行负载平衡,以避免使单台域控制器过载。如果没有在注册表中对工作域控制器进行硬编码,那么将会使用拓扑探查进程和适用性测试,每隔 15 分钟重新评估并重新生成一次工作域控制器列表。
  • 配置域控制器:Exchange Server 2003 可以从多个域控制器中读取信息。为了避免在将配置更改应用于 Active Directory 时发生冲突,Exchange Server 2003 将其配置信息写入到一台称为配置域控制器的域控制器中。当在工作的域控制器列表中选择配置域控制器时,DSAccess 首选域控制器,只有在找不到适用的域控制器时,才考虑全局编录服务器。此外,DSAccess 优先选择本地站点中的目录服务器,然后才考虑使用辅助站点中的目录服务器。
    如果由于任何原因 Exchange Server 2003 无法再使用配置域控制器,DSAccess 会将另一台工作的域控制器选作其配置域控制器。DSAccess 每隔八小时便会通过运行一组适用性测试来重新评估配置域控制器的作用。如果测试成功,DSAccess 将继续使用同一配置域控制器。如果测试失败,DSAccess 便会在工作的域控制器列表中选择另一台域控制器作为配置域控制器。

Exchange Server 2003 的核心组件依赖 DSAccess 来提供当前的 Active Directory 服务器列表。例如,MTA 将 LDAP 查询通过 DSAccess 层路由到 Active Directory。为连接到数据库,存储进程使用 DSAccess 从 Active Directory 中获取配置信息。为路由邮件,传输进程使用 DSAccess 获取有关连接器布置的信息。

当检测到目录服务的状态发生变化时,DSAccess 更新可用全局编录和域控制器列表。对于不使用 DSAccess 作为其网关来访问目录服务的其他目录使用程序(如系统助理中的 DSProxy 和其他组件),也可以共享此列表。请求此列表的服务负责检测目录服务状态的后续变化。

note注意:
除非在注册表中对域控制器和全局编录服务器进行了硬编码,否则,将会每 15 分钟使用拓扑探查进程和适用性测试重新评估并重新生成一次全局编录服务器和域控制器列表。

在 Exchange Server 2003 中,DSAccess 确定 Active Directory 的拓扑、打开适当的 LDAP 连接,并解决服务器故障。对于每一台可用的目录服务服务器,DSAccess 都打开专用于使用 DSAccess 的每个进程的 LDAP 连接。DSAccess 使用所检测到的目录服务状态信息(Up、Slow 或 Down)来更新这些 LDAP 连接。DSAccess 使用此状态信息来决定使用哪个 LDAP 连接将请求转发到 Active Directory。与可用的域控制器和全局编录服务器的一组 LDAP 连接及其关联的状态组成了 DSAccess 配置文件。

DSAccess 支持负载平衡机制,这种机制将用户上下文目录服务请求按照循环法的原则在 DSAccess 配置文件中的 LDAP 连接之间分布。负载平衡有助于确保可靠性和可伸缩性。可以静态地配置注册表中的所有配置文件,以便仅使用一组特定的目录服务服务器。但是,这些连接的实际状态和负载平衡情况可能因进程或因配置文件而异。对于配置上下文请求,则不存在这一情况。

note注意:
由于所有的 Exchange Server 2003 和 IIS 服务都使用相同的安全上下文(LocalSystem 帐户),因此 DSAccess 可能对不同的请求重复使用相同的 LDAP 连接。当 DSAccess 启动或者拓扑发生变化时,DSAccess 打开与拓扑中所有适当的域控制器和全局编录服务器的 LDAP 连接。

当基于 Microsoft Windows 的 LDAP 实现 (WLDAP) 在 LDAP 操作中返回错误时,DSAccess 会对它进行分析,并确定这是否意味着目录服务器出现问题。如果是,便会立即将该目录服务器标记为不适用,并自动在另一台服务器上重试用户操作。只要拓扑中至少有一个工作的域控制器,DSAccess 便可以继续无差错的运行。

为了验证域控制器或全局编录服务器的适用性,DSAccess 会确定是否可通过 389 端口(对于域控制器)和 3268 端口(对于全局编录服务器)访问该服务器,并确定该服务器是否驻留在使用 DomainPrep 准备过的域中。DomainPrep 确保正确地配置组策略系统访问控制列表 (ACL),以便授予 Exchange Server 2003 服务对 Active Directory 的访问权限。服务器适用性检查在本文的后面部分讲述。

note注意:
要在应用程序事件日志中获取适用性报告,可以在 Exchange 系统管理器中对 DSAccess 服务的拓扑类别启用诊断日志记录。

DSAccess 拓扑总是包含两个列表,即站点内列表和站点外列表。站点内列表包含 Exchange 服务器的本地 Active Directory 站点中的服务器。站点外列表包含其他 Active Directory 站点中的服务器。DSAccess 最初仅使用本地站点中的服务器,但是,当某一类别(如全局编录服务器)的所有本地服务器都不适用时,DSAccess 便立即开始使用站点外列表。然后,DSAccess 继续每五分钟检查本地站点一次,并在检测到有可用的服务器时立即故障回复到本地站点中。在站点外服务器上重试用户请求的过程在用户看来是没有时间延迟的,并且也感觉不出来与在本地站点中的区别。

有些 Exchange Server 2003 组件(如 Microsoft Exchange Routing Engine 服务)还向 Active Directory 进行注册,这样 Active Directory 便会自动通知它有关配置更改的任何信息。这种通知机制消除了轮询过程,但是事件注册是针对每一台目标服务器的。如果 DSAccess 将目标服务器标记为 down,该组件将重新发布事件注册,并将更改信息通知给客户端进程(如 Routing Engine 服务),因为所监视的值可能在选择新的域控制器或全局编录服务器的过程中发生了变化。

DSAccess 在启动时使用探查过程来识别 Active Directory 的拓扑,并评估域控制器和全局编录服务器的可用性。启动完成后以及之后的每 15 分钟,DSAccess 都会使用几乎完全相同的过程来重新探查拓扑,并检查服务器可用性是否有任何变化。

note注意:
如果对 DSAccess 使用的目录服务器进行硬编码,DSAccess 将不使用探查过程,而仅仅检查服务器的适用性。

下面的有序列表概述了探查过程,并指出了初始探查与后续探查之间的区别:

  1. 系统助理进程 (Mad.exe) 在启动过程中实例化并初始化 DSAccess.dll。
  2. DSAccess 从本地域打开与随机选择的域控制器的 LDAP 连接。该服务器称为启动服务器。
  3. DSAccess 读取本地注册表,确定拓扑是否经过硬编码。如果拓扑经过了硬编码,发现过程将停止。如果未检测到硬编码,DSAccess 将继续探查过程。
  4. DSAccess 查询启动服务器,以识别本地域控制器和全局编录服务器。然后 DSAccess 确定服务器的适用性并指定服务器角色。
  5. DSAccess 查询启动服务器,确定是否有一个或多个辅助站点连接到了本地站点。如果辅助站点存在,DSAccess 将按开销从低到高的顺序对每个站点的 siteLink 对象进行排序。DSAccess 将开销最低的站点放入辅助拓扑列表中。
  6. DSAccess 查询启动服务器,以识别位于辅助拓扑站点中的域控制器和全局编录服务器。
  7. DSAccess 识别完整的拓扑,并编辑工作的域控制器列表和工作的全局编录服务器列表。

默认情况下,启动过程中的 DSAccess 初始化必须在一分钟之内完成。否则,DSAccess 将停止。一分钟对于 DSAccess 的初始化通常是一个很宽松的标准。如果初始化所需的时间超过一分钟,则可能意味着网络或拓扑配置存在问题。尽管可以通过设置注册表项来延长超时时间,但是首先应确定初始化过程比预期时间长的原因。要配置超时值,请使用下表中显示的注册表设置。

 

位置

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet

\Services\MSExchangeDSAccess

TopoCreateTimeoutSecs

类型

REG_DWORD

描述

设置 DSAccess 初始化的超时值(以秒为单位),例如 0x200。默认为 0x3C 秒(1 分钟)。

note注意:
如果将 MSExchangeDSAccess 服务的所有类别的诊断日志记录级别设置为“最高”,Exchange 系统管理器将自动获取有关 DSAccess 初始化的详细信息,并将该信息放入应用程序事件日志中。

DSAccess 在探查 Active Directory 拓扑后,将确定所探查到的工作的域控制器和全局编录服务器列表是否适于使用。初始探查和后续探查过程中,DSAccess 通过运行一系列适用性测试来确定服务器的适用性。适用性测试分为两类:硬测试和软测试。硬测试确定域控制器或全局编录是否可用。如果服务器未通过硬测试,将被认为不可用,并将从所探查到的服务器列表中删除,而不再接受软测试。

DSAccess 运行如下硬适用性测试:

  • 全局编录功能:DSAccess 确定目录服务器的 RootDSE 对象中的 isGlobalCatalogReady 属性是否设置为 TRUE,以此确定该目录服务器是否将其自身指定为全局编录服务器。如果该属性设置为 TRUE,则该目录服务器将被认为是有效且可用的全局控制器。
  • 可访问性:DSAccess 使用 Internet 控制消息协议 (ICMP) 联系每一台服务器,以验证服务器是否可用。DSAccess 还通过 389 端口(对于域控制器)和 3268 端口(对于全局编录服务器)来验证目录服务器的可访问性。
    使用 ICMP 确定服务器是否可用时,如果网络中所有连接不支持 ICMP,则可能会产生问题。例如,Exchange 服务器可能驻留在外围网络中,在这种情况下,Exchange 服务器与域控制器之间不存在 ICMP 连接性。这时,应禁用 ICMP 检查,并将下表中的注册表参数设置为零。

     

    位置

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet

    \Services\MSExchangeDSAccess

    LdapKeepAliveSecs

    类型

    REG_DWORD

    数值数据

    0x0

    描述

    如果注册表项不存在或未设置为 0,DSAccess 便会使用 PING 协议。

    有关 LdapKeepAliveSecs 注册表项的详细信息,请参阅 Microsoft 知识库文章 320529,“XADM:在外围网络防火墙方案中使用 DSAccess 时需要注册表项设置”。
  • 组策略 SACL 权限:除了常规访问控制列表 (ACL) 权限外,安装程序还将授予所有运行 Exchange Server 2003 的服务器的安全访问控制列表 (SACL) 权限,以使其能够查看 ntSecurityDescriptor 属性。权限是通过 SeSecurityPrivilege 特权授予的。DSAccess 在服务器上读取配置目录分区对象的安全描述符,以验证 SACL 是否可读。如果 SACL 不可读,DSAccess 将认为该服务器不适用。
  • 重要数据:目录服务器必须位于运行了 DomainPrep 的域中。该域必须将 Exchange Server 2003 服务器对象包含在 Exchange 配置容器中。
  • 同步:DSAccess 将检查服务器的 rootDSE 对象的 isSynchronized 属性是否设置为 TRUE,以此验证服务器是否已同步。
  • Netlogon:为了测试目录服务器的一般适用性,DSAccess 向其发送 DSGetDcName 远程过程调用 (RPC)。如果目录服务器未同步,或者发生磁盘空间不足等问题,便不会将自身标识为目录服务器。
    在外围网络中(不允许 RPC 通信),无法进行 Netlogon 检查。但是,Netlogon 检查会继续发出 RPC,直到运行失败,此过程可能需要很长的时间。由于重复的 Netlogon 检查会降低性能,因此应通过创建下列注册表项来阻止 DSAccess 发出 Netlogon 检查命令:

     

    位置

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet

    \Services\MSExchangeDSAccess

    DisableNetLogonCheck

    类型

    REG_DWORD

    数值数据

    0x0

    描述

    如果注册表项不存在或未设置为 0,则 DSAccess 执行 Netlogon 检查。

有关详细信息,请参阅 Microsoft 知识库文章 320228,“XGEN:"DisableNetLogonCheck" 注册表值以及如何使用它”。

  • 操作系统的版本:Exchange Server 2003 只能使用运行 Microsoft Windows Server™ 2003 或 Windows 2000 Server Service Pack 3(或更高版本)的域控制器和全局编录服务器。DSAccess 会判定目录服务器是否满足这些要求。
    硬测试完成后,DSAccess 会运行一系列软测试,以判定有哪些目录服务器能够容纳 Exchange Server 2003 所施加的额外负荷。为此,DSAccess 运行下列软适用性测试:
    • DNS 权值:DSAccess 使用域控制器和全局编录服务器的权值(在域名系统 (DNS) 中与每一台服务器对应的 (SRV) 资源记录中指定)来确定客户端应首选的服务器。权值越高,意味着 DSAccess 选择该服务器的可能性越大。如果 DSAccess 无法读取权值,便会使用默认权值 100。
    • FSMO 主域控制器角色所有者:如果拓扑中包含运行 Windows NT® Server 4.0 的服务器,则具有 Flexible Single Master Operation (FSMO) 主域控制器 (PDC) 角色的目录服务器的负荷将会过重,从而使得它不会成为 Exchange Server 2003 的理想选择。因此,DSAccess 执行软适应性测试,以定位 PDC FSMO 角色所有者,以便可以从适合的目录服务器的列表中删除它。
    • 响应时间:DSAccess 对目录服务器执行 LDAP 查询,以检查其响应时间。响应时间超过两秒的软适用性测试被认为失败。
note注意:
DSAccess 支持完全循环法负载平衡和故障转移(至另一台目录服务器),两者将在当前使用的服务器不可用的情况下发挥作用。当 Exchange Server 2003 运行在域控制器或全局编录服务器上时,这些功能被禁用。
 
显示: