Fortunately, this server wasn't in production yet...
EX2013 CU3 was installed on a server to which we are (or were) planning to migrate. It's a new forest, and would be a cross-forest migration.
Installed CU7, it got to step 10 of 18, and got this error:
Error: The following error was generated when "$error.Clear(); $connectors = Get-ReceiveConnector -Server $RoleFqdnOrName; foreach($connector in $connectors) { if($connector.MaxLocalHopCount -gt 1) { Set-ReceiveConnector -Identity $connector.Identity -MaxLocalHopCount 5 } };" was run: "Microsoft.Exchange.Management.SystemConfigurationTasks.ReceiveConnectorRoleConflictException: The values that you specified for the Bindings and RemoteIPRanges parameters conflict with the settings on Receive connector "AVS-EXCH-001\External Relay". Receive connectors assigned to different Transport roles on a single server must listen on unique local IP address & port bindings. at Microsoft.Exchange.Configuration.Tasks.Task.ThrowError(Exception exception, ErrorCategory errorCategory, Object target, String helpUrl) at Microsoft.Exchange.Configuration.Tasks.Task.WriteError(Exception exception, ErrorCategory category, Object target) at Microsoft.Exchange.Management.SystemConfigurationTasks.SetReceiveConnector.InternalValidate() at Microsoft.Exchange.Configuration.Tasks.Task.<ProcessRecord>b__b() at Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed)". Error: The following error was generated when "$error.Clear(); $connectors = Get-ReceiveConnector -Server $RoleFqdnOrName; foreach($connector in $connectors) { if($connector.MaxLocalHopCount -gt 1) { Set-ReceiveConnector -Identity $connector.Identity -MaxLocalHopCount 5 } };" was run: "Microsoft.Exchange.Management.SystemConfigurationTasks.ReceiveConnectorRoleConflictException: The values that you specified for the Bindings and RemoteIPRanges parameters conflict with the settings on Receive connector "AVS-EXCH-001\Default AVS-EXCH-001". Receive connectors assigned to different Transport roles on a single server must listen on unique local IP address & port bindings. at Microsoft.Exchange.Configuration.Tasks.Task.ThrowError(Exception exception, ErrorCategory errorCategory, Object target, String helpUrl) at Microsoft.Exchange.Configuration.Tasks.Task.WriteError(Exception exception, ErrorCategory category, Object target) at Microsoft.Exchange.Management.SystemConfigurationTasks.SetReceiveConnector.InternalValidate() at Microsoft.Exchange.Configuration.Tasks.Task.<ProcessRecord>b__b() at Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed)".
Only button offered was "Exit", which I did. After which several Exchange services wouldn't run, and with all running that would run, I couldn't connect with ECP or EMS.
Okay, get your face-palm ready: No backups.
Only reason I'm doing this at all is the new forest isn't in production, and the customer has been advised of and accepted the risk. So remaining choices are probably fix it or start over. Would rather fix it if that's feasible.
Obviously the problem lies with overlapping IPs/ports between the default Receive Connector and a custom Receive Connector for doing external relay. Apparently EX didn't squawk when we created it, but it's making up for that omission now.
I THINK that was the only other Receive Connector at this point, although I have no way to verify that. Is there a way I can just remove that external relay Receive Connector using ADSIEdit, or some other means? Presumably I can then run CU7 and it will complete (or at least get past step 10 of 18).
[Edit]
Just found this: http://social.technet.microsoft.com/wiki/contents/articles/25372.exchange-2013-setup-error-a-receive-connector-must-have-a-unique-combination-of-a-local-ip-address-port-bindings-and-remote-ip-address-ranges.aspx. Trying it now.