I’ve been migrating some of our slower customers away from Exchange 2003 recently, and I ran into a issue that took me 3 days to figure out. I was getting the following erorr on the 2010 Server:
Couldn't find an Exchange 2010 or later public folder server with a replica for the free/busy folder: EX:/O=FIRST ORGANIZATION/OU=FIRST ADMINISTRATIVE GROUP despite successfully running the AddReplicaToPFRecursive.ps1 on the \NON_IPM_SUBTREE\ Top Public Folder. On the 2003 server, all folders, including the Free/Busy folders displayed two replicas, one for 2003 and one for 2010.
I eventually moved all replicas from the 2003 server and removed the PF database hoping that it would force any replicas that remained and perhaps weren’t being displayed properly over to the 2010 server, and I was prompted to do just that, but still I continued to receive the error stated above.
The reason that I’m posting this is not that it’s a new issue, it seems like it’s a pretty common problem, but rather the hard time I had finding the correct resolution online. Perhaps my search terms were off, but in case The way to solve this is as follows:
On the 2010 server, run the following commands:
Set-PublicFolder -Replicas '2010 Public Folder Database' -Identity '\NON_IPM_SUBTREE\SCHEDULE+ FREE BUSY\EX:/o=First Organization/ou=First Administrative Group'
and then verify it worked:
Get-publicfolder -recurse '\Non_IPM_SubTree\SCHEDULE+ FREE BUSY\EX:/o=First Organization/ou=First Administrative Group' |fl
3) restart the “Microsoft Exchange Mailbox Assistants” service
Over this past weekend I ran into an issue with Exchange 2010 Service Pack 3. Even though my Exchange server’s clock was sync’d with my Domain Controller the Exchange server was unable to start the Exchange IS service, and instead was logging the error:
Event 5003: Unable to initialize the Information Store service because the clocks on the client and server are skewed. This may be caused by a time change either on the client or on the server, and may require a restart of that computer. Verify that your domain is correctly configured and is currently online.
After a few reboots, and verification that the windows clocks were actually in sync, I thought to check that the clock in the BIOS was properly configured. Since these machines are VMs on VMWare ESXi, I logged into vCenter and checked my ESXi host. Sure enough one of the three hosts was not configured to use an NTP server, and it’s local clock was off. I fixed that setting and rebooted the exchange server one more time, the server was then able to start the Information store service.
We ran into an issue today where an older application that we use couldn’t log into our new exchange server when trying to pop mail. (why are we trying to pop when we have Exchange? that’s another story for another day). The Error we kept getting was “ERR Command is not valid in this state”. It’s a pretty simple fix, we just need to enable plain text login for this older application.
- Log into your Exchange 2010 CAS server
- Open the Exchange Management Shell
- Issue command
Set-PopSettings -LoginType PlainTextLogin
- Restart the Exchange POP Service
That’s it. Give the application another go and you should be able to start POPing mail.
I ran into a problem this week where a user was sending email to an external email address and the message would leave outlook, but never arrive. Interestingly this user also could not send email to another internal user who was configured for forward to this same external address(via a contact in Active Directory). Other users were able to send messages both to the internal user (and have them forward) as well as directly to the external email address without issue.
I did some google-ing on the 420 4.2.0 RESOLVER.ADR.Ambiguous; ambiguous address and kept coming up with results that wanted me to check for duplicate proxy addresses in exchange. See this article for how to figure that out: here. After searching I was unable to find the duplicate entry, so I moved on.
What I ended up doing was deleting the external contact, re-creating it, re-set up forwarding for the internal user in question and then tested again. As soon as that contact was deleted the submission queue started to empty, and inital user who reported the problem was now able to send to both addresses, just like the other internal users.
Not an elgant fix, but I figured I’d share it anyway due to the low number of results that I found on google when searching for a resolution.
I stumbled upon this script earlier today, it was posted on msunified.net. This is script is great! a one stop shop for setting all of the necessary URLs needed for both internal and external access.
Copy this to a text file, save it with a .ps1 extension, and then open it and run it from the Exchange Management Shell ( ./<scriptname>.ps1 )
#Changing InternalURL Path
$urlpath = Read-Host "Type Internal Client Access FQDN starting with http:// or https://"
Set-AutodiscoverVirtualDirectory -Identity * –internalurl “$urlpath/autodiscover/autodiscover.xml”
Set-ClientAccessServer –Identity * –AutodiscoverServiceInternalUri “$urlpath/autodiscover/autodiscover.xml”
Set-webservicesvirtualdirectory -Identity * –internalurl “$urlpath/ews/exchange.asmx”
Set-oabvirtualdirectory –Identity * –internalurl “$urlpath/oab”
Set-owavirtualdirectory –Identity * –internalurl “$urlpath/owa”
Set-ecpvirtualdirectory –Identity * –internalurl “$urlpath/ecp”
Set-ActiveSyncVirtualDirectory -Identity * -InternalUrl "$urlpath/Microsoft-Server-ActiveSync"
#Changing ExternalURL Path
$urlpath2 = Read-Host "Type External Client Access FQDN starting with http:// or https://"
Set-AutodiscoverVirtualDirectory -Identity * –externalurl “$urlpath2/autodiscover/autodiscover.xml”
Set-ClientAccessServer –Identity * –AutodiscoverServiceInternalUri “$urlpath2/autodiscover/autodiscover.xml”
Set-webservicesvirtualdirectory –Identity * –externalurl “$urlpath2/ews/exchange.asmx”
Set-oabvirtualdirectory –Identity * –externalurl “$urlpath2/oab”
Set-owavirtualdirectory –Identity * –externalurl “$urlpath2/owa”
Set-ecpvirtualdirectory –Identity * –externalurl “$urlpath2/ecp”
Set-ActiveSyncVirtualDirectory -Identity * -ExternalUrl "$urlpath/Microsoft-Server-ActiveSync"
#get commands to doublecheck the config
get-AutodiscoverVirtualDirectory | fl identity,internalurl, externalurl
get-ClientAccessServer | fl identity,AutodiscoverServiceInternalUri
get-webservicesvirtualdirectory | fl identity,internalurl,externalurl
get-oabvirtualdirectory | fl identity,internalurl,externalurl
get-owavirtualdirectory | fl identity,internalurl,externalurl
get-ecpvirtualdirectory | fl identity,internalurl,externalurl
get-ActiveSyncVirtualDirectory | fl identity,internalurl,externalurl