We recently faced an issue where our Exchange 2010 was receiving multiple copies of emails from various our mail servers over the internet, upon investigating we found that Exchange wasn’t sending the acknowledgement for the email received hence the source server considered it not delivered and retried delivery as per protocol. Upon further investigation we found the following about Exchange Server 2010
Exchange 2010 introduces the shadow redundancy feature which provides redundancy for messages for the entire time they’re in transit. With shadow redundancy, the deletion of a message from the transport databases is delayed until the transport server verifies that all of the next hops for that message have completed delivery.
Because shadow redundancy is an Exchange 2010 feature, shadow redundancy is only supported by Exchange 2010 servers. If an Exchange 2010 transport server receives messages from a previous version of Exchange Server or a non-Exchange source, the source server can’t send the expected XSHADOW command. Therefore, shadow redundancy isn’t used. Non-Exchange sources include external mail servers, third-party anti-spam or antivirus solutions, any internal mail servers outside your Exchange organization or line-of-business (LOB) applications the source server.
However, when an Exchange 2010 transport server receives a message from a non-Exchange 2010 source, Exchange attempts to achieve shadow redundancy by delaying the acknowledgement to the sending server until it verifies that the message has been successfully delivered to all next hops internally. This way, if the Exchange 2010 server fails, the sending server assumes that the message was never delivered to Exchange and attempts delivery again.
The delayed acknowledgement time-out is controlled by the MaxAcknowledgementDelay attribute of each Receive connector. The default value is 30 seconds.
Root Cause of the Issue
If the Exchange 2010 server is taking a long time in providing acknowledgement to the sending mail server, the sending mail server will assume that the message was never delivered to Exchange and will attempt to deliver the message again. Hence the sending mail server can deliver duplicate emails in this case, depending on their property .
Fortunately fixing this problem is real easy, we just need to setup the attribute “MaxAcknowledgementDelay” to 0 for all the receive connectors which are in-place to receive emails from the third party Application server
Get-ReceiveConnector -Identity “Relay-Connector-Name” | Set-ReceiveConnector -MaxAcknowledgementDelay 00:00:00
Refer this Article for more information
Feel free to reach to us for more support options here
Latest posts by Shishir Chandrawat (see all)
- Exchange 2010 Std: Mailbox server has reached the maximum database limit of 5 Error RcrExceedDbLimitException - December 12, 2016
- Exchange 2010: Unable to add Mailbox Database copies on DAG member servers, Error: An error occurred while processing a request on server - December 12, 2016
- Unable to Mount Microsoft Exchange DAG Database, Error: Failed to determine the mount status of the active database copy - December 12, 2016