How to copy Receive Connectors from Exchange 2007 / 2010 to Exchange 2013

During a migration from Exchange 2007 to Exchange 2013 I was looking for a way to easily copy or migrate the non-default Receive Connectors from Exchange 2007 to Exchange 2013.  It was a large deployment and therefore manually creating all the Receive Connectors would have been very time consuming.

I came across this excellent blog from Steve Goodman  describing how to do it using the Exchange Management Shell.

However, I had to make a couple of adjustments to the commands for compatibility my Exchange 2013 environment

  • Removed the “ExtendedProtectionTLsTerminatedAtProxy” parameter. This is not compatible with Exchange 2013
  • Added the “–TransportRole FrontEnd” parameter to ensure the connector was created as a FrontEnd connector and not as a Hub Transport connector (default).
    • Good explanation here as to why, after creating new Receive Connectors on Multi-Role Exchange 2013 Servers, customers may encounter mail flow/transport issues within a few hours/days.

Steps as per Steve Goodman’s blog, with the adjustments I made for compatibility with Exchange 2013 Multirole:

  1. Define two variables for the source and target servers
$OldServer = “OldServer”

$NewServer = “NewServer”

  1. Retrieve a list of the non-default Receive Connectors into the variable $ReceiveConnectors
[array]$ReceiveConnectors = Get-ReceiveConnector -Server $OldServer | Where {$_.Name -notlike “Default $($OldServer)” -and $_.Name -notlike “Client $($OldServer)”}
  1. Create the Receive Connectors with the –WhatifSwitch to verify the syntax of the commands
$ReceiveConnectors | foreach {

New-ReceiveConnector –TransportRole FrontEnd -Name $_.Name -RemoteIPRanges $_.RemoteIPRanges -bindings$_.Bindings -Banner $_.Banner -ChunkingEnabled $_.ChunkingEnabled -DefaultDomain$_.DefaultDomain -DeliveryStatusNotificationEnabled $_.DeliveryStatusNotificationEnabled-EightBitMimeEnabled $_.EightBitMimeEnabled -DomainSecureEnabled $_.DomainSecureEnabled-LongAddressesEnabled $_.LongAddressesEnabled -OrarEnabled $_.OrarEnabled -Comment$_.Comment -Enabled $_.Enabled -ConnectionTimeout $_.ConnectionTimeout -ConnectionInactivityTimeout $_.ConnectionInactivityTimeout -MessageRateLimit$_.MessageRateLimit -MaxInboundConnection $_.MaxInboundConnection -MaxInboundConnectionPerSource $_.MaxInboundConnectionPerSource -MaxInboundConnectionPercentagePerSource $_.MaxInboundConnectionPercentagePerSource -MaxHeaderSize $_.MaxHeaderSize -MaxHopCount $_.MaxHopCount -MaxLocalHopCount$_.MaxLocalHopCount -MaxLogonFailures $_.MaxLogonFailures -MaxMessageSize$_.MaxMessageSize -MaxProtocolErrors $_.MaxProtocolErrors -MaxRecipientsPerMessage$_.MaxRecipientsPerMessage -PermissionGroups $_.PermissionGroups -PipeliningEnabled$_.PipeLiningEnabled -ProtocolLoggingLevel $_.ProtocolLoggingLevel -RequireEHLODomain$_.RequireEHLODomain -RequireTLS $_.RequireTLS -EnableAuthGSSAPI $_.EnableAuthGSSAPI -ExtendedProtectionPolicy $_.ExtendedProtectionPolicy $_.ExtendedProtectionTlsTerminatedAtProxy -SizeEnabled $_.SizeEnabled -TarpitInterval $_.TarpitInterval -Server $NewServer -WhatIf

}

  1. If there are no errors in the output, run the command again without the –Whatif switch
$ReceiveConnectors | foreach {

New-ReceiveConnector –TransportRole FrontEnd -Name $_.Name -RemoteIPRanges $_.RemoteIPRanges -bindings$_.Bindings -Banner $_.Banner -ChunkingEnabled $_.ChunkingEnabled -DefaultDomain$_.DefaultDomain -DeliveryStatusNotificationEnabled $_.DeliveryStatusNotificationEnabled-EightBitMimeEnabled $_.EightBitMimeEnabled -DomainSecureEnabled $_.DomainSecureEnabled-LongAddressesEnabled $_.LongAddressesEnabled -OrarEnabled $_.OrarEnabled -Comment$_.Comment -Enabled $_.Enabled -ConnectionTimeout $_.ConnectionTimeout -ConnectionInactivityTimeout $_.ConnectionInactivityTimeout -MessageRateLimit$_.MessageRateLimit -MaxInboundConnection $_.MaxInboundConnection -MaxInboundConnectionPerSource $_.MaxInboundConnectionPerSource -MaxInboundConnectionPercentagePerSource $_.MaxInboundConnectionPercentagePerSource -MaxHeaderSize $_.MaxHeaderSize -MaxHopCount $_.MaxHopCount -MaxLocalHopCount$_.MaxLocalHopCount -MaxLogonFailures $_.MaxLogonFailures -MaxMessageSize$_.MaxMessageSize -MaxProtocolErrors $_.MaxProtocolErrors -MaxRecipientsPerMessage$_.MaxRecipientsPerMessage -PermissionGroups $_.PermissionGroups -PipeliningEnabled$_.PipeLiningEnabled -ProtocolLoggingLevel $_.ProtocolLoggingLevel -RequireEHLODomain$_.RequireEHLODomain -RequireTLS $_.RequireTLS -EnableAuthGSSAPI $_.EnableAuthGSSAPI -ExtendedProtectionPolicy $_.ExtendedProtectionPolicy $_.ExtendedProtectionTlsTerminatedAtProxy -SizeEnabled $_.SizeEnabled -TarpitInterval $_.TarpitInterval -Server $NewServer}

2 thoughts on “How to copy Receive Connectors from Exchange 2007 / 2010 to Exchange 2013

Leave a Reply

Your email address will not be published. Required fields are marked *