Pewnego pięknego dnia nabrałem ochoty, aby z poziomu ECP sprawdzić Admin Audit Log w celu namierzenia gagatka, który zawalił konfigurację.
Niestety przywitał mnie komunikat błędu mówiący, że jednak nie da rady.
Niewiele później, musiałem przeszukać zawartość jednej ze skrzynek, ale tu zaś przywitał mnie błąd 403 ze strony EWS.
Errors:
Export failed with error type: 'FailedToSearchMailboxes'. Details: The request failed with HTTP status 403: Forbidden. Endpoint: https://e01.domena.pl:444/EWS/Exchange.asmx HttpContext:
X-AnchorMailbox:[email protected]
client-request-id:2ea41e19-befe-4228-848e-a4a1d97c123
X-DiagInfo: E01
X-BEServer: E01
Content-Length: 0
Date: Fri, 31 Jan 2025 09:23:45 GMT
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
W Eventviewerze, w dzienniku MSExchange Management namierzyłem błędy ze źródła MSExchange CmdletLogs o EventId 6. Oto przykłady:
Cmdlet failed. Cmdlet Search-MailboxAuditLog, parameters -StartDate "2/6/2025 12:00:00 AM" -EndDate "2/23/2025 12:00:00 AM" -LogonTypes ("Admin") -ExternalAccess "False" -Identity "Jan Kowalski" -ResultSize "501".
lub
Cmdlet failed. Cmdlet New-MailboxSearch, parameters -Name "sdfsd" -StartDate "2/19/2025 11:00:00 PM" -SourceMailboxes ("Janina Kowalska") -EstimateOnly "True".
Kolejnym krokiem, była próba wykonania poleceń z konsoli EMS
New-MailboxSearch -Name "sdfsd" -StartDate "2/19/2025 11:00:00 PM" -SourceMailboxes ("Janina Kowalska") -EstimateOnly
The request failed. The remote server returned an error: (400) Bad Request.
+ CategoryInfo : NotSpecified: (:) [], DataSourceOperationException
+ FullyQualifiedErrorId : [Server=E01,RequestId=436aeecc-392a-401e-b03c-cdacef12345,TimeStamp=2/21/2025 3:37:04
PM] [FailureCategory=Cmdlet-DataSourceOperationException] 4F1A821C
+ PSComputerName : e01.domena.pl
Dopiero ten komunikat pozwolił mi znaleźć rozwiązanie problemu na polskim, nieco zapomnianym blogu microsoftadmin.net. Co prawda, wpis odnosi się do Exchange 2016, ale... u mnie objawił się na Exchange 2019 CU 14. Ciekawe skąd...
Rozwiązanie
Wykonaj poniższe polecenie i sprawdź, czy problematyczny serwer nie ma ustawionego pola InternalNLBBypassUrl na niepustą wartość dla Virtual Directory o nazwie EWS (Default Web Site). U mnie było tak:
Get-WebServicesVirtualDirectory -ShowMailboxVirtualDirectories | fl identity, *url*
Identity : e02\EWS (Exchange Back End)
InternalNLBBypassUrl : https://e02.domena.pl:444/ews/exchange.asmx
InternalUrl :
ExternalUrl :
Identity : e02\EWS (Default Web Site)
InternalNLBBypassUrl :
InternalUrl : https://ex.domena.pl/EWS/Exchange.asmx
ExternalUrl : https://ex.domena.pl/EWS/Exchange.asmx
Identity : e01\EWS (Exchange Back End)
InternalNLBBypassUrl : https://e01.domena.pl:444/ews/exchange.asmx
InternalUrl :
ExternalUrl :
Identity : e01\EWS (Default Web Site)
InternalNLBBypassUrl : https://e01.domena.pl/ews/exchange.asmx
InternalUrl : https://ex.domena.pl/EWS/Exchange.asmx
ExternalUrl : https://ex.domena.pl/EWS/Exchange.asmx
Jak widzisz, dla e01\EWS (Default Web Site) właściwość InternalNLBBypassUrl ma wartość: https://e01.domena.pl/ews/exchange.asmx.
Czas zamienić ją na nulla.
Get-WebServicesVirtualDirectory "e01\EWS (Default Web Site)" | Set-WebServicesVirtualDirectory -InternalNLBBypassUrl $null
I to w sumie tyle. Po tej zmianie wszystko wróciło do normy, a ja znów mogę znajdować winowajców wszystkich zepsutych konfiguracji!