This is the toy I'm working on at the moment. I'm not sure if I'll release it; I may just release the base system with none of the add-ons. But anyway, what is it?
Suppose every mail you receive gets sent through a little program before delivery. This little program does several things. It strips off any attachments, and stores them in an SQL database, adding a note to the end of the email pointing out the ID number of the attachment in the database.
It also stores information about who the mail was sent from, the subject line, the date, some keywords as determined by Text::Keywords, and so on. The add-on "recogniser" modules get hold of the email and try to pull out various things - email addresses, patches, phone numbers, mailing addresses, and so on.
Eventually, you've got quite a database built up, which allows you to do something like this:
% mm --detach 12345
Detaching "foo.exe" (ID 12345) from Simon Cozens <firstname.lastname@example.org>
% mm --from Simon --about Perl --dated "September 2001"
ID Date Subject
---- ---------- --------------
1 01/09/2001 This is a test
Neat, huh? Those are the relatively obvious uses. Now look what else we can do. Give me all the emails which contained a patch to
Audit.pm sent by Autrijus, and save the patches into separate files:
% mm --from Autrijus --patch Audit.pm --detach
Find me Eiko's mailing address.
% mm --from Eiko --address
Show me that mail I sent to Tim sometime late last year, which was something to do with GraphViz, and give me the attachment I sent to him.
% mm --to Tim --about GraphViz --dated "circa October 2001" --detach
Knowing the way my memory (doesn't) operate, I think this could save me vast quantities of time.