The administration and maintenance of Microsoft Exchange Server to ensure secure, reliable, and efficient email and collaboration services across an organization.
Update — additional findings
We have narrowed the issue significantly. The failure is tied to which server holds the active database copy, not to the client or the proxying server.
Behaviour
- Active copy of the user's database mounted on NODE4 → address list browsing fails
- Active copy moved to NODE7 → browsing works immediately, no service restart needed
- Moving the database back to NODE4 → fails again immediately
Verified with two different databases (DB01, DB02) and two unrelated mailboxes. Switching is instantaneous and fully reproducible in both directions. Both servers run the same build (15.2.1748.10) in the same DAG.
Note that clients always connect to the same namespace, which resolves to NODE4. So when the database is on NODE7, the request is proxied NODE4 → NODE7 and succeeds; when the database is on NODE4, the request is handled locally on NODE4 and fails. Testing with a hosts-file override to reach NODE7 directly produced the same result — the determining factor is where the mailbox database is mounted, not which server the client reaches.
Compared between NODE4 and NODE7 — all identical
- Exchange binaries:
V15\Bincontains 1079 files totalling 641,759,715 bytes on both servers, byte-for-byte identical. All file versions 15.02.1748.010, includingMicrosoft.Exchange.AddressBook.Service.dll. -
ClientAccess\mapi\nspidirectory: 4 files, 19,925 bytes on both. -
nspi\web.config: contents identical apart from theX-DiagInfo/X-BEServercustom headers carrying the local server name. -
MSExchangeMapiAddressBookAppPool_CLRConfig.config: identical hash. - Extended Protection:
tokenChecking="Require"on/mapi/nspi,/mapi/emsmdb,/owa,/ecp,/EWSon both servers, identical configuration throughout. - Back End (port 444) SSL binding: each server correctly bound to its own self-signed
CN=Node4/CN=Node7certificate. - Antivirus: only Microsoft Defender on both, same services running.
- Setup registry keys:
MsiBuildMajor 1748,MsiBuildMinor 10, same install path.
Tested and ruled out
- Extended Protection. Set
extendedProtection.tokenCheckingtoNoneonExchange Back End/mapi/nspion NODE4 viaappcmd /commit:apphost, restarted IIS, moved the database to NODE4 — the failure persisted. Setting restored toRequire. - Network offload features. The only material difference found between the servers was on the NICs — NODE4 has an Intel X520 (driver 4.1.254.0, 2024) with
Recv Segment Coalescing (IPv4)andIPsec Offloadenabled; NODE7 has a Broadcom NetXtreme Gigabit (driver 17.2.1.0, 2015) without those features. Disabled RSC and IPsec Offload on NODE4, moved the database back — the failure persisted. Settings restored. - Information Store restart. Restarting
MSExchangeISon NODE4 did not change the behaviour. - Application pool restarts.
MSExchangeMapiAddressBookAppPool,MSExchangeMapiFrontEndAppPool,MSExchangeOWAAppPool,MSExchangeRestAppPool— no effect. - Address list rebuild.
Update-AddressListandUpdate-GlobalAddressList— no effect. A newly created address list containing 53 objects fails identically, while one containing 51 objects renders correctly.
Current state
All active database copies are kept on NODE7 as a workaround, and address list browsing works for all users. No errors are logged by any Exchange source on either server at the moment of failure.
Question
Given that the binaries and configuration are provably identical between the two servers and the behaviour differs deterministically, we suspect local state on NODE4 that is not reflected in file contents or IIS configuration. Would a Setup.exe /Mode:Upgrade reinstall of the same build be expected to reset whatever state is responsible, or is a full /Mode:RecoverServer required? Any guidance on what local state to inspect before resorting to a reinstall would be appreciated.