Inbound Mail Flow Stops to Exchange 2013 Server

Over the past couple of weeks, I have performed a few transitions to Exchange 2013 and each have had a similar issue with inbound mail flow stopping, both oddly enough with a Barracuda spam firewall at the front end.  The issue occurs when mail flow is transitioned from a legacy server to a new Exchange 2013 server where mail flows initially but comes to a complete halt (queued on the Barracuda) after you think all is good.  When the Barracuda is repointed to the legacy server, inbound mail flow resumes its normal function.

What I have found out, in these specific scenarios, is that the default receive connector on the Exchange 2013 server(s) has to be modified.  The default receive connector has an initial limit of 2% for inbound connections from a single IP address for the MaxInboundConnectionPercentagePerSource setting and an initial setting for MaxInboundConnectionPerSource of 100 connections from a single IP address.  Unless you anticipate a very small amount of inbound email, I recommended changing one of these two settings.

To resolve the issue in both cases, I set “MaxInboundConnectionPercentagePerSource” to 100 percent on the default receive connector of the Exchange 2013 server(s).  The command you will need to run from the Exchange Management Shell (EMS) on a 2013 server is…

  • Set-ReceiveConnector -MaxInboundConnectionPercentagePerSource 100

After this change, you can restart the 2013 transport service and repoint the Barracuda to the 2013 server to resume normal mail flow.

For additional information about Exchange 2013 message throttling and receive connector settings, refer to these two TechNet articles…

I am certain there are probably alternate resolutions, therefore I welcome your comments and suggestions.

Thanks and good luck.

Todd (@oddytee)

Advertisements

Simplify OWA URL for Exchange 2010

Here are several references to simplify the URL for OWA.

Redirecting OWA URLs in Exchange 2010… http://briandesmond.com/blog/redirecting-owa-urls-in-exchange-2010/

Redirect OWA Exchange 2010 & Exchange 2013 – The Cool and Easy Method… http://blogs.msmvps.com/acefekay/2013/04/16/redirect-owa-exchange-2010-exchange-2013-the-cool-and-easy-method/

NOTE: As of 24 Sep 2013, URL redirection for OWA in Exchange 2013 does not work with the above steps or the MS TechNet article. For simplifying the Exchange 2013 OWA, click here.

Simplify the Outlook Web App URL… http://technet.microsoft.com/en-us/library/aa998359(v=exchg.150).aspx

Simplify the Outlook Web Access URL… http://terrytlslau.tls1.cc/2011/04/simplify-outlook-web-access-url.html

Simplify the Outlook Web App URL… http://martijnwestera.blogspot.com/2012/02/simplify-outlook-web-app-url.html

by Todd Nelson (@oddytee)

Room Lists in Exchange 2013

Creating room lists in Exchange 2010 has developed over time into a process that is fairly easy to implement and visually see (Recipient Configuration > Distribution Group).  However, Exchange 2013 is not quite there yet.

It is true with both Exchange 2010 and 2013 you have to create a room list via EMS.

With Exchange 2010, a distribution group can be converted to a room list…

     Set-DistributionGroup -Identity “West Coast Office” -RoomList

However, with Exchange 2013 CU1 (using the same command syntax), a distribution list cannot be converted to a room list…

     Set-DistributionGroup -Identity “East Coast Office” -RoomList

This is the error receive in the 2013 EMS…

Group “domain1.local/Test/East Coast Office” can’t be converted to a room list. Room lists can only have room mailboxes or room lists as members.
“domain1.local/Exchange Users/Test-Admin” is not a room mailbox or a room list.
    + CategoryInfo          : NotSpecified: (domain1.local/Test/East Coast Office:ADObjectId) [Set-DistributionGroup], TaskInvalidOperationException
    + FullyQualifiedErrorId : F25FFBB1,Microsoft.Exchange.Management.RecipientTasks.SetDistributionGroup
    + PSComputerName        : d1-ex13-01.domain1.local

In order to create a room list in Exchange 2013, we have to create a new distribution list as a room list from the very beginning.  Using EMS, we should be able to issue a command similar to the following to create our new room list…

     New-DistributionGroup -Name “East Coast Office” -OrganizationalUnit “domain1.local/Test” -RoomList

Upon successful creation, we will see that the request is completed with the details of the new room list displayed (Name, DisplayName, GroupType, PrimarySmtpAddress).

The biggest difference for me between 2010 and 2013, is that in 2010 we can see the room list (in EMC) after it has been created (or converted).  In 2013 CU1, room lists are not displayed in the EAC under Recipients > Groups–and they are nowhere to be found in the EAC.

But there is a way to confirm they have been created.  Use the following command to display all distribution groups and what type they are…

     Get-DistributionGroup | ft -auto Name, RecipientType, RecipientTypeDetails

Once we have confirmed the new room list has been created we can add members to it.

NOTE: We can only add room mailboxes (or other room lists) to room lists or we will receive an error message similar to this…

     “Only room mailbox or room list can be added into room list”

At this point, make sure you have a room mailbox to add to a room list.  Once you have identified your list of room mailboxes that will be added to your room list, use the following command to add room mailboxes as members of the room list…

     Add-DistributionGroupMember -Identity “East Coast Office” -Member ConfRoomA@domainname.com

Use the same syntax to add other room mailboxes to your room list.

Now that we have created a room list and assigned room mailboxes to it, scheduling conference rooms for a specific location should be easy using the Office Outlook client or Exchange 2013 OWA.

Reference(s): Scheduling Meetings with Room Finder

by Todd Nelson

On-premise Mail Flow Issue After AD FS Decommission

In my lab last week, I decommissioned AD FS and DirSync to bring Exchange back on-premise after a brief period of co-existence.  The only federated user I had for this environment was no longer able to receive mail in to the on-premise mailbox–however I could send as that user.  The inbound SMTP logs all showed the communication but no successful completion of the connection.

I confirmed the TargetAddress attribute was no longer pointing to the onmicrosoft.com address.

The NDR message received looked like this…

     Delivery has failed to these recipients or distribution lists:

     User

     A problem occurred during the delivery of this message. Microsoft Exchange will not try to redeliver this message for you. Please try resending this message later, or provide the following diagnostic text to your system administrator.

     Diagnostic information for administrators:

     Generating server: exchangeserver.domainname.local

     user@domainname.com

     #< #5.4.6> #SMTP#

The local administrator account also has a mailbox and is able to receive external messages without an issue.  And when I checked this mailbox found NDR messages similar to those just below.  Luckily, I set up the administrator mailbox as the postmaster to be able to see this information…

     The following recipient(s) cannot be reached:

           User on 5/13/2013 11:09 AM

                 A configuration error in the e-mail system caused the message to bounce between two servers or to be forwarded between two recipients.  Contact your administrator.

                 <exchangeserver.domainname.local #5.4.6>

I was able to use the information above to trigger a thought, “Eventhough I removed the reference to onmicrosoft.com, maybe the TargetAddress attribute is still not correct”.

That is when I noticed my mistake, I changed to user@domainname.onmicrosoft.com to user@domainname.com and this is the reason the mailbox would not receive emails–from external and internal senders.  The TargetAddress attribute must be cleared if you want mail to flow properly into an on-premise mailbox.  Any value that is set in this field will attempt to send the message out of the environment even when that email address is local to the environment.  Once the TargetAddress attribute was cleared to <Not Set>, mail flow resumed.

by Todd Nelson

Import PSTs into Office 365 via PST Capture

Recently, I needed a somewhat automated way import PST files (gathered from an on premise Exchange 2010 SP3 environment) to mailboxes in Office 365.  Though importing through PowerShell was somewhat appealing, it also was not appealing.  Instructing the users or help desk group to manually import each PST via Outlook drew a similar reaction.  I had heard of Exchange PST Capture but had never used it.  However, it seemed like it would be a much more elegant way of performing bulk PST imports.  Prepping a machine for PST Capture was a chore but once all was set up it worked smoothly.

The biggest challenges with this project were: getting the machine ready for the PST Capture Console, dialing in permissions to import PSTs (both on premise and in Office 365) and locating the Office 365 server.

PST Capture Console…

Requirements for the PST Capture Console weren’t necessarily difficult but they were not anticipated for sure.  We used a VM with Windows 7 Enterprise with SP1 that had a single CPU and 4GB of RAM.  If importing PSTs to an on premise Exchange server, the console requires the Exchange environment to be 2010 or 2013.  And if importing to the cloud, O365 Exchange Online is required.  In general, the console machine requires .NET Framework 4.5, PowerShell 3.0 (which is found in Windows Management Framework 3.0) and the 64-bit version of Outlook 2010 (this is only required on the console and not any other workstations).

Permissions…

I created a “PST Admin” account on premise (with a mailbox) to handle the migration for both internal and cloud-based PST migrations.  On premise, this account need only to have domain user rights by default but must be assigned Organization Management and Public Folder Management along with assigning a new role to allow import/export access of the mailboxes.  To perform this new role assignment, I issued the following command…

New-ManagementRoleAssignment -Role “Mailbox Import Export” -User “PSTAdmin”

Additionally, I provided access for this user the mailbox database by issuing this command…

Get-MailboxDatabase -Identity “Mailbox DB 1” | Add-ADPermission -User “PSTAdmin” -AccessRights GenericAll

With the basic permissions set for importing to an on premise mailbox, I needed to perform a couple of tasks on the PST Capture console machine itself.  First, I assigned the PST Admin account local admin rights to the machine and second created an Outlook profile to access the mailboxes.  If the second is not performed an error will be generated when attempting to import a PST that the destination mailbox is not accessible.

To import PSTs into a mailbox in Office 365, similar permissions need to be set up for accessibility.  In my scenario I used the existing Office 365 tenant admin.  Within the Exchange Admin Center of Office 365, I created a new admin role named “Migration Impersonation” with assigned roles of “ApplicationImpersonation” and “Mailbox Import Export” for the O365 admin.

Import…

To import PSTs into a mailbox in Office 365 we needed to know (or find out) a couple of details.  One is the username and password of the O365 account we will be using to import PSTs and the other is the name of the Office 365 server.  The first is easy.  The second can be a bit of a chore.

Finding Office 365 server name…

With the older version of Office 365, sign into the portal, access the mailbox, click on the question mark then select About.  In the About window, locate the Host Address.  It should look similar to https://bluprd0711.outlook.com/owa which is similar to what is found for the URL in the browser.  For the new version of Office 365 (Wave 15), I have yet to locate the name (host address) like in the previous version however it can be gleaned from the URL.

Once we have this information, open PST Capture (while signed on as PST Admin) to modify the Online Connection settings.  From the toolbar, click Tools > Settings.  The first option is Online Connection Settings.  Enter the O365 username and password.  Make certain that “Grant delegate access to this mailbox” checked.  Next, enter the O365 server name.  Do not include “https://” or anything after outlook.com (e.g. /owa).  Check the box to confirm it is an Office 365 server.  Finally, click “Check”.  This “Check” will validate connectivity to Exchange Online.

To verify the settings are correct, while performing a “Cloud Import” select the link in the Destination Mailbox column.  If all is configured properly a list of mailboxes in Exchange Online should appear.  Select a destination mailbox, click OK and proceed to import.

Caveat…

One big caveat that I discovered is that each machine you would like to scan for PSTs must have .NET Framework 4.5 installed and the PST Capture client.  If you have all PSTs consolidated into a single repository you will only have one machine to worry about.  However, if you have thousands of machines that may potentially have PSTs on them, System Center or group policy will be the best method to install the prerequisite applications.

Conclusion…

I have not documented each step on purpose as I feel it is important to understand the whole process through trial and error not to mention the tasks may vary for each environment.  However, I felt that documenting the biggest challenges I experienced was important.  Additionally, several links are provided below to reference sites used to get this solution up and running.  Hope they help you too.

Happy PST importing.

Reference(s): Exchange PST Capture, Install PST Capture, Hands on with the PST Capture Tool, Configure PST Capture Settings

by Todd Nelson

Check Current Active Directory or Exchange Server Schema Version

Need to determine what AD and Exchange Server schema versions are installed?  Run the following three commands from an elevated Command Prompt…

For Exchange Server schema version…

dsquery * “cn=ms-exch-schema-version-pt,cn=schema,cn=configuration,dc=domainname,dc=local -scope base -attr rangeUpper

For AD forest version…

dsquery * “cn=first organization,cn=microsoft exchange,cn=services,cn=configuration,dc=domainname,dc=local” -scope base -attr objectVersion

For AD domain version…

dsquery * “cn=microsoft exchange system objects,dc=domainname,dc=local” -scope base -attr objectVersion

Reference(s): http://support.microsoft.com/kb/556086

by Todd Nelson