将邮箱从 2010 年迁移至 2016 年后弹出凭证窗口

将邮箱从 2010 年迁移至 2016 年后弹出凭证窗口

情况:

  • Exchange 2010 与 2016 共存。两者均启用了 Outlook Anywhere 且支持 NTLM

  • webmail.domain.com 配置为 CAS 命名空间(适用于 2016 年的所有虚拟目录)

  • autodiscover.domain.local/autodiscover.autodiscover.xml 配置为 SCP(不使用外部自动发现)

  • 上述两个 URL 的 DNS 指向 Exchange 2016

将邮箱从 2010 年移动到 2016 年时,会发生以下情况:

对于 Outlook 2010 用户:

  • 用户会收到一个弹出窗口,提示管理员已做出更改,需要重新启动 Outlook

  • 用户重新启动 Outlook(有时会再次出现相同的弹出窗口,然后再次重新启动 Outlook)

  • 用户将获得一个凭证弹出窗口。如果您单击“取消”,则会出现另一个弹出窗口:

“允许此网站配置[电子邮件保护]服务器设置?

autodiscover.domain.com/autodiscover/autodiscover.xml

如您所见,Outlook 2010 正在寻找 autodiscover.domain.com,这可能是因为 SCP 查找失败。

如果我进行 Outlook 自动配置测试,它会失败。SCP 查找一直给出 302 重定向。

这似乎是这里描述的问题:

https://support.microsoft.com/en-us/help/3097392/outlook-logon-fails-after-mailbox-moves-from-exchange-2010-to-exchange-2013-or-exchange-2016

我可以回收这些 AppPools,然后它似乎对某些 Outlook 2010 客户端有效,但公司中几乎所有其他 Outlook 2010 客户端(甚至尚未移动的客户端)都会弹出一个窗口,提示管理员已做出更改并且需要重新启动 Outlook。

然后,对于 Outlook 2013 客户端,回收 AppPool 根本不起作用。他们不断收到凭据弹出窗口。我可以为他们创建一个新的配置文件,然后 Outlook 会连接,但如果我再次重新启动 Outlook,则会再次弹出凭据窗口。

此外,测试电子邮件自动配置对他们来说也很好用。

对于那些 Outlook 2013 用户,我尝试添加以下注册表项“MapiHttpDisabled”,然后他们的旧 Outlook 配置文件和新 Outlook 配置文件都可以正常工作,没有任何弹出窗口!但是,当我检查连接状态时,它仍然显示 HTTP 协议,这对我来说意味着他们仍然在使用 MAPI over HTTP 协议,对吗?

另外,当我检查 IIS 日志时,我只看到对 MAPI 协议的调用,即使对于那些我添加了注册表项的用户也是如此:

2017-06-08 09:27:25 10.132.33.12 POST /mapi/emsmdb/

目前,我们正在为所有 2013 用户添加注册表项,因为这似乎是一种解决方法,但感觉不是一个好的解决方案:

  • MapiHttp 是未来的协议,所以我不想禁用它

  • 注册表似乎没有完全禁用它,因为用户似乎仍然通过 MapiHttp 连接(根据连接状态和 IIS 日志)???这个键还有其他作用吗?

  • 它不能解决 2010 用户重新启动 AppPools 的问题。

以下是我已经尝试过的方法:

  • 检查数据库上的 OAB 设置:它们已正确配置

  • 在 IIS 中,将 Autodiscover、EWS 和 OAB 虚拟目录的 Windows 身份验证提供程序更改为仅 NTLM(我也尝试过将 NTLM 移到顶部并保留 Negotiate)。我在两台服务器上都尝试过此操作

  • 我在自动发现虚拟目录上启用了内核模式身份验证以进行 Windows 身份验证

  • 我将 Negotiate:Kerberos 提供程序添加到 Exchange 2016 上的 mapi 虚拟目录

  • 我将自动发现和网络邮件 URL 添加到 Internet Explorer 中的受信任站点

  • 未启用代理服务器

这些似乎都没有什么区别。有时,更改这些设置会给没有问题的用户带来弹出窗口。

还有其他建议吗?

答案1

对于 Outlook 2013 的上述问题:

  1. 确保 MAPI 虚拟目录的身份验证方法是 NTLM。您可以通过运行来检查获取 MAPI 虚拟目录或者通过运行来改变它设置MAPIVirtualDirectory在 Exchange 2016 服务器上。

  2. 根据我的经验,如果用户的 UPN 和 PrimarySMTPAddress 不匹配,Outlook 2013/2016 将在通过 MAPI\HTTP 发起连接时提示输入凭据。您可以通过运行来检查获取邮箱用户 A | fl UserPrincipalName,PrimarySMTPAddress。或者通过运行来更改它设置邮箱用户 A -UserPrincipalName xxx

另外,Exchange 2016 仅支持 MAPI\HTTP 和 RPC\HTTP,其中 MAPI\HTTP 是默认的连接方式。禁用 MAPI\HTTP 后,Outlook 将通过 RPC\HTTP 连接 Exchange,因此 Outlook 的连接状态中仍会看到 HTTP。

答案2

我认为我现在已经解决了。MAPI/HTTP 已为少数用户启用,不再出现弹出窗口。

如何?

我安装了连接分析器客户端,它显示 MAPI 地址簿端点失败:

 Error from Connectivity Analyzer:

Testing the address book "Check Name" operation for user xxx against server xxx.
An error occurred while attempting to resolve the name.
Additional Details
Additional Details: A protocol layer error occured. HttpStatusCode: 401
FailureLID: 47372
FailureInfo:

###### REQUEST [2016-09-14T05:06:35.2485121Z] ######

POST /mapi/nspi/?mailboxId=1ad81e37-e4a2-44d9-a465-a7565716b59f@xxx HTTP/1.1
Content-Type: application/octet-stream
User-Agent: MapiHttpClient
X-RequestId: 89b62b49-2d57-4ee2-ba4c-d675bc301556:1
X-ClientInfo: 8d6dea85-a922-4fb3-b454-bc89f733b8c1:1
X-RequestType: Bind
X-ClientApplication: MapiHttpClient/15.01.0106.000
Authorization: Negotiate [truncated]
Host: xxx 
Content-Length: 45

--- REQUEST BODY [+0.003] ---
..[BODY SIZE: 45]

--- REQUEST SENT [+0.003] ---

###### RESPONSE [+0.014] ######

HTTP/1.1 401 Unauthorized
request-id: 1d47e4b9-9933-45c5-96bf-2e4d660a9fd3
X-FailureContext: FrontEnd;401;VW5hdXRob3JpemVk;;;;
Server: Microsoft-IIS/8.5
WWW-Authenticate: Negotiate [truncated]
X-Powered-By: ASP.NET
X-FEServer: MELP-EXCH01
Date: Wed, 14 Sep 2016 05:06:35 GMT
Content-Length: 0

--- RESPONSE BODY [+0.014] ---

--- RESPONSE DONE [+0.014] ---

###### EXCEPTION THROWN [+0.014] ######


HTTP Response Headers:
request-id: 1d47e4b9-9933-45c5-96bf-2e4d660a9fd3
X-FailureContext: FrontEnd;401;VW5hdXRob3JpemVk;;;;
Server: Microsoft-IIS/8.5
WWW-Authenticate: Negotiate 

oXgwdqADCgEBom8EbWBrBgkqhkiG9xIBAgIDAH5cMFqgAwIBBaEDAgEepBEYDzIwMTYwOTE0MDUwNjM1WqUEAgIWjKYDAgEpqRUbE0dSSUZGSVRISEFDSy5DT00uQVWqGTAXoAMCAQGhEDAOGwxtZWxwLWV4Y2gwMSQ=,NTLM
X-Powered-By: ASP.NET
X-FEServer: MELP-EXCH01
Date: Wed, 14 Sep 2016 05:06:35 GMT
Content-Length: 0
HttpStatusCode: 401 Unauthorized
Elapsed Milliseconds: 15

我尝试过许多不同的修复方法,但现在我不确定哪一个才是解决方案。以下是我所做的(全部在 IIS 中):

  • 在“Exchange Back End\mapi\emssmdb”和“Exchange Back End\mapi\nspi”上,将 NTLM 置于 Windows 身份验证的首位(而不是协商)

  • 删除了“Exchange Back End\mapi\nspi”的“需要 SSL”

  • 授予 Exchange 计算机帐户和网络服务对“D:\Program Files\Microsoft\Exchange Server\V15\ClientAccess”的完全访问权限

  • 删除了 MAPI 目录 (默认第一个网站) 的 Windows 身份验证提供商的协商

  • IIS重置

现在,连接分析器使用 NTLM 进行连接,并且不再抛出任何错误。我不知道为什么会这样,因为我认为默认设置应该有效,或者至少客户端应该只在我通过“Set-MapiVirtualdirectory -IISAuthenticationmethods NTLM”命令指定 NTLM 时才使用 NTLM。

相关内容