Applies to Exchange 2003
So one of the things that can go wrong with Exchange is that it can run out of something called Version Store. Version store is an in-memory list of changes made to the database. Nagesh Mahadev has an awesome post about Version Store on our msexchangeteam.com blog, posted here. To borrow his summary: In simple terms, the Version Store is where transactions are held in memory until they can be written to disk.
So version store running out of memory can be caused by either a long running transaction. This is pretty self explanatory. Say your anti-virus product wants to scan something in VSAPI and locks it and then goes to lunch. Your version store will consume more and more memory until it runs out because it's trying to work around this long running transaction, keeping track of all the rollbacks and whatnot.
The other problem is with I/O. Since we're holding transactions in memory until they can be written to disk, if something prevents us from writing to disk, we can hit version store problems. Sometimes this type of problem can be precipitated by 9791 event log entries in the application event log. If this happens, get ready to do some adplus store dumps when version buckets allocated hits 70%.
What to do to prevent or mitigate this risk?
Hope this helps with your environment.