Applies to: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1
Topic Last Modified: 2010-02-23

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 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: