On a Microsoft Exchange Server 2007 Edge Transport server, the transport process fails in certain e-mail address rewrite scenarios. This happens because an external e-mail is sent to a specific internal recipient e-mail address. When this occurs, the transport process fails at the "Rcpt To:" part of the SMTP conversation. When the transport process restarts, the remote server is likely to redeliver this external e-mail, which causes the transport process to fail again.
When this problem occurs, the following event is logged in the Application log:
Event Type: Error Event Source: MSExchange Common Event Category: General Event ID: 4999 Description: Watson report about to be sent to dw20.exe for process id: <ID>, with parameters: E12, c-RTL-AMD64, <version number>, edgetransport,M.E.M.EdgeAgents, M.E.M.A.StringBlock.ReadStringUnsafe, system.indexoutofrangeexception, be38, <version number>. ErrorReportingEnabled: False
During the e-mail address rewrite process, the appropriate address rewrite entry must be located. In certain scenarios, the entry lookup mechanism returns an invalid result. This causes the transport process to crash.
To resolve this problem, install Update Rollup 1 for Exchange 2007 Service Pack 2. For more information about Update Rollup 1 for Exchange 2007 Service Pack 2, click the following article number to view the article in the Microsoft Knowledge Base:
971534 Description of Update Rollup 1 for Exchange Server 2007 Service Pack 2
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
When this issue occurs, the following call stack is generated:
0:008> !pe Exception object: 00000000c021ab40 Exception type: System.IndexOutOfRangeException Message: Index was outside the bounds of the array. InnerException: <none> StackTrace (generated):<none> StackTraceString: <none> HResult: 80131508 0:008> !clrstack OS Thread Id: 0x8b8 (8) Microsoft.Exchange.MessagingPolicies.AddressRewrite.StringBlock.ReadStringUnsafe(Int32, Byte ByRef, Int32 ByRef) Microsoft.Exchange.MessagingPolicies.AddressRewrite.MapTable.RemapMicrosoft.Exchange.MessagingPolicies.AddressRewrite.Configuration.DirectionalRewriteMicrosoft.Exchange.MessagingPolicies.AddressRewrite.Configuration.RewriteInboundMicrosoft.Exchange.MessagingPolicies.AddressRewrite.AgentInbound.RewriteRecipientMicrosoft.Exchange.Data.Transport.Smtp.SmtpReceiveAgent.Invoke<bottom of stack omitted>