Applies ToExchange Server 2010 Enterprise Exchange Server 2010 Standard

Symptoms

Consider the following scenarios when a Dynamic Distribution Group has a Lightweight Directory Access Protocol (LDAP) filter that contains more than 32,000 characters in a Microsoft Exchange Server 2010 environment:

Scenario 1

Assume that you send a message to the Dynamic Distribution Group directly. In this situation, the EdgeTransport.exe process crashes on the Exchange Server 2010 Hub Transport server. However, you do not receive a non-delivery report (NDR) message. Additionally, the following events are logged in the Application log:

Log Name: Application Source: MSExchangeTransport Date: DateEvent ID: 10003 Task Category: PoisonMessage Level: Error Keywords: Classic User: N/A Computer: ComputerDescription: The transport process failed during message processing with the following call stack: Microsoft.Exchange.Data.Directory.ADFilterException: The filter string size exceeds maximum allowed size of 32k characters. at Microsoft.Exchange.Data.Directory.Recipient.ADRecipientCache.ExpandGroup(IADDistributionList group) at Microsoft.Exchange.Transport.Categorizer.GroupItem.ExpandMembers(Expansion expansion) at Microsoft.Exchange.Transport.Categorizer.GroupItem.ProcessLocally(Expansion expansion) at Microsoft.Exchange.Transport.Categorizer.RecipientItem.Process(Expansion expansion) at Microsoft.Exchange.Transport.Categorizer.Resolver.ResolveAll() at Microsoft.Exchange.Transport.Categorizer.CategorizerComponent.Stage2ResolveEngine(TransportMailItem transportMailItem, TaskContext taskContext) at Microsoft.Exchange.Transport.Categorizer.TaskContext.Invoke() at Microsoft.Exchange.Transport.Categorizer.CatScheduler.JobThreadEntry(Object ignored) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal(_ThreadPoolWaitCallback tpWaitCallBack) at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state)

Log Name: Application Source: MSExchange Common Date: DateEvent ID: 4999 Task Category: General Level: Error Keywords: Classic User: N/A Computer: ComputerDescription: Watson report about to be sent for process id: Process ID, with parameters: E12, Build Type, Version Number, edgetransport, M.E.Data.Directory, M.E.D.D.R.ADRecipientCache.ExpandGroup, M.E.D.Directory.ADFilterException, XXXX, Version Number. ErrorReportingEnabled: False

Scenario 2

Assume that you send a message to another distribution group that uses the Dynamic Distribution Group as a delivery restriction. In this situation, the EdgeTransport.exe process crashes on the Exchange Server 2010 Hub Transport server. However, you do not receive a non-delivery report (NDR) message. Additionally, the following events are logged in the Application log:

Log Name: Application Source: MSExchangeTransport Date: DateEvent ID: 10003 Task Category: PoisonMessage Level: Error Keywords: Classic User: N/A Computer: ComputerDescription: The transport process failed during message processing with the following call stack: Microsoft.Exchange.Data.Directory.ADFilterException: The filter string size exceeds maximum allowed size of 32k characters. at Microsoft.Exchange.Data.Directory.LdapFilterBuilder.LdapFilterFromQueryFilter(QueryFilter queryFilter, Boolean skipCheckVirtualIndex) at Microsoft.Exchange.Data.Directory.ADGenericPagedReader`1..ctor(ADSession session, ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 pageSize, IEnumerable`1 properties, CreateObjectDelegate objectCtor, CreateObjectsDelegate objectArrayCtor, Boolean skipCheckVirtualIndex) at Microsoft.Exchange.Data.Directory.ADPagedReader`1..ctor(ADSession session, ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 pageSize, IEnumerable`1 properties, CreateObjectDelegate objectCtor, CreateObjectsDelegate objectArrayCtor, Boolean skipCheckVirtualIndex) at Microsoft.Exchange.Data.Directory.ADPagedReader`1..ctor(ADSession session, ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 pageSize, IEnumerable`1 properties, Boolean skipCheckVirtualIndex) at Microsoft.Exchange.Data.Directory.ADDynamicGroupPagedReader`1..ctor(ADSession session, ADObjectId rootId, QueryScope scope, String ldapFilter, Int32 pageSize, CustomExceptionHandler customExceptionHandler, IEnumerable`1 properties) at Microsoft.Exchange.Data.Directory.Recipient.ADDynamicGroup.Expand(Int32 pageSize) at Microsoft.Exchange.Data.Directory.Recipient.ADRecipient.TryIsStrictMemberOfWithLimit(ADObjectId recipientId, ADRecipient rootGroup, Boolean directOnly, ADRecipientSession session, HashSet`1 visitedGroups, Int32& adQueryCount, Int32 adQueryLimit, Boolean& isMember) at Microsoft.Exchange.Data.Directory.Recipient.ADRecipient.TryIsMemberOfWithLimit(ADObjectId recipientId, ADObjectId groupId, Boolean directOnly, ADRecipientSession session, Int32& adQueryLimit, Boolean& isMember) at Microsoft.Exchange.Data.Directory.Recipient.ADRecipientRestriction.TryIsSenderMemberOfWithLimit(IEnumerable`1 groupIdList, Boolean& isSenderMemberOf) at Microsoft.Exchange.Data.Directory.Recipient.ADRecipientRestriction.CheckPermissionRestriction() at Microsoft.Exchange.Data.Directory.Recipient.ADRecipientRestriction.Check() at Microsoft.Exchange.Data.Directory.Recipient.ADRecipientRestriction.CheckDeliveryRestriction(ADObjectId senderId, Boolean senderIsAuthenticated, ICollection`1 rejectMessagesFrom, ICollection`1 rejectMessagesFromDLMembers, ICollection`1 acceptMessagesFrom, ICollection`1 acceptMessagesFromDLMembers, ICollection`1 bypassModerationFrom, ICollection`1 bypassModerationFromDLMembers, ICollection`1 moderators, ICollection`1 managedBy, Boolean requiresAllSendersAreAuthenticated, Boolean moderationEnabled, RecipientType recipientType, ADRecipientSession session, ISimpleCache`2 senderMembershipCache) at Microsoft.Exchange.Transport.Categorizer.DeliveryRestriction.CheckRestriction(ISimpleCache`2 memberOfGroupCache, Int64& maxRecipientMessageSize) at Microsoft.Exchange.Transport.Categorizer.RestrictedItem.CheckDeliveryRestrictions(Expansion expansion) at Microsoft.Exchange.Transport.Categorizer.GroupItem.CheckDeliveryRestrictions(Expansion expansion) at Microsoft.Exchange.Transport.Categorizer.RestrictedItem.PreProcess(Expansion expansion) at Microsoft.Exchange.Transport.Categorizer.RecipientItem.Process(Expansion expansion) at Micosoft.Exchange.Transport.Categorizer.Resolver.ResolveAll() at Microsoft.Exchange.Transport.Categorizer.CategorizerComponent.Stage2ResolveEngine(TransportMailItem transportMailItem, TaskContext taskContext) at Microsoft.Exchange.Transport.Categorizer.TaskContext.Invoke() at Microsoft.Exchange.Transport.Categorizer.CatScheduler.JobThreadEntry(Object ignored) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal(_ThreadPoolWaitCallback tpWaitCallBack) at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state)

Log Name: Application Source: MSExchange Common Date: DateEvent ID: 4999 Task Category: General Level: Error Keywords: Classic User: N/A Computer: ComputerDescription: Watson report about to be sent for process id: Process ID, with parameters: E12, Build Type, Version Number, edgetransport, M.E.Data.Directory, M.E.D.D.LdapFilterBuilder.LdapFilterFromQueryFilter, M.E.D.Directory.ADFilterException, XXXX, Version Number. ErrorReportingEnabled: False

Cause

This issue occurs because the string size of an LDAP filter has a limit of 32KB characters. When the filter exceeds this limit, an ADFilterException exception occurs.

Resolution

To resolve this issue, install the following update rollup:

2661854 Description of Update Rollup 2 for Exchange Server 2010 Service Pack 2 Note After you apply the update rollup, the maximum string size of the LDAP filter is extended to 128KB characters.

Status

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

More Information

For more information about how to create a Dynamic Distribution Group in an Exchange organization, visit the following Microsoft website:

How to create a Dynamic Distribution Group in an Exchange organizationFor more information about how to configure message delivery restrictions, visit the following Microsoft website:

How to configure message delivery restrictionsFor more information about the msExchDynamicDLFilter attribute, visit the following Microsoft website:

General information about the msExchDynamicDLFilter attributes

Need more help?

Want more options?

Explore subscription benefits, browse training courses, learn how to secure your device, and more.