How to Configure Duplicate Message Detection in Exchange 2007

Microsoft Exchange Server 2007 will reach end of support on April 11, 2017. To stay supported, you will need to upgrade. For more information, see Resources to help you upgrade your Office 2007 servers and clients.

 

Applies to: Exchange Server 2007 SP1, Exchange Server 2007 SP2, Exchange Server 2007 SP3

This topic explains how to edit the registry to control how duplicate e-mail messages are detected in Microsoft Exchange Server 2007. Duplicate messages may occur in Exchange 2007 when a message is sent to a user and to a distribution list that includes the same user. Typically, a duplicate message occurs if the distribution list is expanded on a server other than the Exchange server from which the message was sent or if it is a hidden distribution list.

The Exchange store detects the duplicate messages based on the following properties of the message:

  • The Internet Message ID

  • The client submit time

The store uses the DeliveredTo table in the JET database to keep track of duplicate messages. When a message is delivered to a user, the store checks this table to see whether an entry for the message already exists. If an entry does not exist in the table, the message is delivered to the user, and a row is added to the table to indicate that the user received the message. If an entry exits, the message is discarded.

By default, the store keeps track of duplicate messages for seven (7) days (168 hours). You can change this time by changing the value of the DeliveredTo Expiration in Hours registry value. This value is the time (in hours) that the received message information is retained before it is deleted. The maximum value that the store accepts for this registry value is 100 years. However, when you increase this value, the size of the table grows. If the table becomes very large, the delivery of messages may slow down.

Note

The minimum value that you can set for the DeliveredTo Expiration in Hours registry value is 1 hour. Therefore, Duplicate Message Detection cannot be turned off in Microsoft Exchange.

Periodically, the store deletes old items from the DeliveredTo table. Old items are deleted by the background cleanup thread, which runs every hour. You can change the frequency of the cleanup by changing the value of the DeliveredTo Cleanup Interval in Seconds registry value. This value controls the frequency, in seconds, of the DeliveredTo table cleanup. By default, this value is set to 3,600 seconds (1 hour).

To edit the "DeliveredTo Expiration in Hours" registry value

  1. Start Registry Editor.

  2. Expand the following subkey:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Server_Name>\Private-<GUID>

  3. Right-click Private-<GUID>, point to New, and then click DWORD Value.

  4. Type DeliveredTo Expiration in Hours, and then press ENTER to name the new value.

  5. Right-click DeliveredTo Expiration in Hours, and then click Modify.

  6. In the Value data box, type the time, in hours, that you want to keep received message information, and then click OK.

  7. Expand the following subkey:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Server_Name>\Public-<GUID>

  8. Right-click Public-<GUID>, point to New, and then click DWORD Value.

  9. Type DeliveredTo Expiration in Hours, and then press ENTER to name the new value.

  10. Right-click DeliveredTo Expiration in Hours, and then click Modify.

  11. In the Value data box, type the time, in hours, to keep information on received messages before it is deleted, and then click OK.

  12. Exit Registry Editor.

To edit the "DeliveredTo Cleanup Interval in Seconds" registry value

  1. Start Registry editor.

  2. Expand the following subkey:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Server Name>\Private-<GUID>

  3. Right-click Private-<GUID>, point to New, and then click DWORD Value.

  4. Type DeliveredTo Cleanup Interval in Seconds, and then press ENTER to name the new value.

  5. Right-click DeliveredTo Cleanup Interval in Seconds, and then click Modify.

  6. In the Value data box, type the interval, in seconds, between each execution of DeliveredTo cleanup, and then click OK.

  7. Expand the following subkey:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Server Name>\Public<GUID>

  8. Right-click Public-<GUID>, point to New, and then click DWORD Value.

  9. Type DeliveredTo Cleanup Interval in Seconds, and then press ENTER to name the new value.

  10. Right-click DeliveredTo Cleanup Interval in Seconds, and then click Modify.

  11. In the Value data box, type the interval, in seconds, that you want to occur between each execution of DeliveredTo cleanup, and then click OK.

  12. Close Registry Editor.

After you change these registry values, duplicate e-mail messages can still occur for the following reasons:

  • If either the Internet Message ID or the submit time is different for the two messages, the second message is not treated as a duplicate.

  • If the two messages are the same, but the time interval between the arrival of the two messages is more than one hour, the store cleanup task will have deleted the original entry in the DeliveredTo table, and the user receives a duplicate message.

  • If the use's mailbox is moved to a different database, the user may receive a duplicate message. The DeliveredTo table is associated with a database, and the table information is not moved when the user's mailbox is moved.

  • In Exchange 2000 Server or in an earlier version of Exchange, duplicate messages occur when you use Outlook Web Access to send a message to a user and to a distribution list that includes the user. When the message is submitted, the Exchange store stamps an Internet Message ID on the outgoing message. However, Outlook Web Access uses native MIME types to submit messages. The Internet Message ID that is stamped on the message by the store does not update the MIME Message ID header. Therefore, the MAPI message is out of sync with the native MIME, and the message is bifurcated by the transport component categorizer. This behavior creates duplicate messages that have different Internet Message IDs. In Exchange Server 2003 and later versions, this behavior is changed so that the store stamps the Internet Message ID on a message only if the store detects that the MIME has to be regenerated or if the message is a pure MAPI message.