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 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-
Start Registry Editor.
-
Expand the following subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Server_Name>\Private-<GUID>
-
Right-click Private-<GUID>, point to New, and then click DWORD Value.
-
Type DeliveredTo Expiration in Hours, and then press ENTER to name the new value.
-
Right-click DeliveredTo Expiration in Hours, and then click Modify.
-
In the Value data box, type the time, in hours, that you want to keep received message information, and then click OK.
-
Expand the following subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Server_Name>\Public-<GUID>
-
Right-click Public-<GUID>, point to New, and then click DWORD Value.
-
Type DeliveredTo Expiration in Hours, and then press ENTER to name the new value.
-
Right-click DeliveredTo Expiration in Hours, and then click Modify.
-
In the Value data box, type the time, in hours, to keep information on received messages before it is deleted, and then click OK.
-
Exit Registry Editor.
-
Start Registry editor.
-
Expand the following subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Server Name>\Private-<GUID>
-
Right-click Private-<GUID>, point to New, and then click DWORD Value.
-
Type DeliveredTo Cleanup Interval in Seconds, and then press ENTER to name the new value.
-
Right-click DeliveredTo Cleanup Interval in Seconds, and then click Modify.
-
In the Value data box, type the interval, in seconds, between each execution of DeliveredTo cleanup, and then click OK.
-
Expand the following subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Server Name>\Public<GUID>
-
Right-click Public-<GUID>, point to New, and then click DWORD Value.
-
Type DeliveredTo Cleanup Interval in Seconds, and then press ENTER to name the new value.
-
Right-click DeliveredTo Cleanup Interval in Seconds, and then click Modify.
-
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.
-
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.