Exchange2007的脱机通讯簿经常出现问题,如果要对Exchange2007的地址簿排错,建议先阅读我的另一篇文章:Exchange server 2007 出现“0x8004010F”错误的解决办法
我们在部署完Exchange server后,如果立刻配置outlook与Exchange进行使用,在收发邮件或下载地址通讯簿时会有一个错误发生,在同步日志中可以看到错误信息如下:
问题分析:
我们用err.exe程序看错误代号0x8004010F的含义,得到如下信息:
-------------------------------------------------------------
# for hex 0x80190194 / decimal -2145844844
BG_E_HTTP_ERROR_404 bitsmsg.h
# 1 matches found for "0x80190194"
------------------------------------------------------------
可以看出,这个错误是一个http的404错误。
为了解决这个错误我们首先分析两个相关的过程
outlook2007进行脱机地址簿同步的过程
1.outlook程序启动
2.outlook寻找autodiscover service(通过在AD中注册的SCP或autodiscover.domainname)得到autodiscover.xml文件。这个文件里包含所有exchange服务需要的URL地址。具体过程可以参考我的另一篇文章:Exchange server2007自动发现服务(Auto discover service)原理及调试
过程如下图所示:
3. 用户进行“收发邮件”或“下载地址簿”的操作
4.outlook寻找地址簿的url。得到如下信息:
<OABUrl>http://exchsvr01.contoso.com/OAB/e431241e-d870-4789-905f-1b4b1d38851a/</OABUrl>
5.outlook建立一个https的链接,访问此OABUrl内的OAB.xml文件,同过比较OAB.xml文件中的信息进行地址簿的具体下载。把地址簿文件从当前url copy到outlook中。
脱机地址簿生成的过程:
1. mailbox server生成脱机通讯簿,放在%program files%\microsoft\exchange server\ExchangeOAB文件夹中。
2.Client Access Server 服务器上的MSExchangeFDS服务每隔8小时把ExchangeOAB中的脱机地址簿复制到CAS服务器上的%program files%\microsoft\exchange server\ClientAccess\OAB文件夹下,并在系统的事件日志里面记录eventid为1008的日志。
从以上两个过程,我们可以看出问题应该处在outlook在访问OABUrl时返回了404错误,因为当前在%program files%\microsoft\exchange server\ClientAccess\OAB文件夹下没有任何文件,MSExchangeFDS服务还没有把脱机地址簿复制过来。
解决方法:
1. 等待8小时,直到脱机地址簿同步的轮询间隔。或者修改轮询间隔为2分钟缩短等待时间。如下:
2.在CAS Server的Exchange powershell中执行如下命令,强制MSExchangeFDS服务立刻把脱机地址簿从mailbox server复制到CAS Server。
Update-FileDistributionService -Identity Servername
3. 手工把%program files%\microsoft\exchange server\ExchangeOAB下的所有文件复制到%program files%\microsoft\exchange server\ClientAccess\OAB下。
据我观察还是执行第二种方法比较有效。