public-inbox.git  about / heads / tags
an "archives first" approach to mailing lists
blob 92bc9ac543fa09e2171799f7a73e9077dfdbff49 2006 bytes (raw)
$ git show HEAD:Documentation/lei-daemon.pod	# shows this blob on the CLI

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
=head1 NAME

lei-daemon - technical information for local email interface daemon

=head1 DESCRIPTION

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 L<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.

=head2 worker processes

Most commands cause lei-daemon to L<fork(2)> new worker
processes to isolate and parallelize work.  lei-daemon is
significantly more aggressive than read-only
L<public-inbox-daemon(8)> processes with regards to resource use
since it's not designed to support C10K/C100K scenarios.

=head2 file descriptor passing

FD passing is used to reduce IPC costs for bulk I/O when
importing large mboxes from stdin and dumping large mboxes
to stdout.

=head2 SOCK_SEQPACKET

SOCK_SEQPACKET sockets are used for both communicating with
L<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.

=head2 file monitoring

Inotify or EVFILT_VNODE is used depending on the platform
to monitor Maildirs for changes and track keyword changes.

The listen socket (default: C<$XDG_RUNTIME_DIR/lei/5.seq.sock>)
is also monitored, and the daemon will automatically shutdown
if it is unlinked.

=head1 CONTACT

Feedback welcome via plain-text mail to L<mailto:meta@public-inbox.org>

The mail archives are hosted at L<https://public-inbox.org/meta/> and
L<http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/meta/>

=head1 COPYRIGHT

Copyright all contributors L<mailto:meta@public-inbox.org>

License: AGPL-3.0+ L<https://www.gnu.org/licenses/agpl-3.0.txt>

=head1 SEE ALSO

L<lei-overview(7)>, L<lei-daemon-kill(1)>, L<lei-daemon-pid(1)>

git clone https://public-inbox.org/public-inbox.git
git clone http://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/public-inbox.git