I'am pretty sure you saw it before: User xy calls, his mailbox is over his size limit, but he must send or receive this one important piece of mail just now. You head to Active Directory, change the mailbox size limits. The User tries again, still not working.
You take a look into Exchange System Manager, and see that the new values have not been read by Exchange.
So what happens here?
Exchange 2000/2003 uses cached mailbox configuration data to determine the enforced mailbox size limits. By default, the cache has a TTL of 2 hours, meaning it can take as much as two hours for you changed size limits to be enforced.
There are two ways to speed up things:
-
Restart the Information Store - the cache gets cleared, and mailbox limits are enforced immediately.
-
Change the TTL of the cache so that it gets updated more frequently.
Option 1: Depending on the size of your IS and users on the IS, remedy number one might not be an option.
Option 2: In order to speed up the whole thing during normal operation, you have to specify different TTL values for the 3 Exchange caches -
-
DSAccess user object cache (Default 5 mins)
-
Mailbox information cache (Default 120 mins)
-
Quota and limit cache (Default 120 mins)
We are going to do the following - set the DSAccess Cache to 2 Mins, Information Cache to 10 Mins and Quota and limit cache to 15 Mins (as recommended by MS).
Open up regedit.exe on your Exchange-Server and perform the following:
For DSAccess:
Go to HKLM\SYSTEM\CurrentControlSet\Services\MSExchangeDSAccess\Instance0 (if instance0 does not exist, create a new key). Underneath, create a new DWORD called CacheTTLUser and enter a positive decimal number of TTL in seconds (i used 120 seconds here).
For Mailbox Information Cache:
Go to HKLM\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem, create a new DWORD called Mailbox Cache Age Limit and specify a decimal number of TTL in minutes (i will user a decimal value of 10 minutes).
For Quota and limit cache:
Go to HKLM\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem, create a new DWORD called Reread Logon Quotas Interval and specify a decimal number of TTL in seconds (i will user a decimal value of 900 seconds).
Thats it, you have to restart the Exchange Information Store Service once for the new settings to be read.
For your convinience, i put the whole thing in a .reg-File - download it, run it on your exchange server and you are set.
exchange_cache_ttls.reg (680.00 bytes)
A word of advice: Feel free to experiment with the values - don't set them too low, cause you WILL run into AD/Exchange-Performance Issues. Also don't forget - always test things like this in your lab before putting it into production use. I will not be responsible for anything that goes wrong.
One last word, this should work fine on Exchange 2000/2003 - if you're going to try it on 2000, you need to have at least SP3 running.
Regards,
Georg