Quick Tip: Fix “Enable Web-based distribution” greyed out in offline address book
After upgrading from Microsoft Exchange 2003 to Exchange 2007 or 2010 you might notice that the "Enable Web-based distribution" option is greyed out. The first thing to check is if you have moved the Offline Address Book generation to an Exchange 2007/2010 server.
However if you have already done this and the option is still disabled it can easily fixed by running ApplyMandatoryProperties on it. This can be done by running the below powershell command
Get-OfflineAddressBook | Set-OfflineAddressBook -ApplyMandatoryProperties
Et voila! you can now "Enable Web-based distribution"
Outlook mail forwarding rule to external address not working
You might notice that, your Microsoft Exchange environment, if your users setup outlook rules to automatically forward their emails to an external email address, these rules will not work and the forwarded email will never leave your organization.
This is because Exchange blocks, by default,automatic forwarding message. To solve this problem you will need to follow the below steps
Outlook Web Access did not initialize error on Exchange 2007 SP1 after installation of Rollup 5
Installing the rollup update 5 on a machine running Microsoft Exchange 2007 SP1 might cause your Outlook Web Access, OWA, to fail with error Outlook Web Access did not initialize
I have already experienced this error at 2 of my customers on fresh installations and I am surprised I didn't find this error documented at Microsoft (Maybe I didn't look hard enough)
The problem is that, for some weird reason, the installation of the rollup update 5 is removing the Exchange server from the Exchange Domain Servers group !
So if you are facing this issue simply find that group, add your exchange server account to it and restart your server. That should do it!
Autodiscover/Outlook anywhere fails when using a wildcard certificate
A very common issue faced with people who buy a wildcard certificates is that Autodiscover and Outlook Anywhere will not work because the Certificate Principal Name *.domain.com doesn't match the name returned by the autodiscover service server.domain.com
This issue is a pretty easy fix it is enough to run from Exchange Management Shell to match the Certificate Principal Name with the setting returned by the autodiscover service.
Set-OutlookProvider -Identity EXPR -CertPrincipalName msstd:*.domain.com
You can verify the changes you have done by running
Get-OutlookProvidernew-TestCasConnectivityUser.ps1 fails with Verify that OU ( Users ) exists
When trying to run the new-TestCasConnectivityUser.ps1 script the latter might fail with the following error
CreateTestUser : Mailbox could not be created. Verify that OU ( Users ) exists and that password meets complexity requirements.
The first thing you need to do is making sure that the password does meets complexity requirements however if you did and still having the failure you most probably have multiple OUs with name "Users" and that is why the script is failing.
Quick Tip: Restarting all Microsoft Exchange services
There are times when you need to restart all Exchange related services so here are 2 small scripts that will help you achieve this without going over each service in the Services mmc.
Of course restarting the "Microsoft Exchange Active Directory Topology" will restart a most of them but these 2 will restart them all.
Restarting All Running Services
This will get all services starting with MSexchange that are running and restart them.
$services = Get-Service | ? { $_.name -like "MSExchange*" -and $_.Status -eq "Running"} foreach ($service in $services) {Restart-Service $service.name -Force}
Restarting All Running Services with startup type Automatic
Although the above script should be enough in most cases, it will not restart any Microsoft Exchange related service that is supposed be running but is not for any reason. Here is another version of the script that would take care of this issue, note that we are looking for all services starting with MSExchange with startup type Automatic and restarting them
$services = get-wmiobject win32_service | ? {$_.name -like "MSExchange*" -and $_.StartMode -eq "Auto"} foreach ($service in $services) {Restart-Service $service.name -Force}
That's it for now
