The symptoms of this issue were pretty simple: The customer had applied a Retention Policy to the Deleted Items folder to delete anything older than 14 days, and when looking at the items in the folder using Outlook, everything over 14 days old showed as expired, but the items weren’t getting removed by Exchange.
After quite a bit of troubleshooting around whether Exchange was running it’s retention process properly, I finally found the answer, which was that Outlook’s view of the items’ expiration, and Exchange’s actually expiration of the items, did not match.
Outlook 2010, which is where we were looking at the items, was running in cached mode.
We then looked at some items in OWA, and then looked at them with Outlook in online mode, and there we saw that the old items that were showing as expired with Outlook in cached mode, were showing that they would expire in 4 days. I then asked the customer when they first applied the policy, and it was early the previous week - 10 days prior.
So, what is occurring is that Outlook in cached mode pulls the Policy Tag information for the folder and then does the calculation for expiration itself. If we're in the initial 'x' number of days after the policy was originally applied to the items (they were just moved into the folder, etc.), we may have items that Outlook in cached mode calculates as expired, however, since they were just tagged within the expiration period, they are not expired or deleted on the server.
I did indeed find documentation that says that in cached mode, Outlook calculates the expiration, where in Online mode, it is read from the server.
The property involved is the RetentionExpirationDate property (http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook._mailitem.retentionexpirationdate.aspx).
The conclusion here is that if you’ve applied Retention Policies to any of your folders and the items are being shown by Outlook as expired, but are still there days later, take a quick look at them in OWA or an online mode Outlook profile and see if they really are expired.