Exchange

將郵箱從 2010 年移至 2016 年後的憑據彈出視窗

  • July 19, 2017

情況:

  • Exchange 2010 和 2016 共存。使用 NTLM 啟用 Outlook Anywhere
  • webmail.domain.com 配置為 CAS 命名空間(適用於 2016 年的所有虛擬目錄)
  • autodiscover.domain.local/autodiscover.autodiscover.xml 配置為 SCP(不使用外部自動發現)
  • 上述兩個 URL 的 DNS 指向 Exchange 2016

將郵箱從 2010 年移至 2016 年時,會發生以下情況:

對於 Outlook 2010 使用者:

  • 使用者收到一個彈出視窗,提示管理員已進行更改,需要重新啟動 Outlook
  • 使用者重新啟動 Outlook(有時會再次出現相同的彈出視窗,然後再次重新啟動 Outlook)
  • 使用者會收到一個憑據彈出視窗。如果點擊取消,則會出現另一個彈出視窗:

“允許此網站配置 test2010@domain.com 伺服器設置嗎?”

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,則會再次彈出一個憑據彈出視窗。

此外,Test E-mail 自動配置對他們也很有效。

對於那些 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 中,將自動發現、EWS 和 OAB 虛擬目錄的 Windows 身份驗證提供程序更改為僅 NTLM(我也簡單地嘗試將 NTLM 移動到頂部並離開協商)。我在兩台伺服器上都試過了
  • 我在自動發現虛擬目錄上為 Windows 身份驗證啟用了核心模式身份驗證
  • 我將 Negotiate:Kerberos 提供程序添加到 Exchange 2016 上的 mapi 虛擬目錄
  • 我將自動發現和網路郵件 URL 添加到 Internet Explorer 中的受信任站點
  • 沒有啟用代理伺服器

這些似乎都沒有什麼不同。有時,更改這些設置會為沒有問題的使用者提供彈出視窗。

還有其他建議嗎?

我想我現在解決了。為少數使用者啟用了 MAPI/HTTP,並且不再出現任何彈出視窗。

如何?

我安裝了 Connectivity Analyzer 客戶端,它顯示 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重置

現在,Connectivity Analyzer 使用 NTLM 進行連接,並且不再拋出任何錯誤。我不知道為什麼會這樣,因為我認為預設設置應該起作用,或者至少只有當我僅通過“Set-MapiVirtualdirectory -IISAuthenticationmethods NTLM”命令指定 NTLM 時,客戶端才應該使用 NTLM。

對於 Outlook 2013 的上述問題:

  1. 確保 MAPI 虛擬目錄的身份驗證方法是 NTLM。您可以通過執行Get-MAPIVirtualDirectory來檢查它,或者通過在 Exchange 2016 伺服器上執行Set-MAPIVirtualDirectory來更改它。
  2. 根據我的經驗,如果使用者的 UPN 和 PrimarySMTPAddress 不匹配,Outlook 2013/2016 將在通過 MAPI\HTTP 啟動連接時提示輸入憑據。您可以通過執行Get-Mailbox userA |來檢查它。fl UserPrincipalName,PrimarySMTPAddress。或者通過執行Set-Mailbox UserA -UserPrincipalName xxx來更改它。

此外,Exchange 2016 僅支持 MAPI\HTTP 和 RPC\HTTP,預設連接方式為 MAPI\HTTP。禁用 MAPI\HTTP 後,Outlook 將通過 RPC\HTTP 連接到 Exchange,因此您仍會在 Outlook 連接狀態中看到 HTTP。

引用自:https://serverfault.com/questions/854631