54SA.COM|专注于系统运维管理,为中国SA提供动力!
当前位置: 主页 > Windows > 服务器 > Exchange >

Exchange 2003 脱机地址簿排错经验谈

时间:2010-10-28 21:26来源:编辑部 编辑:Tina

    最近我帮用户诊断过一些脱机地址簿(OAB)的问题,其中一个最常见的问题就是Parent Distinguished Names(PDN)更改。我想花几分钟的时间来和大家分享我的关于排错OAB PDN更改的问题的经验。

  什么是PDN表格?

  PDN表格是被父辨别名称的脱机地址簿生成器(OABGen)维护的一个字符表格。当脱机地址簿生成过程在生成一个地址列表的时候,它将把属于对象的ExchangeLegacyDN 和x500 代理地址分为两个不同的部分:

  PDN - 父辨别名称 - /o=ORG/ou=SITE/cn=CONTAINER/

  RDN - 相对辨别名称 - /CN=test

  PDN表格被用来作为Exchange 客户端(像Microsoft Outlook)的参考,当它组成邮件收件人的MAPI ID 条目时。因为OAB中大多数收件人都共享PDN的一小部分设置,用一个表格来节省空间避免为每个收件人单独存储它们。在Exchange 2003 SP2 之前,OAB生成过程在处理PDNs的增加和删除时有问题。当检测到PDN表格发生更改,它将引起OAB生成过程跳过一天的差异文件生成。OAB Version 2 和 OAB Version 3a 的客户端受到该问题的影响,结果导致客户端下载完整的OAB。随着Exchange 2003 SP2 的出现,这对OAB Version 4 客户端(Outlook 2003 SP2 和以后的版本)来说已经不在是一个问题了。

  注意:当您使用Offline Address Book version 4的时候,您必须在服务器上使用Exchange 2003 SP2 (或以后的版本)和在客户端上使用Outlook 2003 SP2 (或以后版本)。

    问题的症状

  在用户的Exchange 服务器上的应用程序日志文件中,出现了下面的错误日志:

  事件类型: Warning

  事件来源: MSExchangeSA

  事件类别: OAL Generator

  事件 ID: 9340

  日期: 5/31/2008

  时间: 4:09:15 AM

  计算机: SERVERNAME (考虑到用户的安全,我将实际的计算机名做了修改)

  描述 :

  为脱机地址列表"全局地址列表"生成差异更新文件的过程中,发现了新的父级旧版 Exchange DN 容器值"/o=ORG/ou=SITE/cn=Recipients/cn=Recipients"。这将强制使用此脱机地址列表的客户端完全下载该脱机地址列表。

  事件类型: Warning

  事件来源: MSExchangeSA

  事件类别: OAL Generator

  事件 ID: 9360

  日期: 5/31/2008

  时间: 4:09:15 AM

  计算机: SERVERNAME

  描述 :

  OALGen 在为地址列表"全局地址列表"的版本 2 和版本 3 差异下载生成 changes.oab 文件时遇到错误。脱机地址列表未更新,因此客户端无法下载当前更改集。请检查日志所记录的其他事件查找引起此错误的原因。

  如果问题的原因是故意导致的或无法解决的,则可以通过在此服务器上创建 DWORD 注册表项"HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSExchangeSAParametersOAL post full if diff fails"并将其设置为 1,来强制 OALGen 投递完整的脱机地址列表。当 OALGen 接下来生成脱机地址列表时,客户端将执行完整的 OAB 下载。然后,应该删除此注册表项以防止进一步的完全下载。

  为了隔离该问题,我让用户在Exchange 服务器上运行Exchange 最佳实践分析工具(ExBPA),然后将生成的.xml文件发给我,我仔细分析了XML文件 ,没有发现和OAB相关的错误。这时问题的分析进入僵局。

  我又仔细看了9340和9360两个错误日志,我觉得问题和"新的父级旧版 Exchange DN 容器值"的更改有关,但是如何检查这个容器值呢。OABinteg.exe该工具可以实现这个。

  由于我把该工具发送给用户,并拷贝Outlook客户端上的C盘的根目录中,然后进入命令行模式,运行下面的命令:

  OABInteg /s:ExchSrvrName /t:proxytest /v:2 /l

  在运行该命令时,必须确保您使用的Outlook 配置文件处于在线模式,如果处于缓存模式的话,运行该命令会出现下面这些错误:

  You are using a cached profile for your query. Please use an Online profile.

  该命令运行完成后,会在C盘的根目录下生成OABinteg.txt文件,通过分析该文件,我发现下面这些信息:

  Processing Address Book Entry #7 of 50.

  Display Name = Object is a Distribution list object

  LegacyExchangeDN starts with '/o=' or '/O='. Value = /o=org/ou=site/cn=Recipients/cn=Recipients/cn=user@abc.com

  ERROR: LegacyExchangeDN has the '@' character present. This is a PDN issue and this can cause full downloads.

  让用户在域控制器上使用adsiedit.msc工具来查看user@abc.com 的LegacyExchangeDN属性。该工具包含在Windows support tool中。正常的用户的LegacyExchangeDN属性 如图1所示,通过比较发现多了一个域名,修改过来后,然后执行下面的操作:


   


    
    1、 打开活动目录站点和服务工具,展开站点,展开服务器,展开NTDS Settings,右键选中活动目录连接,选择立即复制。

  2、 等待1小时左右,以便完成复制。

  注意:这是一个推和拉的过程,您应该在所有的域控制器上进行双向的复制。

  为了验证该错误已经彻底解决,我让用户执行下面的操作:

  1. 打开Exchange 系统管理器,定位到Exchange 服务器,右键选中它,选择属性,然后点击诊断日志,选中MSExchangeSA,选中OAL Generator,将下面的日志级别调整到最大,如图2所示。

   


    
    2. 定位到脱机地址簿,右键选中缺省的脱机地址簿,选择重建,

  3. 然后观察应用程序事件日志,看是否出现Event ID为9340和9360的错误日志。

  4. 用户反馈已经没有这样的日志了,问题到此完全解决。

[责任编辑:Lavy]

------分隔线----------------------------