I'm sick of client-side virtual folders. I use 3 or 4 machines, usually ssh to pine, which I'm fast at, but each has its own GUI IMAP client (typically Thunderbird), with different client-side virtual folders, and also my cell phone, whose INBOX I want to be filtered to very particular messages.
Things to abstract and other misc features:
-- underlying store (I'll probably only implement some MySQL schema that I care about and Maildir). don't worry, I'll force it to fail on startup if you're using MyISAM and not a reliable storage engine.
-- folders / vfolders (saved searches, tags, etc...)..
-- delete policies. what does delete command do? delete, or move to archive folder?
-- views per-port. so my phone's INBOX view is a different vfolder than other client's INBOX.
-- if client disconnects, a long-running disk-bound search will actually terminate and not continue to thrash the disk/db.
-- my store will support multiply linked emails in different folders w/ shared flags.
-- integrate well w/ MTAs/qpsmtpd/greylisters/virus scanners where previous mail setups have annoyed me. a lot of this is actually me hacking on qpsmtpd more probably.
The above sounds big/complicated, but I intend for this to be very quick/hacky. Unlike djabberd, I don't intend or care for/if anybody to use it. This will be me scratching my own itch. Everybody else should use gmail, but it's not for me.