Thursday, July 02, 2009

IPv6 and Exchange 2007 Outlook Anywhere Feature

We Installed Exchange 2007 SP1 on Windows 2008 Server's at the Office (Toyota Malawi), and we have enabled OWA and Outlook anywhere (RPC over HTTP) features.

During tests I found out that Clients could not connect using Outlook Anywhere, google search revealed there is a bug with IPv6 in Windows 2008 that won't allow Outlook Anywhere to run in it's default state.

According to Technet, When a client using Outlook Anywhere tries to connect to Exchange 2007 SP1 running on Windows Server 2008, the client cannot connect. This happens because the RPCProxy component on the Client Access server that is running on Windows Server 2008 is unable to connect through port 6004 to the DSProxy component on the Exchange Mailbox server.

Windows Server 2008 has made TCP/IPv6 the default communication protocol stack over which connections are made by clients connecting to the server that is running Microsoft Exchange. The RPCProxy component tries to connect to the DSProxy component through port 6004 over TCP/IPv6. However, the DSProxy component does not listen on the TCP/IPv6 stack, which causes connection requests from the RPCProxy component to fail.

Running netstat -a -n resulted in:

TCP 0.0.0.0:6001 0.0.0.0:0 LISTENING
TCP 0.0.0.0:6002 0.0.0.0:0 LISTENING
TCP 0.0.0.0:6004 0.0.0.0:0 LISTENING
TCP [::]:6001 [::]:0 LISTENING
TCP [::]:6002 [::]:0 LISTENING

To fix this issue, there is a workaround wich will cause RPC over HTTPS to resolve the IPv4 address where port 6004 is listening. This can be achieved by doing the following:

Open the hosts file located at %SystemRoot%\system32\drivers\etc\ by using an editor such as Notepad.
  1. Comment out the line “:::1 localhost”
  2. Add the following lines:
  • 127.0.0.1 localhost
  • 102.54.94.97 rhino.acme.com # Host Exchange server
  • 102.54.94.97 rhino
I also had to Disable IPv6 on the Exchange Server's by editing registry using this steps:
  • Click Start, and then click Run.
  • Type regedit in the Open box.
  • Using Registry Editor, locate the following registry key: "HKEY_Local_Machine\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"
  • Right-click the Parameters key, click New, and then click DWORD (32-bit) Value. For the key, add the following values:
Name: DisabledComponents
Data: 0xFFFFFFFF

Microsoft has released a fix for automatically disabling IPv6, you can download this here, Click Run in the File Download dialog box and follow the steps in the wizard.

N/B: Avoid disabling IPv6 by unchecking box for Internet Protocol Version 6 (IPv6) on the Local Area Connection Properties.

There is plenty of Information about this issue on the internet, but this was just my experience