Configure Postmaster, Microsoft Exchange Recipient and NDR forwarding in Exchange Server 2007 and 2010

Postmaster for external messages
In Exchange 2007 and 2010 it is considered best practice to configure a postmaster address in the organization. It is also a requirement to set a postmaster for all SMTP domains according to RFC 2821: http://tools.ietf.org/html/rfc2821

The postmaster address is used to send system-generated messages and notifications.

To set the postmaster address use the following command:
Set-TransportConfig -ExternalPostmasterAddress <email address>

For example:
Set-TransportConfig -ExternalPostmasterAddress postmaster@contoso.com

Microsoft Exchange Recipient for internal messages
There is also another type of recipient configuration that you need to do if you want to be able to monitor NDRs. The Microsoft Exchange recipient is a special recipient object that can be compared to an internal postmaster. The HUB transport servers forwards internal NDRs to this recipient and not the the Postmaster.

To configure an recipient for the Microsoft Exchange recipient  use the following command:
Set-OrganizationConfig –MicrosoftExchangeRecipientReplyRecipient <String>

The String can be one of the following:

  • Distinguished name (DN)
  • Canonical name
  • GUID
  • Name
  • Display name
  • Alias
  • Exchange DN
  • Primary SMTP e-mail address

Note that if the MicrosoftExchangeRecipientReplyRecipient is not configured all messages sent to the Microsoft Exchange recipient will be discarded.

NDR forwarding
Sometimes you have the need to monitor the NDRs sent through the organization. To be able to do that you will have to configure the transport configuration to send a copy of the NDRs to a specific mailbox. Note that this affects the entire organization and not a single transport server.

Using the the GenerateCopyOfDSNFor parameter you can specify which DNS codes that will be forwarded. To save you some work, Microsoft has enabled monitoring for  the following DNSs:

  • 5.4.8
  • 5.4.6
  • 5.4.4
  • 5.2.4
  • 5.2.0
  • 5.1.4

To configure forwarding use the following command:
Set-TransportConfig -GenerateCopyOfDSNFor <DSN1, DSN2, DSN3, …>

Example:
Set-TransportConfig -GenerateCopyOfDSNFor 4.4.7,5.5.2,5.7.3

Note that the use of GenerateCopyOfDSNFor requires you to configure the Microsoft Exchange recipient and/or ExternalPostmasterAddress.

OCS 2007 R2 – Deploy Server Wizard Has Failed

Recently I was doing an installation of OCS 2007 R2 Standard and I got this message when running the installation wizard:

OCSError1

In the log I found the following error message:

Failure
[0xC3EC796C] One or more errors occurred during execution of the wizard; the wizard was unable to complete successfully. Please check the log file for more information.

OCSError2

And when looking a bit further, following the link provided in the first message i found this error message:

Failure
[0xC3EC78D8] Failed to read the Office Communications Server version information. This can happen if the computer clock is not set to correct date and time.

OCSError3

Solution

According to Microsoft this can be related to Security Update for Microsoft Windows (KB974571). There are two things you can do to resolve this issue.

  1. Uninstall update KB974571.
  2. There is a fix available from Microsoft. Look under section “Resolution for these known issues” on the following link: http://support.microsoft.com/kb/974571/en-us

Prevent double bookings of resources in Exchange 2007 and 2010

Exchange 2007

This is easily done with powershell. Use the following syntax to set AllowConflicts to $false:

Set-MailboxCalendarSettings -Identity <mailbox identity> -AllowConflicts:$false

If you want to set this on all room mailboxes in one command use the following:

Get-Mailbox | where {$_.ResourceType -eq “Room” } | Set-MailboxCalendarSettings -AllowConflicts:$false

To check that this actually worked you can use the following command:

Get-MailboxCalendarSettings -Identity <mailbox identity> | fl

Confirm that AllowConflicts is set to $false.

Exchange 2010

In Exchange 2010 the MailboxCalendarSettings har been removed and you should use Set-CalendarProcessing instead:

Set-CalendarProcessing -Identity <mailbox identity> -AllowConflicts:$false

If you want to set this on all room mailboxes in one command use the following:

Get-Mailbox | where {$_.ResourceType -eq “Room” } | Set-CalendarProcessing -AllowConflicts:$false

And to make sure that it worked:

Get-CalendarProcessing -Identity <mailbox identity> | fl

Update Rollup 3 for Exchange Server 2007 Service Pack 2

As usual you can find more information on the subject on Microsoft Support: http://support.microsoft.com/Default.aspx?kbid=979784

If you want to go straight to the download you can find it here: http://www.microsoft.com/downloads/details.aspx?FamilyID=c781326a-7b81-444d-9836-760fa1e3a28a&displaylang=en

Exchange Server Deployment Assistant

For all of you that didn’t know, there is a very good tool to help you on your way through the planning for the migration to Exchange Server 2010. The tool is called Exchange Server Deployment Assistant and it is a web-based guide that not only provides information on what you need to keep in mind when performing the migration, it also gives you a checklist covering all the required steps.

You can find it here: http://technet.microsoft.com/en-us/exdeploy2010/default.aspx#Home, make sure that you check it out before migrating!

Change Receive and Send Connector Ports in Exchange 2007 and 2010

Receive Connectors

To list all Receive Connectors use the following syntax:

Get-ReceiveConnector | fl

First we need to add all the bindings we want into a variable. And to do that we need to know how bindings work. Bindings are built up in the following way:

<IP address>:<port number>

In this example, I will add 0.0.0.0:26 and ::::26.

0.0.0.0:26 means that the server will listen on port 26 for all IPv4 addresses. If I want to add a specific address I will enter that address instead of just zeros. This can be useful if the server has multiple NICs but you only want it to accept connections on one of them. For example, if the IP-address is 192.168.5.10, the binding would have been 192.168.5.10:26.

The same goes for goes for IPv6, :::26 tells the server to listen on port 26 for all IPv6 addresses. You can of course specify a IPv6 address as well.

So, to add the bindings to a variable use the following syntax:

$bindings = ‘<IPv6 address>’, ‘<IPv4 address>’

Then we can move on and add it to a specific Receive Connector by using the following syntax:

Set-ReceiveConnector -identity "<receive connector identity>" -Bindings $bindings

Example of final syntax:

$bindings = ‘:::26′, ’0.0.0.0:26′
Set-ReceiveConnector -identity "EXLABB03\Default EXLABB03" -Bindings $bindings

 

Send Connectors

This is easier since we don’t have to specify bindings. We can just add a port with the –port parameter.

To list all Send Connectors use the following syntax:

Get-SendConnector | fl

To change the port parameter for a specific Send Connector use this syntax:

Set-SendConnector -Identity "<send connector identity>" -port 26

Example:

Set-SendConnector -Identity "Default Send Connector" -Port 26

 

Hope this works well for you, if you have any questions don’t hesitate to drop a comment here or contact me.

Follow

Get every new post delivered to your Inbox.

Join 31 other followers