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.
Great module! It lets me separate my code from my HTML. The template syntax is straight forward. I like the fact that it can do some introspection (see query() method). I only wish it could handle sending objects directly to the template out of the box.
Mail::Sendmail is an easy to use, platform independent mailer. I've used it on both Win32 and Linux. Although it has sendmail in the name, it does not require (the command-line) sendmail to function. It has a few short-comings (no SMTP AUTH support, for example) but it gets the job done. It also comes with a handy email address validation regex. The off-site FAQ has some useful example code for things like HTML mail and attachments.