Wednesday, April 28, 2010

Single Outlook client can't connect; Exchange errors!

A few days ago I encountered a strange Exchange / Outlook problem.  One of our Outlook 2003 installations couldn't connect to our Exchange 2007 server, no matter what we tried.  The user's PC was able to ping the server, and even connect via web-mail, but no Outlook!  The user was getting all sorts of connectivity errors in the Outlook client itself, primarily:

Unable to open your default e-mail folders. The Microsoft Exchange Server computer is not available. Either there are network problems or the Microsoft Exchange Server is down for maintenance.

After hours of troubleshooting, I noticed that a specific event log error kept popping up on the Exchange server when we would try to connect:

ComputerName= Logfile=Application Type=Error SourceName=MSExchangeIS Category=6 CategoryString=General EventCode=9646 EventID=-1073338962 TimeGenerated=20100426134708.000000-420 TimeWritten=20100426134708.000000-420 Message=Mapi session "e49d45e3-baf2-48f6-ba0c-87b944a75f88" exceeded the maximum of 32 objects of type "session".

It turns out that the Outlook 2003 client previously opened a multiple sessions with the server, hit the 32 session limit, then crashed or otherwise left the connections hanging open, and this was preventing all new connection attempts from succeeding.

Restarting the Exchange services would have fixed this problem, but since this would have disconnected hundreds of clients (this was during the day), restarting services wasn't an option.

It turns out that the hung connections can be closed by the Windows Sysinternals tool called TCPView (LINK).  Here is how to close the connections:

  1. Open the Exchange Management Shell (I'm assuming you're running Exchange 2007), and run this command (USERNAME should be the user attempting to connect via Outlook):
    • Get-LogonStatistics USERNAME | Format-Table username,logontime,clientipaddress
  2. This will output all 32 connections.  Make a note of the IP address(es) that the hung connections were initiated from.
  3. Download TCPView (link above) and run it on the Exchange server to which the Outlook client is failing to connect.  If you have a busy server it may take a few minutes for TCPView to gather all the info.  You can turn off the refresh by selecting View --> Update Speed --> Paused.
  4. Click Options --> uncheck Resolve Addresses.
  5. Sort first by Remote Address, then by Process, and type "ST" in the window to scroll down to the "store.exe" process connections.
  6. Find the connections to the store.exe process from the IP address(es) you noted in step 2 above.  Select all of those connections, right click, and click Close Connection.
  7. Run the command in step 1 above again in the Exchange Management Shell to verify that the user has no more open connections.
  8. The Outlook client should now be able to re-connect to the Exchange server successfully.  You may run into this issue again if you do not resolve whatever was causing the excess connections to begin with.

No comments:

Post a Comment