E.2 mu server

mu4e is based on the mu e-mail searching/indexer. The latter is a C++-program; there are different ways to communicate with a client that is emacs-based.

One way to implement this, would be to call the mu command-line tool with some parameters and then parse the output. In fact, that was the first approach — mu4e would invoke e.g., mu find and process the output in Emacs.

However, with this approach, we need to load the entire e-mail Xapian database (in which the message is stored) for each invocation. Wouldn’t it be nicer to keep a running mu instance around? Indeed, it would — and thus, the mu server sub-command was born. Running mu server starts a simple shell, in which you can give commands to mu, which then spits out the results/errors. mu server is not meant for humans, but it can be used manually, which is great for debugging.