今天一朋友突然在微信里问了这么一个问题:

本地部署了Exchange+RMS,测试的时候怎么同一封邮件通过owa的方式就可以正常的应用RMS权限,而使用Outlook权限就全部丢失呢?

针对这个问题,我回想起来很久以前我也遇到过这样一个情况,当时排查了很久最后发现出现这个问题的根本原因是Outlook客户端使用的是Office365上下载的客户端。来我们一起看下到底是怎么回事

首先看下症状,同一封邮件给的权限是只读,在owa上查看显示只读,回复和转发按钮是灰色的。但是在outlook上查看这封邮件,虽然显示权限是只读,但是可以转发那就说明RMS的权限丢失了啊。

Office365客户端使用RMS功能的分析_第1张图片

再次检查下权限,发现确实除了只读,其余任何事情都可以干

Office365客户端使用RMS功能的分析_第2张图片

那么接下来我们看下为什么会出现权限丢失,直接打开本地计算机的注册表,定位到:Computer\HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\MSIPC

可以清楚的看到Outlook客户端是从哪里获取RMS模板的

Office365客户端使用RMS功能的分析_第3张图片

第一个地址是discover.aadrm.com,这正是Azure RMS的地址啊!也就是说Office365客户端里面写死了RMS模板从Azure RMS获取。

不过我们点击MSIPC里面写的默认地址确是本地部署的RMS服务器地址,这也就是为什么Outlook客户端上,还是会显示一个只读权限的原因了。

Office365客户端使用RMS功能的分析_第4张图片

对此我们还能通过日志来进行精准定位

打开日志路径为C:\Users\Wang Yuan\AppData\Local\Microsoft\MSIPC\Logs

image

然后赫然看见是从Azure RMS获取模板,最终导致了Outlook上该邮件的RMS权限丢失

Office365客户端使用RMS功能的分析_第5张图片

总结一下:也就是说目前只要是使用了Office365下载的客户端,只要不是使用国际版Azure RMS服务,即使Exchange和RMS全都是纯本地部署的Outlook客户端也只会去读取Azure RMS模板,这样一来自然本地的RMS权限就丢失了。就算是删除注册表,或者做一条CNAME解析到本地RMS服务器都会失败,Office365客户端的大坑啊!!!换用本地部署的Office2013或2016RMS权限则不会丢失!