md - a maildir client and library
md is a foundation for handling mail directly with maildirs. It allows you to circumvent IMAP servers and clients and deal directly with the underlying storage.
md is designed to be a little like MH. A command line tool (which can also be a shell) provides stateless access to your mail.
Folders are fully supported.
$ export MAILDIR=~/Maildir $ md ls INBOX#1278373500.V801Ie8c29aM925471 2010-07-06 01:12:43 <email@example.com>  [GitHub] someone commented on a commit INBOX#1278377415.V801Ie8c29bM873637 2010-07-06 02:18:04 <firstname.lastname@example.org>  [GitHub] somebody commented on a commit INBOX#1278408713.V801Ie8c328M715195 2010-07-06 10:59:47 <email@example.com>  [GitHub] someoneelse commented on a commit $ md text INBOX#1278408713.V801Ie8c328M715195 return-path: <firstname.lastname@example.org> received: from github.com (fe2.rs.github.com [172.17.1.5]) by smtp1.rs.github.com (Postfix) with ESMTPS id 71DF442096 Cool, ok. I see it the same way. If you find a working solution it is fine and one learns something by doing it. I didn't want you to change your solution, you see mine is simple enough to do it in five minutes. Well, have fun!
md is getting near usable for the adventurous... but it's not usable for end users. I plan to build a number of useragents on top of md, including an Emacs client and a Webclient.
md requires my simple filesystem abstraction library. If you're hacking on md you may want to use veh for building the dependancies into a virtualenv. md provides the veh config file for making it work, just do:
to make sure you have the latest dependancies.
Pulling mail into a maildir
md provides a method for pulling mail from a maildir source. Currently you can only pull a maildir with 2 methods:
- with direct ssh access like this:
md -M localmaildir pull ssh://user@hostname/path/to/maildir
- locally like this:
md -M localmaildir pull file:///path/to/maildir
A list of things we may do
Better mail pulling: I would like to be able to pull mail from remote servers over a variety of methods. Mostly the commands are there and just need to be integrated with md. For example, a POP3 or IMAP4 pull would be relatively simple.
Built in filtering: I would like to add a find command to md analagous to UNIX find. Similar searching and filtering options may be added to ls.
A sharded md store: we have to use a symlinked system in order to support sensible pull strategies. But it would be ideal if our store folder was sharded so people with large mailboxes didn't have to wait for the ls ever.
An export command: to convert the symlinked mail store into a straight maildir.