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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
| | public-inbox / lei installation
-------------------------------
This is for people who want to run public-inbox on their server or
lei as a command-line tool. Any HTTP, IMAP, NNTP, or POP3 client can
access public-inbox servers, as can git-{clone,fetch} on the HTTP(S)
endpoint.
Since our marketing sucks, ease of installation is an important goal
for this project and we only depend on distro-provided packages.
As of 2024, public-inbox is packaged by several OS distributions,
listed in alphabetical order: Debian, GNU Guix, NixOS, and Void Linux.
public-inbox is developed on Debian GNU/Linux systems and will
never depend on packages outside of the "main" component of
the "oldstable" distribution, currently Debian 11.x ("bullseye"),
but older versions of Debian remain supported (as are newer ones).
Most packages are available in other GNU/Linux distributions,
Alpine Linux, FreeBSD, NetBSD, OpenBSD, and DragonflyBSD.
CentOS 7.x users will likely want newer git and Xapian for
better performance and v2 inbox support:
https://public-inbox.org/meta/20210421151308.yz5hzkgm75klunpe@nitro.local/
As of 2.0, install/deps.perl makes it easier to install target
dependencies needed for certain features. See install/README in
the source tree for more info.
Also see sa_config/ directories in the source tree for recommended
SpamAssassin configuration examples if using public-inbox-mda or
public-inbox-watch.
Requirements
------------
public-inbox requires a number of other packages to access its full
functionality. The core tools are, of course:
* Git (1.8.0+, 2.6+ for writing v2 inboxes)
* Perl 5.12.0+
* DBD::SQLite (needed for IMAP, NNTP, message threading, and v2 inboxes)
To accept incoming mail into a public inbox, you'll likely want:
* MTA - postfix is recommended (for public-inbox-mda)
* SpamAssassin (spamc/spamd) (for public-inbox-watch/public-inbox-mda)
Beyond that, there is one non-standard Perl package required:
* URI deb: liburi-perl
pkg: p5-URI
rpm: perl-URI
(for HTML/Atom generation)
Where "deb" indicates package names for Debian-derived distributions,
"pkg" is for the FreeBSD package (and some other common BSDs, too),
"pkgin" for NetBSD, "apk" for Alpine Linux and "rpm" is for RPM-based
distributions (only known to work on Fedora).
Most users will likely also want the following:
- DBD::SQLite deb: libdbd-sqlite3-perl
pkg: p5-DBD-SQLite
rpm: perl-DBD-SQLite
(for v2, IMAP, NNTP, or gzipped mboxes)
- Xapian(.pm) (or Search::Xapian) deb: libsearch-xapian-perl
pkg: p5-Xapian (FreeBSD, NetBSD)
xapian-bindings-perl (OpenBSD)
rpm: perl-Search-Xapian
(required for lei; HTTP and IMAP search)
Other modules might be useful as well, depending on your use case and
preferences:
- Plack deb: libplack-perl
pkg: p5-Plack
rpm: perl-Plack, perl-Plack-Test,
(for WWW interface, public-inbox-httpd(1))
- Inline::C deb: libinline-c-perl
pkg: p5-Inline-C
rpm: perl-Inline (or perl-Inline-C)
(required for lei on *BSD;
speeds up process spawning on Linux,
see public-inbox-daemon(8))
- Email::Address::XS deb: libemail-address-xs-perl
pkg: p5-Email-Address-XS
(correct parsing of tricky email
addresses, phrases and comments)
- Parse::RecDescent deb: libparse-recdescent-perl
pkg: p5-Parse-RecDescent
rpm: perl-ParseRecDescent
(for public-inbox-imapd(1))
- Mail::IMAPClient deb: libmail-imapclient-perl
pkg: p5-Mail-IMAPClient
rpm: perl-Mail-IMAPClient
(only for lei and public-inbox-watch
when reading from IMAP)
- BSD::Resource deb: libbsd-resource-perl
pkg: p5-BSD-Resource
rpm: perl-BSD-Resource
(only for PSGI limiters,
see public-inbox-config(5))
- Plack::Middleware::ReverseProxy deb: libplack-middleware-reverseproxy-perl
pkg: p5-Plack-Middleware-ReverseProxy
rpm: perl-Plack-Middleware-ReverseProxy
(ensures redirects are correct when running
behind nginx or Varnish)
* highlight deb: libhighlight-perl
(for syntax highlighting with coderepo)
* xapian-tools deb: xapian-tools
pkg: xapian-core
pkgin: xapian
rpm: xapian-core
(for public-inbox-compact(1) and
public-inbox-cindex(1))
* Xapian development files deb: libxapian-dev
pkg: xapian-core
pkgin: xapian
apk: xapian-core-dev
rpm: xapian-core-devel / xapian14-core-libs
(for public-inbox-cindex(1) and future
performance enhancements)
* curl (tool) deb, pkg, rpm: curl
(for lei HTTP(S) externals with curl and
public-inbox-clone(1))
- Linux::Inotify2 deb: liblinux-inotify2-perl
rpm: perl-Linux-Inotify2
(for lei, public-inbox-watch and -imapd
on Linux; not required as of 2.0))
- IO::KQueue pkg: p5-IO-KQueue
(for lei, public-inbox-watch and -imapd
on *BSDs only)
- Net::Server deb: libnet-server-perl
pkg: p5-Net-Server
rpm: perl-Net-Server
(for HTTP/IMAP/NNTP background daemons,
not needed as systemd services or
foreground servers)
The following module is typically pulled in by dependencies listed
above, so there is no need to explicitly install it:
- DBI deb: libdbi-perl
pkg: p5-DBI
rpm: perl-DBI
(pulled in by DBD::SQLite)
Uncommonly needed modules (see HACKING for development-only modules):
- Socket6 deb: libsocket6-perl
pkg: p5-Socket6
rpm: perl-Socket6
(pulled in by SpamAssassin and Net::Server,
only necessary if using IPv6 with
Plack::Middleware::AccessLog or similar
on Perl <= 5.12)
- Crypt::CBC deb: libcrypt-cbc-perl
pkg: p5-Crypt-CBC
(for PublicInbox::Unsubscribe (rarely used))
- Date::Parse deb: libtimedate-perl
pkg: p5-TimeDate
rpm: perl-TimeDate
(for broken, mostly historical emails)
standard MakeMaker installation (Perl)
--------------------------------------
To use MakeMaker, you need to ensure ExtUtils::MakeMaker is available.
This is typically installed with Perl, but RPM-based systems will likely
need to install the `perl-ExtUtils-MakeMaker' package.
Once the dependencies are installed, you should be able to build and
install the system (into /usr/local) with:
perl Makefile.PL
make
make test # see HACKING for faster tests for hackers
make install # root permissions may be needed
symlink-install (public-inbox.git and 1.7.0+)
---------------------------------------------
For users who lack permissions and/or wish to minimize their
installation footprint, the "symlink-install" target is available in
public-inbox.git. The following installs symlinks to $HOME/bin
pointing to the source tree:
perl Makefile.PL
make symlink-install prefix=$HOME
Other installation notes
------------------------
Debian 8.x (jessie) users, use Debian 8.5 or later if using Xapian:
https://bugs.debian.org/808610
public-inbox-* commands will never store unregeneratable data in
Xapian nor any other search database we might use; Xapian
corruption will not destroy critical data. Note: `lei' DOES store
unregeneratable data in Xapian and SQLite.
See the public-inbox-overview(7) man page for the next steps once
the installation is complete.
The following required packages are part of the Perl standard
library. Debian-based distros put them in "libperl5.$MINOR" or
"perl-modules-5.$MINOR"; and FreeBSD puts them in "perl5".
RPM-based distros split them out into separate packages:
* autodie rpm: perl-autodie
* Digest::SHA rpm: perl-Digest-SHA
* Data::Dumper rpm: perl-Data-Dumper
* IO::Compress rpm: perl-IO-Compress
* Sys::Syslog rpm: perl-Sys-Syslog
* Text::ParseWords rpm: perl-Text-Parsewords
Copyright
---------
Copyright all contributors <meta@public-inbox.org>
License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
|