Environment
Situation
Resolution
In Exchange there is no way to signal to the system that a particular message has been archived or not. So Exchange will blissfully allow users to trash, empty and purge their messages even from their Recoverable Items folder, anytime they want to. This is a problem if you have retention laws to comply with.
There is a feature in Exchange that can be used to make sure that Retain has a chance to archive the messages before they are deleted. Create a Rolling In-Place or Legislative Hold.
You can set up a Rolling In-Place Hold in Exchange so that messages are kept within the Exchange system for enough time for Retain to archive them.
As a rule of thumb, set the hold to expire after 90 days to give yourself plenty of time to discover issues with the system. This may cause a slight increase in the amount of storage Exchange uses as it saves messages, but once the hold is past the normal Exchange purge policies will take effect.
The primary thing this hold does for Retain is, it keep users from purging items from their Recoverable Items folder before Retain has a chance to archive it. Exchange will appear to be working completely normally to your users and that will be very nice, no additional support calls to you.
- In Retain, set Profile/Miscellaneous to Include user's recoverable items.
You will first have to set up a distribution list, for example All_Mailboxes, that contains all mailboxes. It will be best to create a policy to add new users to this distribution list by default.
You can set up a hold in the EAC or in the Exchange Management Shell:
An In-Place Hold can be set up for all mailboxes for 90 days:
New-MailboxSearch "Retain90DayHold" -ItemHoldPeriod 90 -InPlaceHoldEnabled $true -SourceMailboxes All_Mailboxes
It will take time for the hold to take effect. You can detemine how many mailboxes were placed under hold with the script:
((Get-Mailbox).InPlaceHolds).Count
Alternatively you can use a Litigation Hold for just user mailboxes:
Get-Mailbox -ResultSize Unlimited -Filter {RecipientTypeDetails -eq "UserMailbox"} | Set-Mailbox -LitigationHoldEnabled $true -LitigationHoldDuration 90
For Exchange 2010 systems you can use Single Item Recovery, but it is limited to a maximum of 30 day and sets to 14 days by default. This script enables it for all mailboxes:
Get-Mailbox -ResultSize unlimited -Filter {(RecipientTypeDetails -eq 'UserMailbox')} | Set-Mailbox -SingleItemRecoveryEnabled $true
See also:
Place all mailboxes on hold
Create or remove an In-Place Hold
New-MailboxSearch