Next: nnmaildir Group Parameters, Previous: MH Spool, Up: Choosing a Mail Back End [Contents][Index]

#### 6.4.13.5 Maildir

`nnmaildir` stores mail in the maildir format, with each maildir corresponding to a group in Gnus. This format is documented here: http://cr.yp.to/proto/maildir.html and here: http://www.qmail.org/man/man5/maildir.html. `nnmaildir` also stores extra information in the `.nnmaildir/` directory within a maildir.

Maildir format was designed to allow concurrent deliveries and reading, without needing locks. With other back ends, you would have your mail delivered to a spool of some kind, and then you would configure Gnus to split mail from that spool into your groups. You can still do that with `nnmaildir`, but the more common configuration is to have your mail delivered directly to the maildirs that appear as group in Gnus.

`nnmaildir` is designed to be perfectly reliable: `C-g` will never corrupt its data in memory, and `SIGKILL` will never corrupt its data in the filesystem.

`nnmaildir` stores article marks and NOV data in each maildir. So you can copy a whole maildir from one Gnus setup to another, and you will keep your marks.

Virtual server settings:

`directory`

  For each of your `nnmaildir` servers (it’s very unlikely that you’d need more than one), you need to create a directory and populate it with maildirs or symlinks to maildirs (and nothing else; do not choose a directory already used for other purposes). Each maildir will be represented in Gnus as a newsgroup on that server; the filename of the symlink will be the name of the group. Any filenames in the directory starting with ‘`.`’ are ignored. The directory is scanned when you first start Gnus, and each time you type `g` in the group buffer; if any maildirs have been removed or added, `nnmaildir` notices at these times.

  The value of the `directory` parameter should be a Lisp form which is processed by `eval` and `expand-file-name` to get the path of the directory for this server. The form is `eval`ed only when the server is opened; the resulting string is used until the server is closed. (If you don’t know about forms and `eval`, don’t worry—a simple string will work.) This parameter is not optional; you must specify it. I don’t recommend using `"~/Mail"` or a subdirectory of it; several other parts of Gnus use that directory by default for various things, and may get confused if `nnmaildir` uses it too. `"~/.nnmaildir"` is a typical value.

`target-prefix`

  This should be a Lisp form which is processed by `eval` and `expand-file-name`. The form is `eval`ed only when the server is opened; the resulting string is used until the server is closed.

  When you create a group on an `nnmaildir` server, the maildir is created with `target-prefix` prepended to its name, and a symlink pointing to that maildir is created, named with the plain group name. So if `directory` is `"~/.nnmaildir"` and `target-prefix` is `"../maildirs/"`, then when you create the group `foo`, `nnmaildir` will create `~/.nnmaildir/../maildirs/foo` as a maildir, and will create `~/.nnmaildir/foo` as a symlink pointing to `../maildirs/foo`.

  You can set `target-prefix` to a string without any slashes to create both maildirs and symlinks in the same `directory`; in this case, any maildirs found in `directory` whose names start with `target-prefix` will not be listed as groups (but the symlinks pointing to them will be).

  As a special case, if `target-prefix` is `""` (the default), then when you create a group, the maildir will be created in `directory` without a corresponding symlink. Beware that you cannot use `gnus-group-delete-group` on such groups without the `force` argument.

`directory-files`

  This should be a function with the same interface as `directory-files` (such as `directory-files` itself). It is used to scan the server’s `directory` for maildirs. This parameter is optional; the default is `nnheader-directory-files-safe` if `nnheader-directory-files-is-safe` is `nil`, and `directory-files` otherwise. (`nnheader-directory-files-is-safe` is checked only once when the server is opened; if you want to check it each time the directory is scanned, you’ll have to provide your own function that does that.)

`get-new-mail`

  If non-`nil`, then after scanning for new mail in the group maildirs themselves as usual, this server will also incorporate mail the conventional Gnus way, from `mail-sources` according to `nnmail-split-methods` or `nnmail-split-fancy`. The default value is `nil`.

  Do not use the same maildir both in `mail-sources` and as an `nnmaildir` group. The results might happen to be useful, but that would be by chance, not by design, and the results might be different in the future. If your split rules create new groups, remember to supply a `create-directory` server parameter.

Next: nnmaildir Group Parameters, Previous: MH Spool, Up: Choosing a Mail Back End [Contents][Index]