將郵箱從 2010 年移至 2016 年後的憑據彈出視窗
情況:
- 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 重定向。
這似乎是這裡描述的問題:
我可以回收這些 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 的上述問題:
- 確保 MAPI 虛擬目錄的身份驗證方法是 NTLM。您可以通過執行Get-MAPIVirtualDirectory來檢查它,或者通過在 Exchange 2016 伺服器上執行Set-MAPIVirtualDirectory來更改它。
- 根據我的經驗,如果使用者的 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。