「深入 Exchange 2013」MAPI over HTTP实战配置

在前面我们聊Outlook Anywhere的文章里头,我提到了MAPI over HTTP这个Exchange Server 2013 SP1中新增加的功能,这次这篇文章咱们就详细说说这个新的传输协议是什么,以及实战如何去配置它。

什么是MAPI/HTTP,有什么好处?

以前版本中(Exchange 2010),用的是RPC over HTTP(外部网络outlook anywhere)以及RPC Direct(内部网络)连接,Exchange 2013里,所有的连接都通过Outlook Anywhere,也就是RPC over HTTP来传输;到即将到来的Exchange 2016,至少我现在看到的风声是,将所有的RPC over HTTP替换成 MAPI over HTTP了。所以在Ex2013 SP1里,微软先推出了这个特性来试试水,看看收效如何。那么咱们也不要背道而驰,照着微软的战略也来学习配置看看。

咱们还是来看看这两张图,进行一个初步的分析。上面一张是旧的RPC/HTTP的传输过程,可以发现其实传输的流量封装层次是MAPI/RPC/HTTP这样一个三层封装,每次Outlook客户端进行连接都需要进行RPC_DATA_IN和RPC_DATA_OUT这么个来回2次的过程,再加上HTTPS与MAPI的连接。服务器和客户端之间会生成2个TCP长连接,4个活动连接。

下面一张图则是Mapi Over HTTP,可以看到将整个MAPI连接移到了标准的HTTP请求/响应模型上。这样就会减少客户端与服务器之间的连接,它们之间最大会存在2个活动连接,1个长连接和1个按需短连接(下文会提到这个按需)。

从上面两张图里还可以看到,一个是MAPI/RPC/HTTP,另一个是MAPI/HTTP,取消了整个RPC封装。取消了这一层封装也意味着取消了这一层的请求和回应。这就是为什么上面会提到连接数减少的原因。

减少连接数和降低封装的层数带来的直接好处就是降低客户端与服务器之间的交互时间,或者说,是更为贴近现代化场景(无线网络和远程办公网络)的设计。据微软自己吹牛逼说,当用户第一次配置好账号打开Outlook的时候停留在LOGO框的时间减少了70%……

另外一个特点就是,上面提到了的按需连接,它其实可以被理解为一个15分钟内有效的连接窗口,当客户端第一次与服务器建立连接完毕之后,MBX上会留出这么一个连接窗口进行按需连接,按什么需呢?重新连接的需求,也就是说客户端的网络短暂断开了之后,再进行重连,它就直接走这个窗口连进来,无需重复之前的验证过程。微软也吹牛逼说:同样休眠起来的笔记本电脑,用MAPI/HTTP的比用RPC/HTTP的重连时间短10秒……

这个时间窗口会在以后的版本中提的更大。

还有另外的一个特点,之前的RPC连接及其不具有可维护性(只能通过一些专门的微软的内部工具来进行debug),现在则是咱们的老朋友HTTP封装,不光提供了日志,甚至还有debug信息窗口。要知道RPC进程挂死这种故障只能通过重启来解决……

微软的路线就是慢慢去RPC化。然而这些特性都是从O365里学来的,在之前2016架构前瞻的文章里我也提到,微软很多新概念都被应用到O365上,然后觉得成熟了再做成功能特性给on-premises用户。

OK,咱们再说一下客户端是如何使用MAPI/HTTP与服务器进行连接的:

1、 Outlook客户端,发现自己是MAPI/HTTP兼容的客户端,就在autodiscover请求里带上一个参数X-MapiHTTPCapability=1

2、 服务器收到了这个autodiscover请求,发现有Mapi/HTTP参数,于是响应MAPI/HTTP的配置信息给客户端。配置信息里包括连接URL验证方法等等,当然前提是你的服务器已经打开了这个功能。

3、 Outlook收到这些信息之后发现它可以跟服务器建立Mapi/HTTP连接,于是告诉用户重启Outlook,如果用户不重启Outlook,则会继续使用RPC over HTTP

配置要求:

讲了这么多理论了,咱们开始实际配置一下这玩意儿,首先是MAPI over HTTP的一些前提条件。

对于服务器:Exchange Server 2013 SP1必需,再加个.Net Framework 4.5.2,你可能在有些文档里看到需要KB2908387/KB2908385/KB2908383这几个补丁,这几个hotfix现在只能联系MCS才能下载了…所以打个.Net Framework4.5.2吧

客户端要求:outlook 2013 SP1,outlook 2010 SP2 以及更新 KB2956191 和 KB2965295

配置步骤:

在所有的的CAS服务器上添加系统变量:变量名和值见下图:

接下来配置Mapi虚拟目录,本身在Exchange 2013 SP1安装的时候,就已经部署好了Mapi的虚拟目录。但是默认的,只配置好了internalURL,所以如果要对外访问,那么就得再配置一下ExternalUrl和外部访问时所用的验证方式。命令为

Set-MapiVirtualDirectory –Identity “EX01\mapi (default web site)” -ExternalUrl 
  -IISAuthenticationMethods Negotiate

注意这里为什么IIS验证要配置成协商呢?因为MAPI/HTTP是按照HTTP的套路进行验证的,即客户端发送一个anonymous的HTTP请求,然后Exchange就在HTTP的层面告诉他验证方法,而不用autodiscover再去宣告验证方法。所以按照标准给个协商方法就可以了。

最后一步,为整个组织开启MapiOverHTTP功能。命令:

Set-OrganizationConfig –MapiHttpEnabled $True

OK,到这里MAPI/HTTP功能就正式配置完毕了,为确保生效,最好是按照顺序重启一下组织里的所有Ex服务器,有些人说我只重启CAS或者只重启MBX就生效了嘛,反正我在配置时的场景是多台全角色,我就都给重启了~

如何确定MAPI/HTTP生效了呢,重启完服务器之后,让客户端再进行一次自动发现,客户端就会蹦个报错出来:

然后咱按照提示,重启Outlook,再看一下连接状态,就会发现,没有代理服务器了并且后面的协议里只有HTTP,验证方法为协商,SSL加密。服务器名称也是连接到了mapi的虚拟目录上的终结点。

   
下面来一张RPC/HTTP的连接状态图,大家可以做参考

客户端上另外一个变化是,如下图,outlook anywhere的配置没了~

这样咱们就是配置成功了,接下来再多说一点,关于MAPI/HTTP的debug。首先是Mapi/HTTP的日志的存放路径:

CAS服务器: %ExchangeInstallPath%\Logging\HttpProxy\Mapi\

Mailbox服务器: %ExchangeInstallPath%\Logging\MAPI Client Access\

Mailbox服务器: %ExchangeInstallPath%\Logging\MAPI Address Book Service\

然后,你可以通过https://CAS的FQDN/MAPI/emsmdb/来进行一个连接检测,需要输入凭据

更详细的信息,则是在上面一个url的后面再接上一个?showdebug=yes,就是https://cas的fqdn/mapi/emsmdb/?showdebug=yes

这个里面的信息更为详细,详细到这次请求交互的每一步都给你列出来。有做HTTP基础的同学一定不会陌生了。

如果客户端想临时关掉MAPI/HTTP这个功能,使用RPC/HTTP功能的话,ok没问题,改注册表吧:

HKEY\CURRENT USER\Software\MicrosoftExchange => 创建一个dword值 “MapiHttpDisabled” 值为1

然后重新打开Outlook,执行重新Autodiscover。改回使用MAPI/HTTP就把这个值改成0。

最后再来几点注意事项:

1. 开启了Mapi over HTTP之后,Outlook 2013 SP1无法通过Ex2013SP1去访问早期版本的公共文件夹。

2. CAS服务器上的CPU使用率会上升,但是内存使用率下降,约50%-60%每用户

3. 无法使用MAPI Over HTTP时,Outlook会自动回退到RPC over HTTP

4. UAG 2010 SP4目前不支持MAPI Over HTTP的发布

5. Exchange 2016当中也许会默认使用MAPI over HTTP

本篇文章也有对应的教学视频

时间: 2024-10-21 18:15:57

「深入 Exchange 2013」MAPI over HTTP实战配置的相关文章

「深入 Exchange 2013」05 Outlook Anywhere

这一章来给大家讲Outlook Anywhere,概念比较重要,但是容易混淆,大家得仔细阅读,仔细区分. RPC over HTTP/HTTPS 首先得理解,为何在Exchange 2013当中,仅支持Outlook Anywhere的Outlook MAPI客户端连接方式.早期版本的MAPI访问依赖的是TCP的RPC协议直接连接到MBX服务器,而Exchange2013则使用HTTPS封装的RPC协议.这就意味着,如果你在当前是Ex2007或者Ex2010的环境当中,再增加一台Ex2013的服

「深入 Exchange 2013」01 客户端访问角色架构

Exchange 2013当中CAS角色的重要性不用多说.在Exchange Server4.0.5.0和5.5版本中,都没有特定的一个客户端访问功能角色,Exchange 2000引入了前端服务器的概念(front-end),这种服务器不存放任何邮箱数据,只提供客户端连接.一直到Exchange 2007,带来了第一次CAS角色的迭代:尔后在后面的产品中不断被加强改善. 在Exchange 2007的时候,CAS角色就已经负责以下三种类型的流量: 外部连接 内部连接 被其他CAS服务器重定向,

「深入 Exchange 2013」15 TLS传输层安全

默认情况下,SMTP流量是不被加密的,这就导致在公网上进行邮件沟通就像是在广播一样,任何人拦截到该邮件都可以轻而易举的读取其内容.但是现实场景中有许多敏感信息是通过邮件来进行发送的,所以其中一种保护邮件安全的方法就是使用传输层安全协议(Transport Layer Security)来提供SMTP流量在传输中的加密,受TLS保护的SMTP流量可以让拦截/窃听者无法读取到SMTP流量的内容,但是它只提供传输过程中的保护,对于已经到达目标服务器,或者是在发件方本地服务器的邮件则没法提供保护. 有两

「深入 Exchange 2013」08 代理、重定向、共存

回顾一下以前讲过的东西,CAS并不直接为客户端提供邮箱连接,而是以两种方式来保证客户端连接到正确的MBX:代理或和重定向.在代理连接当中,CAS接收客户端连接并且转发给恰当的服务器:在重定向连接当中,CAS仅仅是回应客户端一个恰当的服务器的FQDN以让客户端再次发起连接. 在Exchange2013的环境中,CAS只在少数几种情况下才会进行重定向动作.这是由于重定向迫使客户端进行再次连接,这种情况不是所有的客户端种类都可以接受的. 代理 CAS代理动作在Ex2010与Ex2007被设计的略微复杂

「深入 Exchange 2013」19 邮件限制

这一章咱们来讲讲Exchange中对邮件的QOS设置,这些设置平常也许大多数场景中不会涉及到,因为需要大批量发送邮件的场景里都会用到邮件中间件(发送大量宣传邮件或者报表).但是一旦让咱们碰上了,咱们也得知道从哪下手去调整这些设置不是,关于这个话题Technet上已经写得非常好了,咱这里也是做个总结和搬运. 在面对大批量邮件流量的时候,如何保证邮件流的处理井然有序,避免引起邮件阻塞,同时保护Exchange服务器防止其被过度使用,这是一个及其值得注意的问题.Exchange 2013当中引入了"邮

「深入 Exchange 2013」07 Autodisocver

微软在Exchange 2007里引入Autodiscover自动发现服务,意图去简化用户配置Outlook与Exchange ActiveSync的过程.Outlook的配置文件虽然可以手动配置,但是从Autodiscover会覆盖手动配置的选项,在你做出一些更改的时候,明显批量的自动下发配置更方便. Autodiscover还负责告诉Outlook当前的邮箱位置信息,Outlook会在与邮箱断开连接之后重新尝试Autodiscover.总而言之,这玩意儿跟Outlook Anywhere一样

「深入 Exchange 2013」14 接收连接器

接收连接器在概念上要比发送连接器简单一点,每个接收连接器只用侦听来自你分配给它的ip地址和端口的请求,然后将SMTP会话传送出去即可.接收连接器使用权限组来决定哪些发送者被允许使用该连接器,权限组则是预先定义好的一系列安全主体对某个对象(当前场景下则是接收连接器)所拥有的权限,比如说是"任何有邮箱账户的用户"即Exchange Users,或者是"组织里的任何Exchange Server"即Exchange Servers.这种模型类似于NTFS权限模型,先把用户

「深入 Exchange 2013」11 传输架构Part1

阅读过TechNet文档的人肯定对下面这张图不陌生,这张图完整诠释了整个Exchange 2013的邮件传输架构,前一章里已经简要讨论过的几个组件都在里头,然而还有一些其他的组件也值得深入讨论.首先咱们来聊聊图里边出现的重要词汇. 1."代理"在这里是指Agents,而非是proxy,即处理或者传输消息的某一块程序代码.图中的agents直接反映出Exchange的Business logic,例如Exchange的反垃圾和恶意软件筛选组件属于协议代理,路由代理.邮件传递代理和邮件提交

「深入 Exchange 2013」09 证书

今儿咱们来聊Exchange里的证书,CAS与MBX角色都有用到证书的地方,只是CAS角色更依赖证书一些,在一台Exchange服务器刚刚安装完成的时候,安装程序会自动生成一张自签名证书,这张自签名证书往往并不满足咱们的需求,所以咱们一般会向企业CA再去针对Exchange所涉及到的多个IIS服务的DNS备用名称申请合适的额证书. Exchange在哪些地方用到证书 1. 让客户端验证服务器的身份.这是最常规的用法,大多数管理员可能都碰到过证书名称不匹配引起的客户端报错. 2. 服务器去验证客户