Copying Receive Connectors (update)

Once in a while you may have to execute a task so tedious and repetitive, you end up with an idea for a script to make your life easier. By tidying and publishing that script, I hope to make the life of others easier as well. This is one of those scripts.

When implementing Hub Transport servers on Exchange 2010, you may have to configure multiple receive connectors. Because receive connectors are defined on the Hub Transport server itself, contrary to send connectors, you may end up defining each receive connector on each Hub Transport server. This gets painful when you need to implement the ForeFront Online Protection for Exchange servers in the Remote IP ranges for example.

Yes, you can create a script which configures the connectors for you, but wouldn’t it be nice if you can create definitions on one server using the GUI and then just copy and paste those definitions to the other Hub Transport servers? This script also allows you to simply duplicate existing Receive Connector definitions after adding an additional Hub Transport server afterwards, not only after the initial configuration of the Exchange environment.

Here’s were my Copy-ReceiveConnector.ps1 script may come in handy.

The script is quite simple, and can help you with the following:

  • Copy Receive Connectors from one Exchange server to another (CopyFrom);
  • Export Receive Connector definitions to an XML file (ExportTo);
  • Import Receive Connector definitions from an XML file (ImportFrom).

In addition, you can specify whether you want to overwrite existing Receive Connector definitions (based on name) using the -Overwrite switch or clear all existing Receive Connectors before copying/importing using the -Clear switch.

So, let’s say you have two Hub Transport servers, L12EX1 and L12EX2. You have configured L12EX1 and you need to create the same set of receive connectors on L12EX2.

image

You can see in the example above, you can use the script to copy definitions from an existing server, e.g.

Copy-ReceiveConnector.ps1 <TargetServer> –CopyFrom <SourceServer>

You can also export and import settings, which may come in handy when you need to troubleshoot (you can have the customer export the receive connectors to a file) or when you want to prepare receive connector definitions off-site, e.g.

Copy-ReceiveConnector.ps1 <TargetServer> –ExportTo .\conn.xml

Copy-ReceiveConnector.ps1 <TargetServer> –ImportFrom .\conn.xml –Clear

image

Note that when ExchangeServer is specified as AuthMechanism on a receive connector, the FQDN needs to be set to the server’s FQDN, NetBIOS name or $null; in such cases I set it to the FQDN of the target server. Also, it uses the existing name, meaning you may need to rename the Default and Client connectors, which contain the server name, afterwards.

Update 24th August, 2012 (v1.1): Added find/replace in Receive Connector name so that “Default L12EX1″ on server L12EX1 will become or match with “Default L12EX2″ on server L12EX2.

Click here to download the script from the Technet Gallery.

7 thoughts on “Copying Receive Connectors (update)

  1. Pingback: Copying Receive Connectors (update) | EighTwOne (821) « JC’s Blog-O-Gibberish

    • Good point, and technically possible, but assigning the proper (new) IP address to each connector may be a challenge when using multiple NICs or multi-homed NICs (similar to scripting IP assignments to NICs). Let me ponder on that for a while). Note that this only occurs when you bound specific IP addresses to receive connectors, i.e. not with 0.0.0.0/::::).

      • This is what I se to get the IP address I want:
        $IPAddress = (gwmi Win32_NetworkAdapterConfiguration | ? { $_.IPAddress -like “10.*” }).ipaddress

        My probem is I cannot get it to bind to port 25 via powershe
        Any sggestions?

        • Using Set-ReceiveConnector -Bindings “${IPAddr}:25″ should work for a single IP; you need to use this syntax with the additional accolades, as the colon is used in PowerShell to associate a variable with a scope.

          Alternatively, which also can deal with multiple returned addresses, use something like:
          Set-ReceiveConnector -Bindings ($IPAddr | ForEach { $_+”:25″ })

          Hope this helps.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s