什么是自动发现?
Exchange Autodiscover 是运行在Exchange 客户端访问服务器上的一种服务。它是包含在exchange 2007里的新特征之一。自动发现服务可以是配置Outlook 2007和Outlook 2010以及一些移动手机变得更加容易。自动发现服务无法再早期的outlook版本上使用,例如Outlook 2003。在早期的Exchange(Exchange 2003 SP2或更早)和Outlook (Outlook 2003或更早),你必须手动配置所有用户配置文件去访问Exchange 服务器。
自动发现服务使用用户的e-mail地址和密码去自动的配置用户信息。使用e-mail地址,自动发现服务给客户端提供以下信息:
1.用户的显示名称
2.为内部和外部连接单独进行连接配置。
3.用户邮箱服务器的位置。
4.为诸多的Outlook特征,例如OOF,忙闲信息,统一消息和脱机地址簿等,提供管理功能的URLs。
5.Outlook Anywhere服务器设置。
自动发现服务如何工作?
当你在一台运行Exchange 2010/2007的服务器安装客户端访问服务器(CAS),在IIS的默认网站下自动创建一个名为Autodiscover的缺省虚拟目录。在以下情况中,这个虚拟目录处理来自Outlook 2007 或者 Outlook 2010客户端以及被支持的移动手机端的自动发现服务请求。
当一个用户账户被配置或升级
Outlook客户端周期性的检查Exchange Web服务 URLs的变更。
当潜在网络连接变更放生在Exchange 消息环境中
另外,一个名为服务连接点(SCP)的活动目录对象被创建在安装有客户端访问服务器角色的服务器上。并且自动发现服务信息就存储上面。
你可以在开启了“查看服务器节点”选项的活动目录站点和服务中查看服务连接点(SCP):
SCP对象被域连接客户端用来定位自动发现服务。
SCP对象包含两部分信息:
-serverBindingInformation属性
-关键字属性
serviceBindingInformation属性拥有一个客户端访问服务器的完全合格域名(FQDN),形如:https://cas01.contoso.com/autodiscover/autodiscover.xml,其中cas01.contoso.com是客户端服务器的完全合格域名(FQDN)。
关键字属性和指定的活动目录站点的SCP记录相关联。默认情况下,这个属性和客户端访问服务器活动目录站点相关联。
当一个连入域的客户端连接到活动目录的目录服务时:Exchange 2007客户端向活动目录验证并尝试装载安装过程中通过使用用户证书创建的自动发现SCP对象。
-在部署过程中包括多客户端访问服务器,自动发现SCP记录将在每一个客户端访问服务器(CAS)中建立。通过使用用户证书,Outlook 2007客户端向活动目录验证并搜索自动发现SCP对象。
-在客户端获得并枚举出自动发现服务实例后,客户端讲连接到枚举和分类列表中的第一台客户端访问服务器并从XML格式数据中获得链接用户邮箱和可用的微软Exchange特性所需的配置信息。
一个Outlook 2007/2010客户端连接到自动发现服务步骤如下:
1-Outlook 2007/2010向活动目录发送一个LDAP查询来查找所有可用的SCP对象。
2-Outlook 2007/2010基于使用SCP记录关键字属性的客户端的活动目录站点来分类和枚举返回的结果。内部站点列表或者外部站点列表之一将被建立。
3-Outlook首先尝试连接实现从内部站点列表或外部站点列表生成的每一个自动发现URL。
-如果这些都不工作,Outlook将使用DNS服务连接预先定义的URL(例如:https://autodiscover.contoso.com/autodiscover/autodiscover.xml)。
-如果还是不行,Outlook将使用HTTP重定向方式。
-如果还是不行,Outlook讲使用SRV记录查询方式。
-如果所有查询方式都失败。Otulook将不能获得Outlook Anywhere配置和URL设置。
4-自动发现服务向活动目录查询并获得之前已配置完成的Exchange连接设置和URLs。
5-自动发现服务返回一个包含所有可用的Exchange服务的连接设置和URLs信息的XML格式的HTTPS应答文件。
6-Outlook将使用一个适当的配置信息和连接设置去连接到你得Exchange消息环境。
-当Outlook 2007/2010从一个没有未连接到域的客户端上启动时,它首先尝试在活动目录中查询SCP对象装载自动发现服务。因为客户端不能连接到活动目录,它尝试通过域名系统(DNS)装载自动发现服务。在这种方案中,客户端将决定用户e-mail地址的正确与否,即contoso.com,并使用预先定义的URLs检查DNS。例如,你使用SMTP域是contoso.com,Outlook将尝试使用以下两个URLs连接到自动发现服务:
https://contoso.com/autodiscover/autodiscover.xml
https://autodiscover.contoso.com/autodiscover/autodiscover.xml
-另一个关于DNS选项可能源于Outlook 2007软件的升级。当这个软件升级被应用,Outlook 2007客户端将执行一个额外的检查DNS SRV记录装载自动发现服务而不需要多Web站点和IP地址。
-更多关于Outlook 2007软件升级信息,请看微软知识库文章940881,A new feature is available that enables Outlook 2007 to use DNS Service Location(SRV) records to locate the Exchange Autodiscover services.
自动发现服务相关问题或者它的配置能导致的问题:
-不能查看忙闲信息
-不能下载脱机地址簿(OAB)/收到错误代码:0x8004010F
-外出助理不能工作
-在自动发现服务过程中提示需要用户名和密码
-Outlook anywhere停止工作
我发现一个最普遍的原因都与证书有关,所以我要强调一些关于证书的事情。
证书用于加密exchange server和客户端之间的传输。
为了证书的有效性,有三件东西必须为真:
1.访问资源使用的名字需要和证书完全匹配。
2.证书日期必须有效。
3.证授权颁发的证书必须被客户端所信任。(它必须存在于“Trusted Root Certificate Authorities"中)。
例子:如果我使用mail.mydomain.com连接OWA,那么证书也需要有mail.mydomain.com的主题或一个非正统的名字域。
证书名字不匹配因素通常影响到自动发现服务,外出助理,忙闲信息和Outlook Anywhere。
原因:
1-没有使用受信任的证书
解决方案:使用第三方证书提供商
2-证书名字和DNS名字不匹配
解决方案:创建一个包含所有访问服务器所用名字的证书请求,最小化
Autodiscover.domain.com
3-不能解析完全合格的域名(FQDN)
解决方案:确保你得外部URLs的FQDNs以及自动发现在DNS中有已注册的A记录。
你可以通过访问自动发XML文件来验证
https://autodiscover.domain.com/autodiscover/autodiscover.xml
它应该看起来和下面相似:
4-SCP记录没有包含正确值。
从Outlook测试:
按住CTRL并单击系统托盘中的outlook图标,选择“Test Email Auto Configuration”
-取消”Use Guessmart” 和”Secure Guessmart Asuthentication”并单击测试。
2.检查返回的SCP值。
-如果你在结果表中获得如下信息,那么自动发现即已工作。
-如果不是,请到日志标签并查看返回的URL
-测试这个URL(输入到网际浏览器中),如果它不工作,使用Set-ClientAccessServer cmdlet命令更改SCP为一个有效值。
-SCP和内部URL一起设置:Set-ClientAccessServer CASServerName –AtutodiscoverServiceInternalUri
https://mail.domain.local/Autodiscover/Autodiscover.xml
Oulook 2007/2010忙闲信息故障解决
· 微软Exchange 2007/2010服务器为用户提供日历信息,即所谓的忙闲信息的可用性服务。
· 自动发现服务通过装载和提供外部和内部的URLs为Outlook 2007/2010客户端提供可用性服务信息。
· 可能有包含自动发现服务和可有性服务失败的问题。
· To determine whether the Autodiscover service is unable to provide information to clients by using Outlook 2007, you can enable outlook logging using the following steps:
· 可以使用Outlook 2007来判定自动发现服务是否不能给客户端提供信息,你可以按照以下步骤开启outlook日志功能:
1.在Outlook 2007中,工具按钮,单击选项,点击其他标签,然后点击高级选项。
2.在高级选项页面,选择开启日志(解决故障),并点击OK。
3.重启Outlook 2007,然后尝试查看其他用户的忙闲信息。
4.在微软Windows系统,点击开始,单击运行,然后输入%temp%。
5.在资源浏览器,打开olkdisc.log文件并装载此文件到olkas文件夹。
6.此文件夹包含了能提供哪个服务没有正确作用的信息。
如果你使用的是Outlook 2010,那么按照以下执行:
1. 启动Outlook 2010,点击文件,选项,然后点击高级。
2. 拉到其他标签,然后点击启动故障解决日志选项。
3. 重启Otulook。
开启日志后,在系统托盘上出现一个弹出窗口提醒你Outlook 日志功能开启了,并且在Outlook上方的标题栏也有。
· Outlook启动时将生成或更新一个log文件。这个文件位于用户的TEMP文件夹,默认情况下位于以下位置:
· Windows XP: C:\Documents and Settings\
Windows Vista and Windows 7: C:\Users\
你也可以使用Outlook 2007 去测试自动发现服务提供的自动配置信息。
在测试电子邮件自动配置页面,验证靠近用自动发现勾选盒被选中,然后点击测试按钮
以下表格提供一个简洁的关于你在Outlook 2007使用自动发现服务测试自动配置
Exchange 2007 提供两种方法让你测试可用性服务是否正确执行:
1- 使用事件日志检验可有性服务
2- 使用如下Test-OutlookWebServices 命令检验可用性服务:
· Test-OutlookWebServices -id:[email protected] -TargetAddress: [email protected]
检验自动发现服务
解决自动发现故障要求你能明白自动发现哪部分不能工作。但一般来说这是最好的做法来找出自动发现对于内部客户端是否工作。内部客户端是属于同一网络的域环境。
以下为一些一般检查自动发现配置步骤:
运行Test-OutlookWebservices | fl
在客户端上运行Test-EmailAutoConfiguration 以找出自动发现如何连接以及在哪里失败。
验证自动发现URL,Get-ClientAccessServer | fl
检查AutodiscoverInternalServerUri 属性
你也可以通过IE浏览器访问自动发现URL并应该能够得到“600 无效请求”回应。
如果自动发现不能为外部客户端在自动发现虚拟文件夹上进行身份验证,如果有必须要你可以通过以下名来来重新创建虚拟文件夹:
Remove-AutodiscoverVirtualDirectory
New-AutodiscoverVirtualDirectory