Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Important note about md

Because python changed too much (python 3 and python 2 left all this very hard to support) I switched to an elisp only solution emacs-maildir.

If you want to pick this up and make it all work again I would be very happy for you to do so.

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.

Some examples:

$ export MAILDIR=~/Maildir
$ md ls
INBOX#1278373500.V801Ie8c29aM925471  2010-07-06 01:12:43  <> [] [GitHub] someone commented on a commit
INBOX#1278377415.V801Ie8c29bM873637  2010-07-06 02:18:04  <> [] [GitHub] somebody commented on a commit
INBOX#1278408713.V801Ie8c328M715195  2010-07-06 10:59:47  <> [] [GitHub] someoneelse commented on a commit

$ md text INBOX#1278408713.V801Ie8c328M715195
return-path: <>
received: from ( [])
	by (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.

Building md

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:

veh refresh

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.