MAPI: 全称 Messaging Application Programming Interface。MAPI over HTTP 是从Exchange 2013 SP1版本开始实现的一种新的传输协议。用来替代早期的RPC over HTTP(即outlook anywhere)。

MAPI用于改进Outlook和Exchange服务之间的可靠性和稳定性,其实现是将其原本使用的RPC四层协议改为七层HTTP协议。但MAPI并非是Outlook访问Exchange的唯一协议,对于一些老的不支持MAPI的客户端,则依然使用老的Outlook Anywhere。

MAPI over HTTP优势:

官方是这么说的:

  • 通过使用基于HTTP的协议,对未来在身份认证方面的创新打下了基础。
  • 设备通许中断后,提供更快速的恢复连接。因为仅需要重建TCP连接。比如设备休眠、设备切换网络环境(有线<->无线)

  • 提供不依赖连接的会话上下文。 服务器在可配置的时间段内维护会话上下文,即使用户更改了网络。

部署MAPI over HTTP

在Exchange 2013 SP1版本中,首次出现MAPI over HTTP的支持,所以微软默认并没有启用它,默认仍然适用较为成熟的RCP over HTTP。 所以需要人工启用。

  • 虚拟目录配置
    
    Set-MapiVirtualDirectory -Identity "Cas01\mapi (Default Web Site)" -InternalUrl https://mail.contoso.com/mapi  –ExternalUrl https://mail.contoso.com/mapi -IISAuthenticationMethods Negotiate

- 证书配置(即IIS证书,略)
- 全局启用MAPI

Set-OrganizationConfig -MapiHttpEnabled $true


#### 区别

RPC over HTTP:
![image.png](https://s2.51cto.com/images/20220517/1652777325935298.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

MAPI over HTTP:

![image.png](https://s2.51cto.com/images/20220517/1652777346548926.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

- RPC over HTTP: MAPI被经过两次封装,MAPI->RPC->HTTP。
- MAPI over HTTP: 取消了对RPC的依赖,MAPI直接封装在HTTP里。 

Outlook端: 
- 当使用RPC over HTTP时,协议字段对应的是 RPC/HTTP,代理服务器字段会有服务器名称。

![image.png](https://s2.51cto.com/images/20220517/1652777393793336.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

- 当使用MAPI over HTTP时,协议字段对应的是HTTP,代理服务器字段为空。
![image.png](https://s2.51cto.com/images/20220517/1652777408234658.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

#### MAPI over HTTP 如何工作?

- Outlook客户端发起 autodiscover POST请,并在请求中通过属性X-MapiHTTPCapability=1 通告自身支持MAPI over HTTP。 
- Exchange服务器接收到请求后,发现客户端支持MAPI over HTTP,于是返回MAPI/HTTP的连接信息。
- Outlook客户端收到响应后,提示用户重启Outlook,以便于切换到新的连接。 在为重启之前,继续使用RPC over HTTP。

RPC over HTTP:
![image.png](https://s2.51cto.com/images/20220517/1652778253699563.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)