Mail::Miner module can store and retrieve useful information from mail messages.
I'm very forgetful, and I tend to rely on my email as a surrogate memory. This is great until you get over 200M of email and can't actually find anything any more. You tend to remember things like "the phone number I need is in a message from Frank around September last year" or "someone sent me a JPG in a message about Tina". This doesn't really help you find the mail in most mail clients, though.
This is where Mail::Miner comes in. It's a generic system for extracting useful information for an email message, storing the information and the message, and allowing both to be extracted through a complex search in the future.
The principle components of Mail::Miner are the database, the base modules, assets and recognisers. Let's look at each of these first, then we'll see how they all fit together.
The database schema is provided in miner.sql; naturally, you'll need to create this database according to the schema, and give yourself appropriate permission to the tables. You may or may not need to alter the DBI connect string at the top of DBI.pm too. Be warned that Mail::Miner only supports Postgresql, as it's the only free database to offer subselects.
Those were the database installation instructions. Huh.
The base modules don't do very much. Mail::Miner, the module, does nothing at all, in fact, other than load up the other modules and provide this documentation. Mail::Miner::Message provides basic functions for dealing with messages, and Mail::Miner::Attachment does the same thing for attachments. Mail::Miner::Assets provides some functions which are useful for other modules which manipulate assets. So what are assets?
Mail::Miner is Very Stupid. It cares very little about a message; all it really needs to know are what attachments it has, what content the body has, who sent it and what the subject was. In fact, it doesn't really need to care about the last two, but they're used so often, it's convenient to.
Everything else that Mail::Miner finds out about a mail is an asset. For instance, a very trivial asset is the date it was sent. A more complex asset could be the fact that it looks like it contains a phone number, and what the phone number is.
So how does Mail::Miner acquire these assets? There are a class of plug-in recogniser modules that get handed a mail message, and store information about them. These are installed just like any other Perl module, and Mail::Miner automatically detects them and passes them emails. How does this happen?