2014-08-29 00:08:45
来 源
中存储网
Exchange邮件服务器
从Exchange 2007+Outlook 2007开始,Microsoft提供了一种新的配置Outlook客户端的方式:自动发现(Auto Discover)。

从Exchange 2007+Outlook 2007开始,Microsoft提供了一种新的配置Outlook客户端的方式:自动发现(Auto Discover)。用户只需要打开Outlook,按照向导的提示走完所有步骤,最理想的情况下(客户端已经加入域并登录到域),用户只需要点击鼠标,不必用键盘输入任何信息,就能够连接到Exchange服务器。而且,可以同时配置Outlook MAPI模式和Outlook Anywhere模式。

在一个加入域的客户端上,启动Outlook,通过自动发现功能进行配置的情况,用户无需输入任何信息就能直接创建到Exchange的连接。

而对于与Exchange服务器不在一个林中的客户端(客户端加入了其它域/客户端在工作组模式),通过自动发现进行配置时,就需要输入身份验证信息才能够连接了。

那么,这个功能是如何实现的呢?

自动发现功能需要Exchange服务器和Outlook客户端都是2007/2010版本。这两个版本中,服务器和客户端之间可以通过Web Service进行联系,获取相关的配置信息。下面以Exchange 2010+Outlook 2010为例进行介绍,整个配置步骤对于Exchange 2007/Outlook 2007同样适用。

自动发现服务的实质是,Outlook客户端通过DNS查询,连接到指定域的Exchange客户端访问服务器上,提交身份验证信息后,从服务器下载一个XML文件。Outlook通过这个XML文件所包含的信息,配置到Exchange服务器的连接方式。

自动发现服务需要一个访问连接点(Service Connection Point,SCP),Outlook客户端必须能够按照内置的规则,查询并连接到该SCP才能实现自动发现。

自动发现的查询步骤

假设客户的邮件域名为contoso.com,在没有加入域的客户端上,Outlook会进行3次尝试,只要其中任意一步成功连接,后续步骤就不再进行。如果3次都没有成功获取XML文件,Outlook将放弃尝试,并告知用户需要进行手动配置。

  1. https://contoso.com/Autodiscover/Autodiscover.xml
  2. https://autodiscover.contoso.com/Autodiscover/Autodiscover.xml
  3. 查询DNS是否注册有名称为_autodiscover的SRV服务记录,如果有,获取该服务记录所指定的主机名称(A记录)。假设找到SRV记录,指向主机mail.contoso.com。那么Outlook会尝试连接:
    https://mail.contoso.com/autodiscover/autodiscover.xml

    以下截图是从一台加入PTCDemo.com的客户端,通过AutoDiscover去连接位于PCOE.com的Exchange服务器, 也就是前面第2段视频的场景下,客户端所发起的连接尝试:

    从上图可以看到,对于加入域的客户端,会优先使用本站点Exchange客户端访问服务器上指定的AutoDiscoverServiceInternalUri值。这个值可以通过以下命令进行查询,其中的pcoeexchhtcas1是Exchange客户端访问服务器名称。
    Get-ClientAccessServer pcoeexchhtcas1 | select AutoDiscoverServiceInternalUri

    需要注意的是,所有的连接尝试都是通过HTTPS加密方式进行的,因此要求:1、Exchange服务器上配置有名称与该SCP主机名相同的证书;2、Outlook客户端必须信任该证书。关于证书的配置方式,可以查看前面的文章:《Exchange Server 2010的证书配置》。

    配置Internet上的DNS服务器记录

    根据前面的步骤,可以看到,对于企业内网,并且已经登录到活动目录的客户端,只需要保证能够正常连接到AutoDiscoverServiceInternalUri中指定的Uri就可以实现客户端的自动配置了。而要在Internet上实现Outlook自动发现,需要选择以下3种方式之一对进行DNS配置:

    1. 将contoso.com的Internet域名解析指向Exchange客户端访问服务器
    2. 将主机记录(A记录)autodiscover.contoso.com的解析指向Exchange客户端访问服务器
    3. 注册Exchange客户端访问服务器的主机记录,并创建一个名称为_autodiscover的SRV服务记录,指向该A记录

      这里提到的“将解析指向”,简单来说,就是在客户端PING这个域名或主机名,能够获取到Exchange客户端访问服务器在Internet上的IP地址。

      AutoDiscover主机记录可以利用别名(CNAME)来代替,例如在Windows的DNS中,可以注册一个CNAME记录,指向实际的Exchange主机。

      SRV记录的注册方式,可以参考以下知识库文档:
      http://support.microsoft.com/kb/940881/en-us
      以下是在Windows的DNS服务中注册的情况:

      这个SRV记录的详细信息如下:

      修改Exchange服务器的URL设置

      在安装Exchange 2010 CAS服务器角色时,安装程序会询问该服务器在Internet上被访问时使用的FQDN名称,并且会自动使用该名称为CAS上所有的基于IIS的服务配置ExternalURL属性,这些服务包括:Outlook Web App、Exchange Control Panel、ActiveSync、Offline Address Book、Exchange Web Service、AutoDiscover等,并且在启用Outlook Anywhere功能时,会再次询问FQDN名称。

      因此,在Exchange 2010中,基本上不需要专门关心这些服务的ExternalURL是否正确。这是与Exchange 2007相比很大的改进。当然,也可以对这些属性进行检查和修改。通过Exchange Management Console图形工具,可以修改OWA、ECP、OAB、Outlook Anywhere以及ActiveSync的URL属性;而对于Exchange Web Service,就必须使用Exchange Management Shell命令行工具进行修改了。

      命令都是以Get-SERVICEVirtualDirectoy和Set-SERVICEVirtualDirectoy来实现的,其中的SERVICE是具体的服务名称。例如对于OWA,就是Get-OWAVirtualDirectoy;对于Web Service,就是Get-WebServicesVirtualDirectoy。

      具体的使用情况就不再赘述了,需要注意的是Set命令中的Identity参数,这个参数直接输入比较困难,需要指定服务器名和站点名,而且站点名中带有空格,需要把参数用引号引起来。因此可以通过Get命令先获取,然后通过管道符传递给Set命令。以下是获取并修改Web Service URL的命令。

      以下示例中,第一条命令用于获取;第二条命令先Get再Set;第3条命令直接指定需要修改的对象标识。

      创建额外的AutoDiscover发布点

      在Exchange客户端访问服务器安装完成后,会自动在IIS中创建一个名为AutoDiscover的虚拟目录,客户端可以通过对该虚拟目录的访问获取自动发现的配置信息。在某些情况下,需要将AutoDiscover服务入口点与其它访问入口分开,此时就需要创建额外的AutoDiscover虚拟目录来满足要求了。

      某些情况指的是:1、主站点普通Web访问流量较大;2、主站点承载了电子邮件流量较大。管理员可以根据实际的运行情况来判断是否需要额外创建AutoDiscover发布。

      创建额外的AutoDiscover发布之前,需要在Exchange客户端访问服务器的IIS中创建额外的Web站点,然后利用New-AutodiscoverVirtualDirectory命令进行创建,完整的命令是:
      New-AutodiscoverVirtualDirectory -Websitename <websitename> -BasicAuthentication:$true -WindowsAuthentication:$true

      利用Outlook客户端检查自动发现配置

      在Outlook运行后,在Windows的系统托盘区,会出现一个Outlook图标,按住Ctrl键并用鼠标点击这个图标,在弹出窗口中,可以看到Test E-mail AutoConfiguration菜单项,点击后就可以进行自动配置的检查。

      输入电子邮件地址和密码后,点击Test后,Outlook就开始检索自动发现服务。可以从Log中查看Outlook检索服务时的顺序:

      自动发现检索成功后,可以从Results和XML中分别看到AutoDiscover的结果。在XML中看到的,就是从服务器上获取的autodiscover.xml文件的原始数据。

      Results中看到的,是根据autodiscover.xml文件的数据解读出的配置信息。

      注意里面的一些URL路径,例如OOF、OAB、Availability Service等。Outlook客户端需要使用这些功能时,都会去访问这些URL。如果这些URL不可用,即使邮件访问正常,Outlook也会弹出错误信息,例如“服务不可用”“未能找到对象”“服务器URL不存在”等。

      利用命令行工具检查

      也可以通过Exchange Management Shell中的Test-OutlookWebServices命令来检查AutoDiscover中配置信息是否有效。

      可以直接运行Test-OutlookWebServices,此时Exchange会使用一个名为extest_3e2af001155e4的帐号进行测试。管理员可以预先创建出这个用户邮箱。

      也可以在进行测试时输入参数,来指定用于测试的用户邮箱以及客户端访问服务器名称,例如:
      Test-OutlookWebServices -Identity GeorgeWu -ClientAccessServer pcoeexchhtcas1

      命令会检查Outlook连接时使用到的各个Exchange服务,命令输出结果很长,就不做截图了。

      另外一个相关的命令是Test-OutlookConnectivity,这个命令可以通过Protocol参数来检查MAPI和HTTPS两种连接方式的可用状态。这个命令如果没有指定用户信息,会使用一个名为extest_81a4a2b331c84的帐号:

      利用Microsoft提供的分析工具

      Microsoft提供了Exchange远程连接分析器,这个分析器可以对与Exchange相关的所有外部访问进行测试,可以说,这是个“一网打尽”的部署检查工具。

      通过浏览器直接访问以下站点即可:

      https://www.testexchangeconnectivity.com/

      使用也很简单,唯一要注意的是,如果Exchange服务器上的证书是通过自建的证书颁发机构颁发的,在进行分析时,需要在检测是勾选“忽略对SSL的信任”(“Ignore Trust for SSL”)

      声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。