Exchange 2010 message routing to public folders stuck

If you have two or more public folders databases in Exchange 2010 servers then you stosmailiprobably think that you have HA for public folders.

All of your public folders are replicated between those public folders databases and you think that when you will lost one server with PF database then you have another one and you wll have no problem with public folders.

If you think that then you are wrong !

In mailbox database you can specify public folder database for this mailbox database.

But if you shutdown one Exchange 2010 server with Public Folders database like your default server with PF’s then you will see that messages sent to mail enabled public folders stuck at the delivery queue on each Hub Transport server.
When you check this queue you will see that all of those messages are trying to get to public folder database on shutdown server, they are not redirected to available public folders database on another server.

So how to resolve this problem ?

First Microsoft recommend to install at least RU4 for Exchange 2010 SP2.
But this won’t help to resolve this problem.

You need to do something more.

In C:\Program Files\Microsoft\Exchange Server\V14\Bin directory find file:

EdgeTransport.exe.config

Edit it and manually add the following information to EdgeTransport.exe.config file:

<add key="SmartRoutingForPublicFoldersEnabled" value="True" />

Now save and restart Exchange Transport Service.

You need to do this on each Exchange 2010 Hub Transport server.

Now you will get fully redundant environment with Public Folders.

If one server with public folders database is missing then message are routed to another server with public folders database.

If this server will be missing for long time then remember to change default Public Folder database in mailbox database settings.

 

Distribution List members report

When you want to have report of your distribution groups with information who belong to these groups you can create PowerShell script to write each group to separate file with all members.

First you need to decide if you wan to specify distribution groups (like in file) or you want to get all distribution groups.

To get groups from file use:

$DLs = get-content d:\scripts\DLgroups.txt

to get all distribution groups use:

$DLs = get-distributiongroup -resultsize unlimited | select name
foreach ($dl in $DLs){
 if (!(get-distributiongroup $dl)){
 Write-Host "$dl is not valid"
 } else {
 $dl_tmp = get-distributiongroup $dl
 $outfile = "d:\scripts\DL_$($dl_tmp.name)_.txt"
 Add-Content $outfile get-Date
 Add-Content $outfile "$($dl_tmp.name) $($dl_tmp.SMTPAddress)" 
 Add-Content $outfile "Members"
 Add-Content $outfile "Alias;Displayname;Company;Title;emailaddress"
 $members = get-distributiongroupmember $($dl_tmp.alias)

 foreach ($member in $members){
 $user = $member.alias + ";" + $member.DisplayName + ";" + $member.Company + ";" + $member.Title + ";" + $member.primarysmtpaddress.local + "@" + $member.Primarysmtpaddress.domain 
 Add-Content $outfile $user
 }
 } 
}

With this short script you will get one file for each distribution group with members of this group.

 

 

Analyzing Exchange Transaction Log Generation Statistics script

Exchange Team Blog released great script to get transaction logs statistics.

With this script you can easily plan deploying your Exchange Servers.
As a output of this script you will get information about transaction logs which where generated during specified time.

Now you can determine how many transaction logs are generated on an hourly basis. This helps figure out how much bandwidth will be required when replicating database copies between sites, and what the effects will be of adding additional database copies to the solution. If designing an Exchange solution using the Exchange Server Role Requirements Calculator, the percent of logs generated per hour is an optional input field.

Continue reading

Exchange Server Deployment Assistant new better version

Exchange Team Blog released new version of great tool Exchange Server Deployment Assistant. 

This version was released on 10/02/2013

The Exchange Server Deployment Assistant now combines all the on-premises and hybrid deployment scenarios from both the Exchange 2013 Deployment Assistant and the Exchange 2010 Deployment Assistant into a single tool. We’ve eliminated the need for the installation of Silverlight and provide guidance for all Exchange Server deployments in a true one-stop shop experience. We’ve also kept the same, convenient question-and-answer format to create a customized, step-by-step checklist with instructions to deploy Exchange 2013 or Exchange 2010.

 

Using this tool first you need to select the one of the three basic deployment tracks:

  • On-premises
  • Hybrid
  • Cloud Only

ExchangeDeploymentAssistant

Continue reading

Exchange 2010 hide distribution list members

In Microsoft Exchange 2003, hiding the membership of a distribution list was very easy, just right click Exchange Tasks>Hide Membership in the Exchange System Management console

Unfortunately this feature is not available in Exchange 2010.

To hide members of distribution group you can use dynamic distribution group, which enumerate the group membership based on an LDAP query for a particular attribute being set on the user object.

But if you don’t want to use dynamic distribution group or members of this group can’t be connected by any attribute, then you can modify distribution group object using ADSIEDIT to modify hideDLMembership attribute.

Open ADSIEDIT console, find distribution group, open properties and find hideDLMembership then set value of this attribute to True.

 

DLHide

 

This modification will prevent the expansion of groups in Outlook and OWA

 

DLHideOutlook

 

 

Exchange 2010 OWA Help url change

If you have your own website where help files are located, then you can change OWA Help url to point to this website.

Then users will use yours help documents published by Helpdsk.

 

By default OWA Help url opens website:

http://help.outlook.com/pl-PL/140/ms.exch.owap.MailPremium.aspx

 

To change OWA Help URL you need to run EMS and then type:

Set-ExchangeAssistanceConfig -OWAHelpURL "http:\\mywebsite\owahelp.html"

 

You can easly change others urls used in Exchange environment like: ControlPanel, OWA, Windows Live Account etc.

 

To get list of all of those links, use command:

Get-ExchangeAssistanceConfig

 

OWAHelpURL

Microsoft.Exchange.RpcClientAccess.Service.exe process cause excessive CPU usage on Client Access servers in an Exchange Server 2010 environment

On Microsoft Support website you can find article about high CPU usage on Client Access Server.

 

CPU_usage

 

 

 

This issue can occur in following scenario:

  • You deploy some public folder databases in a Microsoft Exchange Server 2010 environment that has Update Rollup 5 version 2 for Exchange Server 2010 Service Pack 2 (SP2) or a later-version update rollup installed.
  • The environment contains multiple Active Directory sites.
  • The default public folder server is unavailable. So, the Microsoft Exchange RPC Client Access service tries to connect to other public folder servers.

 

In this scenario, the Microsoft.Exchange.RpcClientAccess.Service.exe process consumes excessive CPU resources on one or more Client Access servers in the site. Additionally, Microsoft Outlook clients cannot connect to Exchange servers, or they encounter slow performance when they connect to Exchange servers.

To resolve this issue, install the following update rollup:

2866475 Description of Update Rollup 2 for Exchange Server 2010 SP3

More information you can find here…

 

List of Exchange 2010 Mailboxes with Archive enabled

If you are using Exchange Archive Online, sometimes you need to identify mailboxes with enabled Archive.

To get list of Archive enabled mailboxes you can use EMS console and following command:

 

Get-Mailbox -ResultSize Unlimited | where {$_.ArchiveDatabase -ne $Null}

 

As a result you will get list of all mailboxes with Archive Online enabled, but you won’t get information about database where this archive is stored.

 

To get list of all mailboxes with information where are they in databases you can use following command:

Get-Mailbox -ResultSize Unlimited | where {$_.ArchiveDatabase -ne $Null} | Select Name, ArchiveDatabase, ArchiveName

 

 

 

Exchange 2010 SP3 RU2 and Exchange 2010 SP2 RU7 released

Microsoft released Rollups for Exchange 2010 SP3 and Exchange 2010 SP2.

Exchange 2010 SP3 Rollup 2 can be downloaded here:

Update Rollup 2 For Exchange 2010 SP3 (KB2866475)

and list of changes can be found here:

KB2866475

After installation of this rolllup you will get Exchange system version 14.03.158.1

Following fixes are included in this release:

  • 2861118 W3wp.exe process for the MSExchangeSyncAppPool application pool crashes in an Exchange Server 2010 SP2 or SP3 environment
  • 2851419 Slow performance in some databases after Exchange Server 2010 is running continuously for at least 23 days
  • 2859596 Event ID 4999 when you use a disclaimer transport rule in an environment that has Update Rollup 1 for Exchange Server 2010 SP3 installed
  • 2873477 All messages are stamped by MRM if a deletion tag in a retention policy is configured in an Exchange Server 2010 environment
  • 2860037 iOS devices cannot synchronize mailboxes in an Exchange Server 2010 environment
  • 2854564 Messaging Records Management 2.0 policy can’t be applied in an Exchange Server 2010 environment

 

Also Microsoft released RU7 for Exchange 2010 SP2 which can be downloaded here:

Update Rollup 7 for Exchange Server 2010 Service Pack 2 (KB2874216)

Description of RU7 for Exchange 2010 SP2 can be found here:

KB2874216

After installation of this rolllup you will get Exchange system version 14.02.375.0