It has a few hefty prereqs, but once you get everything installed it is nothing but a joy to use.
When your datastore is ready, to get the process rolling, simply call "Email::Store->setup" once and then push raw messages to "Email::Store::Mail->store( ... )".
This module has been particularly useful, for me, in dealing with mailing list messages. As long as your listserv software uses some sort of headers that Mail::ListDetector understands (though I know you can add your own detector fairly easily if need be), then when messages are indexed, the list information should be automatically extracted.
It is also quite easy to create new plugins for use with Email::Store. One of my requirements was to generate a tally of messages on a monthly basis. Email::Store uses an epoch date (integer, for portability I assume), so I wrote a plugin to, while indexing, extract the day, month and year out into its parts and include the necessary functions to get at the data how I wanted.
Overall this is exactly the "glue" I needed to create a mailing list archival system for our local lists.