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

The following two tabs change content below.
An automobile enthusiast at heart and computer geek by profession, started my Career with MS in 2005.Left Jobs and started Pledge Technologies (the parent company to Grishbi) back in 2009.We have been providing IT consulting to various Small and Medium businesses across US and UK since then.Our company specialises in Microsoft Server technologies like AD, Exchange, the rest and with numerous Office 365 migrations under our belt, we quite an expert with that too. Whatever we learn in our day to day life, we share it back on Grishbi as a Thank for all the love and support our customers have given us.
%d bloggers like this: