Exchange 2010 Client Access behavior in coexistence with Exchange 2003 and 2007

I answered a post on Technet regarding this so I thought I would post it here as well.

There is no possibility to replace a Exchange 2007 CAS server with a Exchange 2010 CAS server. Exchange 2010 CAS does not support rendering mailboxes from legacy versions of Exchange. In the scenarios below I have included both Exchange 2003 and 2007.

For OWA:

  • When the Exchange 2007 mailbox is in the same AD Site as Exchange 2010 CAS, Exchange 2010 CAS will silently redirect the session to the Exchange 2007 CAS.
  • When the Exchange 2007 mailbox is in another Internet facing AD Site, Exchange 2010 CAS will manually redirect the user to the Exchange 2007 CAS.
  • When the Exchange 2007 mailbox is in a non-Internet facing AD site, Exchange 2010 CAS will proxy the connection to the Exchange 2007 CAS.
  • When the server is running Exchange 2003, Exchange 2010 CAS will silently redirect the session to a pre-defined URL.

For ActiveSync:

  • When the Exchange 2007 mailbox is in the same AD Site as Exchange 2010 CAS and the device supports Autodiscover, Exchange 2010 CAS will notify the device to synchronize with Exchange 2007 CAS.
  • When the Exchange 2007 mailbox is in the same AD Site as Exchange 2010 CAS and the device does not support Autodiscover, Exchange 2010 CAS will proxy the connection to Exchange 2007 CAS.
  • When the Exchange 2007 mailbox is in a non-Internet facing AD site, Exchange 2010 CAS will proxy the connection to the Exchange 2007 CAS.
  • When the server is running Exchange 2003, Exchange 2010 CAS will proxy the connection.

For Outlook Anywhere:

When migrating Outlook Anywhere you move the Outlook Anywhere endpoint from the Exchange Exchange 2007 CAS to the Exchange 2010 CAS. Exchange 2010 CAS will then proxy the Outlook MAPI RPC to either the Exchange 2007 Mailbox server or the Exchange 2010 Mailbox server depending on the mailbox home server.

So in all scenarios for OWA and Activesync you would still need the Exchange 2007 CAS to handle requests for Exchange 2007 mailboxes. Thanks for reading and as usual, please let me know if you have any further questions!

Error when doing export-mailbox and import-mailbox in Exchange Server 2010

I just got a question from a customer that was trying to import a number of pst files to to Exchange 2010. This is the error message they received:

Error was found for because: Error occurred in the step: Approving object. An unknown error
has occurred., error code: -2147221219
    + CategoryInfo          : InvalidOperation: (0:Int32) [Import-Mailbox], RecipientTaskException
    + FullyQualifiedErrorId : CFFD629B,Microsoft.Exchange.Management.RecipientTasks.ImportMailbox

There is a known bug in Exchange 2010 that causes export-mailbox and import-mailbox commands to fail on an Exchange Server that has both the CAS and Mailbox role installed.

To solve this you can either do the import/export via Outlook or install a separate Exchange 2010 server. Make sure that you only install the Mailbox role together with Outlook 2010 64-bit on this server.

When you are done, or the bug is fixed, you can uninstall the temporary import/export server using add/remove programs. This will remove Exchange from the server as well as remove all information regarding the server in Active Directory.

According to Microsoft Support this issue is expected to be fixed in update rollup 5 of Exchange 2010 server. I have also seen posts about a fix in Service Pack 1 so time will tell… Good luck and please don’t hesitate to let me know if you run in to any other issues.

How Microsoft IT Deployed Exchange 2010 on Premises!

A very interesting and highly recommended recording! Luisa Garcia Zapata, Microsoft IT Service Manager, describes how Microsoft IT took on the task of deploying Exchange 2010.

Watch it here:

MCT Live Summit 2010

I just wanted to remind all fellow MCTs out there to join the MCT Live Summit 2010 in York 25-27 of August. This will be a great opportunity to network with other MCTs as well as attend a large number of different sessions. Don’t miss it!

More information can be found on the official MCT Live Summit 2010 site:

Create, View and Modify Custom DSN Messages in Exchange 2007 and 2010

Following up on my post about NDRs, this post describes how to work with custom DSN messages.

First, let’s talk a bit about DSN messages or Delivery Status Notifications. DSNs are system messages intended to report the delivery status of a messages back to the sender, informing him or her if and why the message fail for any reason. Delivery status notifications comes in three different types:

  • Success (2.X.X numeric codes)
  • Persistent transient failure (4.X.X numeric codes)
  • Permanent failures (5.X.X numeric codes)

When a message can not be delivered for some reason a error is reported and the server maps this error to a DSN. The 5.X.X are described as permanent failures and are the most common messages. However, you may also see 4.X.X codes from times to times .

Delivery status notifications are addressed in RFC 1891 and 1893. More detailed information on codes can be found here:

New Custom System Message

Now, on to the fun stuff! In my example, I will create a custom DSN for code 5.7.1 and enable it for external senders. I will also create a custom DSN for code 5.1.1 for internal senders. Lets start with looking at the commands…

New-SystemMessage creates a new custom system message. you will have to include the code you want to “replace” and also the message you want the DSN to include. In my example the command looks like this:

New-SystemMessage -DSNCode 5.7.1 -Text "This server does not accept relaying" -Internal $False -Language En

I also created one message for Swedish using -Language Sv.


In my second example i want my custom DSN to be sent to internal senders:

New-SystemMessage -DSNCode 5.1.1 -Text "The user does not exist, please contact the helpdesk for further assistance" -Internal $True -Language En

Again, I created a second message for Swedish as well.


And here are the result when I tried to send a messages to the non-excisting address test@sundis.local:


View Both Custom and Original System Messages

So, the message is created, now what? Well, if you want to view your new message you can use the following command:


This lists all custom system messages and note that the identity is presented in a path-like way starting with the language.


You can also list the original message that matches the newly created custom system message. If you run the following command you will list all system messages.

Get-SystemMessage –Original

To narrow it down, use where as in this example:

Get-SystemMessage -Original | where {$_.identity –eq ‘en\internal\5.7.1’}


Change a Custom System Message

If you want to change a custom system message you can do so easily using Set-SystemMessage as in this example:

Set-SystemMessage -Identity en\External\5.7.1 -Text "This server does not accept relaying, so don’t even try it!"


Remove Custom System Messages

And the last system message command that I’m going to cover is Remove-SystemMessage. In this example I will remove one of the messages I created before:

Remove-SystemMessage –Identity en\External\5.7.1


To remove all custom system messages use this command:

Get-SystemMessage | Remove-SystemMessage


I could have typed a to accept the removal of all messages instead of typing one y per message. But I wanted to show you that it removed all three messages in that single command.

One more thing…

Not that hard right? There is one more thing to consider though. Many email-servers have the habit of rewriting DSN messages to make it more user-friendly, including all Exchange servers. So even if you configure a neat DSN message for external senders they might not see it because their server applied a user friendly standard DSN.

In theory, if both servers run Exchange and they have the same version they should leave the custom DSN alone and present it to the user instead of rewriting it. I still haven’t seen this working in real life…

There is one thing you can do to prevent overwriting if you are running Exchange Server 2007 Service Pack 1 Update Rollup 4 or later. You can use the Set-TransportConfig -DSNConversionMode and the parameter comes with three different settings:

  • UseExchangeDSNs
  • PreserveDSNBody
  • DoNotConvert

UseExchangeDSNs is default and you can change it with the following command:

Set-TransportConfig –DSNConversionMode DoNotConvert


That’s all for this time, good luck with the messages. Thanks for reading and please, don’t hesitate let me know if you run in to any problems!