This documentation is a high-level overview for developers and administrators interested in how lei
works.
lei-daemon is a background daemon which powers the lei(1) command-line tool. It may support virtual
users and read-write IMAP+JMAP APIs in the future. It is designed to optimize shell completion by
avoiding module loading costs, monitor Maildirs (and in the near future, IMAP folders) for changes.
workerprocesses
Most commands cause lei-daemon to fork(2) new worker processes to isolate and parallelize work. lei-
daemon is significantly more aggressive than read-only public-inbox-daemon(8) processes with regards to
resource use since it's not designed to support C10K/C100K scenarios.
filedescriptorpassing
FD passing is used to reduce IPC costs for bulk I/O when importing large mboxes from stdin and dumping
large mboxes to stdout.
SOCK_SEQPACKET
SOCK_SEQPACKET sockets are used for both communicating with lei(1) and to internal workers.
SOCK_SEQPACKET guarantees reliability (unlike SOCK_DGRAM), allows easy load distribution, and saves
developers the trouble of maintaining stream parsers.
filemonitoring
Inotify or EVFILT_VNODE is used depending on the platform to monitor Maildirs for changes and track
keyword changes.
The listen socket (default: "$XDG_RUNTIME_DIR/lei/5.seq.sock") is also monitored, and the daemon will
automatically shutdown if it is unlinked.