虚拟目录上的 401 错误导致 MAPI 连接问题 (Exchange 2013 SP1)

虚拟目录上的 401 错误导致 MAPI 连接问题 (Exchange 2013 SP1)

编辑#22015 年 10 月 21 日 我成功了!!!幸运的是,我决定删除“Negotiate”,并将“Negotiate:Kerberos”添加到“Exchange Back End > mapi”文件夹,现在我可以登录 MAPI/HTTP 测试页面而不会出现错误。我仍然无法让配置文件完全正常工作,因此我又摆弄了一下 MAPI 文件夹权限,然后才发现必须将“Negotiate”从“Default Web Site > mapi”文件夹中完全删除。

总结一下这些权限:

Default Web Site > mapi > Authentication:
Anonymous: Disabled
ASP.NET Impersonation: Disabled
Basic Authentication: Disabled
Digest Authentication: Disabled
Forms Authentication: Disabled
Windows Authentication: Enabled
 -Providers: 
   --NTLM 

Exchange Back End > mapi > Authentication:
Anonymous: Disabled
ASP.NET Impersonation: Disabled
Basic Authentication: Disabled
Digest Authentication: Disabled
Forms Authentication: Disabled
Windows Authentication: Enabled
 -Providers: 
   --Negotiate:Kerberos
   --NTLM

感谢所有帮助我解决这个问题的人!

编辑2015 年 10 月 21 日添加了有关 IIS 401 日志的一些评论。

编辑2015 年 10 月 20 日 今天,我按照虚拟目录设置/权限进行操作。一切正常。

编辑2015 年 10 月 19 日

我按照您提供的最新链接操作。事实上,我确实遇到了同样的问题,即我所说的“OWA 登录循环”。证书加密正是问题所在。我切换到 MS schannel,循环问题就消失了。旧证书没有任何残留,但 401 问题仍然存在。

来自“无特定重要性顺序的文章...”

第一个听起来很有希望,因为他的 401 错误几乎完全相同,但那篇文章中没有任何帮助。我已经看过他引用的 MS 文章,并且已经尝试了这些设置。但是,我确实再次尝试了它们……只是为了看看它们是否有用。我唯一没有尝试的是将 IIS 中身份验证 > 提供程序部分中的“NTLM”移到“协商”上方。这也没有帮助。

我也开始关注您的其他链接。

对于测试脚本部分,我尝试了所有测试脚本...包括 MAPI 测试(我已经做过无数次了)。它们都成功了。

[PS] D:\Exchange2013\scripts>Test-OutlookConnectivity -RunFromServerId EXCH1 -ProbeIdentity OutlookMapiHttpSelfTestProbe

MonitorIdentity                          StartTime       EndTime         Result               Error                Exception
---------------                          ---------       -------         ------               -----                ----
OutlookMapiHttp.Protocol\OutlookMapiH... 10/19/2015 1... 10/19/2015 1... Succeeded

[PS] D:\Exchange2013\scripts>Test-OutlookConnectivity -ProbeIdentity "OutlookRpcSelfTestProbe"

MonitorIdentity                          StartTime       EndTime         Result               Error                Exception
---------------                          ---------       -------         ------               -----                ----
Outlook.Protocol\OutlookRpcSelfTestProbe 10/19/2015 1... 10/19/2015 1... Succeeded


[PS] D:\Exchange2013\scripts>Test-OutlookConnectivity "OutlookRpcDeepTestProbe\cabuzzi_2015" -RunFromServerId EXCH1 -Mai
lboxId [email protected]

MonitorIdentity                          StartTime       EndTime         Result               Error                Exception
---------------                          ---------       -------         ------               -----                ----
Outlook.Protocol\OutlookRpcDeepTestPr... 10/19/2015 1... 10/19/2015 1... Succeeded


[PS] D:\Exchange2013\scripts>$TestCredentials = Get-Credential

cmdlet Get-Credential at command pipeline position 1
Supply values for the following parameters:
Credential
[PS] D:\Exchange2013\scripts>Test-OutlookConnectivity -ProbeIdentity OutlookRpcCtpProbe -MailboxId [email protected] -Cr
edential $TestCredentials

MonitorIdentity                          StartTime       EndTime         Result               Error                Exception
---------------                          ---------       -------         ------               -----                ----
Outlook\OutlookRpcCtpProbe               10/19/2015 1... 10/19/2015 1... Succeeded


[PS] D:\Exchange2013\scripts>Test-OutlookConnectivity -ProbeIdentity "OutlookRpcCTPProbe" -MailboxID [email protected]

MonitorIdentity                          StartTime       EndTime         Result               Error                Exception
---------------                          ---------       -------         ------               -----                ----
Outlook\OutlookRpcCtpProbe               10/19/2015 1... 10/19/2015 1... Succeeded

我还重新运行了 Exchange 连接分析器上的所有测试。全部通过。以下是“Outlook 连接”测试的 XML 结果,该测试最相关:

(我不得不删除 XML,因为主帖太长了。长话短说,它顺利通过了审核)

您还发布了一个 MS 链接,涉及在 Windows 2008 环境中运行 2007/2010 时的身份验证问题。我只在 Windows 2012 环境中运行 Exchange 2013 SP1。大约一年前,我有一台 Exchange 2010 服务器。不确定是否还有什么遗留问题……但如果有,它不会显示在 ADSI Edit 中。

最后,我正在使用 MapiHttpDisabled 注册表项。我将其设置为“0”以在测试修复时启用 MAPI,并在实际需要打开 Outlook 并进行工作时将其重新设置为“1”。

我唯一需要查看的是虚拟目录页面。今晚我会仔细查看一下。

再次感谢您的所有帮助。

编辑 因此,我只是为了好玩,将自动发现和邮件 A 记录更改为 ARR,只是为了看看它是否会改变什么。没有任何变化,相反,一些 IIS 错误日志现在显示在 ARR 上。

我明天会查看您发布的所有链接!

以下是每个服务器的一些日志的示例:

.97 是 ARR .220 和 .228 是客户端/工作站 .104 是 EXCH1

从 ARR 服务器:

2015-10-18 22:59:05 192.168.1.97 POST /ews/Exchange.asmx X-ARR-LOG-ID=9510ed1a-a8f8-4d91-b4ef-a43ec4b37dce 443 - 192.168.1.228 Microsoft+Office/15.0+(Windows+NT+6.2;+Microsoft+Outlook+15.0.4667;+Pro) - 401 0 0 0
2015-10-18 22:59:05 192.168.1.97 POST /ews/Exchange.asmx X-ARR-LOG-ID=efdd0650-3308-4c0a-93b6-11b119ae69ad 443 - 192.168.1.228 Microsoft+Office/15.0+(Windows+NT+6.2;+Microsoft+Outlook+15.0.4667;+Pro) - 200 0 0 140
2015-10-18 23:04:14 192.168.1.97 POST /mapi/nspi/ [email protected]&X-ARR-CACHE-HIT=0&X-ARR-LOG-ID=cc6b81b4-f843-482a-9503-50bad60ae152 443 - 192.168.1.220 Microsoft+Office/16.0+(Windows+NT+10.0;+Microsoft+Outlook+16.0.4266;+Pro) - 401 0 0 46

来自 EXCH1

2015-10-18 23:08:48 ::1 GET /ecp/ReportingWebService/ &CorrelationID=<empty>;&cafeReqId=b90a694e-2059-4c17-9748-4658134c00ca; 443 - ::1 AMProbe/Local/ClientAccess - 302 0 0 0
2015-10-18 23:08:51 ::1 RPC_IN_DATA /rpc/rpcproxy.dll [email protected]:6001&CorrelationID=<empty>;&RequestId=aa3fbeba-1e95-41bd-9097-155bfed9ef03&cafeReqId=aa3fbeba-1e95-41bd-9097-155bfed9ef03; 443 - ::1 MSRPC - 401 1 2148074254 0
2015-10-18 23:08:51 ::1 RPC_IN_DATA /rpc/rpcproxy.dll [email protected]:6001&CorrelationID=<empty>;&RequestId=f5b1b4a3-36a3-4794-8ec0-841d6b2f795f&cafeReqId=f5b1b4a3-36a3-4794-8ec0-841d6b2f795f; 443 CABUZZI\SM_4a59733b1538499da ::1 MSRPC - 200 0 0 62
2015-10-18 23:08:51 192.168.1.104 RPC_IN_DATA /rpc/rpcproxy.dll [email protected]:6001&CorrelationID=<empty>;&RequestId=1cb5dfb8-1e2b-4beb-982c-e96262f0cd4c&cafeReqId=1cb5dfb8-1e2b-4beb-982c-e96262f0cd4c; 443 - 192.168.1.104 MSRPC - 401 1 2148074254 0

第一次发帖,所以请对我宽容一点。

我在我的域中运行双服务器 Exchange 2013 SP1 设置。我使用 ARR 作为反向代理,并且所有内部/外部域名都相同。我没有内部负载均衡器,因此我使用 DNS 轮询。

使用 RPC/HTTP 时一切都运行正常,但当我尝试将组织切换到 MAPI 时,我收到无休止的登录提示。我已经反复检查了我的 SSL 证书、虚拟目录身份验证方法、内部/外部 URI 等。此外,每个 MSRCA 测试都运行正常,包括两个 Outlook 测试。这让我深入研究了 IIS 日志,发现问题可能不是出在 MAPI 上(尤其是 MAPI 测试探测成功通过之后)。

我已将问题缩小到几个文件夹上的 401,最明显的是自动发现和 mapi。疯狂的是,当我使用其中一个 Exchange 服务器的直接主机名时,我没有遇到任何问题。IE 中 mapi 或自动发现 URL 的测试页面工作正常。我在故障排除期间将自动发现和邮件 A 记录设置为我的第一个 Exchange 服务器,但这似乎也无济于事。

所以如果我输入https://mail.cabuzzi.com/mapi/emsmdb在 IE 中,我得到了一个循环的密码提示,并且我的 IIS 日志中有一个 401(也使用 Fiddler 验证过)。如果我输入https://exch1.cabuzzi.com/mapi/emsmdb,我收到证书错误...但我返回了肯定的结果,即使 mail.cabuzzi.com 和 exch1.cabuzzi.com 都解析为同一个 IP。自动发现也解析为 EXCH1 IP,并且在 Exchange SSL 证书(来自 GoDaddy)中有一个适当的 SAN 条目。

我还应该指出,当我在客户端 PC 上强制使用 MapiHttpDisabled 时,401 错误实际上并没有消失,它们似乎并不影响 Outlook 创建新配置文件或在现有配置文件上打开电子邮件。一旦我清除 MapiHttpDisabled 设置,我就会收到现有配置文件的密码提示,甚至无法创建新配置文件。

有什么想法吗?我在这里真的被难住了,经过两周(断断续续)的故障排除后,我的头开始发晕了。

答案1

编辑#22015 年 10 月 21 日 我成功了!!!幸运的是,我决定删除“Negotiate”,并将“Negotiate:Kerberos”添加到“Exchange Back End > mapi”文件夹,现在我可以登录 MAPI/HTTP 测试页面而不会出现错误。我仍然无法让配置文件完全正常工作,因此我又摆弄了一下 MAPI 文件夹权限,然后才发现必须将“Negotiate”从“Default Web Site > mapi”文件夹中完全删除。

总结一下这些权限:

默认网站 > mapi > 身份验证:匿名:已禁用 ASP.NET 模拟:已禁用 基本身份验证:已禁用 摘要式身份验证:已禁用 表单身份验证:已禁用 Windows 身份验证:已启用 -提供程序:--NTLM

Exchange 后端 > mapi > 身份验证:匿名:已禁用 ASP.NET 模拟:已禁用 基本身份验证:已禁用 摘要式身份验证:已禁用 表单身份验证:已禁用 Windows 身份验证:已启用 -提供程序:--Negotiate:Kerberos NTLM

感谢所有帮助我解决这个问题的人!

相关内容