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 License: AGPL-3.0+