nnmaildir
stores mail in the maildir format, with each maildir
corresponding to a group in Gnus. This format is documented here:
https://cr.yp.to/proto/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.