ExchangeActiveSync常见问题(2)
内部机制以及访问协议
到了这一步,具体的网络连接已经不再是关注的焦点,连接已经抽象为就是一双向的TCP连接。我们关心的是TCP之上的应用层协议已经处理这些协议的组件。
图 2 内部原理
我们采用从客户端到服务器顺序依次介绍图2涉及的通讯协议以及不同的组件。假设一智能手机用户开始了一个同步操作,
1. 手机和Exchange前端服务器建立TCP连接(ISA服务器可以认为是透明的)。使用TCP连接,手机终端必须和Exchange前端服务器能够使用HTTPS互相传递数据。这个过程看似简单,其实很多问题往往是由于这一步失败引起的。这一步要成功,需要满足很多条件:
a. Exchange前端服务器上的IIS必须配置了SSL。细节这里不赘述,可以参考IIS的帮助。使用SSL就必须有证书(Certificate)。这个证书可以从一些商业结构申请,也可以从公司内部的CA服务器申请。
b. 证书上有服务器的名字(Common Name),这个名字必须和手机中输入的服务器FQDN完全相同。举个不是完全恰当的例子:每张身份证上都有照片,这个照片如果和持证人的长相不符,我们当然有理由怀疑身份证不是本人的。同理,手机也必须确认前端服务器用于HTTPS的证书就是这个服务器的,它通过比较证书上的名字和用于访问这个服务器的FQDN(这里假设Internet上DNS是可以信赖的)完成这种检查。所以在为前端服务器申请证书的时候,请仔细思考你打算让用户使用哪个名字访问。假设你的Exchange前端服务器的内部名字是MAIL100。Internal.yourcompany.com, 你准备让用户使用mail.yourcompany.com访问前端(当然你必须注册了yourcompany.com这个域名),那在申请证书的时候,服务器的名字必须是mail.yourcompany.com。
c. 每张证书都有一个发证者,这个发证者的上面可能还有一个或者多个发证者。要让手机相信证书是从一个可靠机构发出的,那个最原始的发证者必须是值得信赖的。如果你是从一些商业的发证机构获得的证书,那不要担心,这些机构的证书通常都已经在可信赖的证书列表中。如果是你内部的CA发行的证书,那么内部CA的证书必须导入到手机的可信赖证书中。步骤这里不赘述,需要强调的是很多用户往往会疏漏这一点。
2. 手机终端通过HTTPS协议发送请求到Exchange前端服务器上的虚拟目录/Microsoft-Server-ActiveSync。在处理这些请求之前,IIS会帮助完成身份验证。
3. 身份验证完成后,处理请求的组件 MASSYNC.DLL (这是一个ISAPI Extension, 如果对这个名字不熟悉,你可以把它当作和ASP类似但是更高效的一个Web编程接口)需要查询活动目录获取这个用户的属性,比如他或者她是否启用了ActiveSync, 用户的邮箱服务器位置等。
4. MASSYNC.DLL从AD中获取了用户的属性后,使用WebDAV协议访问用户的邮箱服务器。这一步非常复杂,需要进一步说明:
a. WebDAV是一种HTTP基础上应用协议。传统的HTTP协议可以使用“GET”命令从Web服务器上下载一个网页,或者“POST”命令提交一个表单或者上传一个文件。WebDAV增加了一些新的命令,比如“SEARCH”可以查找符合条件的对象,命令“PROPFIND”获取一个对象的属性等。Exchange提供WebDAV接口的目的在于可以使用HTTP查找邮件,访问邮件的属性(主题,收发时间,收发件人,正文等),删除邮件和发送邮件。
b. 默认情况下,MASSYNC.DLL总是通过访问邮箱服务器上的虚拟目录“/Exchange“访问用户邮箱。这个访问是HTTP而不是HTTPS。如果用户不清楚这一点,可能会导致问题。比如在后端上只是配置了HTTPS,或者/Exchange目录不存在等等,这些都会导致ActiveSync不能工作。
c. 后端服务器上的/Exchange也是需要验证的。这就带来一个配置上的要求。前端服务器上的/Microsoft-Server-ActiveSync必须使用“BASIC”验证方式,而后端上的/Exchange必须是Windows集成验证,否则前端到后端的验证是无法完成的。一个常见的配置错误是,前端服务器的/Microsoft-Server-ActiveSync同时允许“BASIC”和Windows集成两种方式的验证。在这种情况下,客户端通常优先使用Windows集成验证。这样,和后端的验证就无法完成,导致邮件同步失败。
5. MASSYNC.DLL将从Exchange服务器获取的数据打包后返回给手机。
以上5个步骤每一步都有很多复杂的细节没有交代。比如第一步中,手机发送请求使用的其实是AirSync协议。这是一个基于HTTP和XML的Microsoft专有的协议,所有支持ActiveSync的第三方软件必须从Microsoft申请使用许可。在第4步中,WebDAV是如何用于邮件同步我们也没有说明。但是和常见问题相关的技术要点我们都已经涉及到。限于篇幅,有很多细节无法在此一一展开,有兴趣的读者可以参考附录中的链接。

网友评论