public-inbox-overview - Man Page

an overview of public-inbox


public-inbox consists of many pieces which may be used independently or in conjunction of each other for:

  1. Mirroring existing public-inboxes.
  2. Mirroring mailing lists.
  3. Hosting standalone inboxes.

Mirroring existing public-inboxes

Mirroring existing public-inboxes is the easiest way to get started.  Your mirror will remain dependent on the REMOTE_URL you are mirroring and you only need to use two new commands in addition to common git(1) commands.

Instructions are different depending on whether the inbox is public-inbox-v1-format(5) or public-inbox-v2-format(5). See the "Archives are clonable:" part of the WWW interface of a given inbox for cloning instructions specific to that inbox.  The instructions are roughly:

  # for v1 inboxes:
  git clone --mirror URL INBOX_DIR

  # for v2 inboxes (each epoch needs to be cloned):
  git clone --mirror URL/EPOCH INBOX_DIR/git/EPOCH.git

  # The following should create the necessary entry in
  # ~/.public-inbox/config, use "-V2" only for v2 inboxes:
  public-inbox-init [-V2] NAME INBOX_DIR MY_URL LIST_ADDRESS

  # Optional but strongly recommended for hosting HTTP
  # (and required for NNTP)
  # enable overview (requires DBD::SQLite) and, if Search::Xapian is
  # available, search:
  public-inbox-index INBOX_DIR

  # Periodically fetch the repo using git-fetch(1)
  # for v1 inboxes:
  git --git-dir=INBOX_DIR fetch

  # for v2 (in most cases, only the newest epoch needs to be fetched):
  git --git-dir=INBOX_DIR/git/EPOCH.git fetch

  # index new messages after fetching:
  public-inbox-index INBOX_DIR

See "Serving public-inboxes" below for info on how to expose your mirror to other readers.

Mirroring mailing lists

Mirroring mailing lists may be done by any reader of a mailing list using public-inbox-watch(1).

        # This will create a new v2 inbox:
        public-inbox-init -V2 NAME INBOX_DIR MY_URL LIST_ADDRESS

Then, see the public-inbox-watch(1) manual for configuring watch, watchheader, listid and the optional spamcheck and watchspam entries.

You will need to leave public-inbox-watch(1) running to keep the mailbox up-to-date as messages are delivered to the mailing list.

Running public-inbox-index(1) to create search indices is recommended.  public-inbox-watch(1) will automatically maintain the indices if they were created by public-inbox-index(1)

        public-inbox-index INBOX_DIR

Instead of using public-inbox-watch(1), using public-inbox-mda(1) with the --no-precheck option and relying on the listid directive in public-inbox-config(5) is also an option.

Hosting standalone inboxes

Using public-inbox-init(1) to initialize the inbox as in the other methods is recommended.  See public-inbox-mda(1) for more details; but this also requires MTA-specific knowledge.

Serving public-inboxes

Since public-inboxes are git repositories, they may be served to remote clients via git-daemon(1) as well as specialized HTTP and NNTP daemons distributed with public-inbox.

See public-inbox-httpd(1) and public-inbox-nntpd(1) for more information on using these daemons.

Hosting a public-inbox over HTTP or NNTP will never require write access to any files in the inbox directory.

Users familiar with PSGI and Plack may also use PublicInbox::WWW with the preferred server instead of public-inbox-httpd(1)


Feedback welcome via plain-text mail to <>

The mail archives are hosted at <> and <http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/meta/>


1993-10-02 public-inbox.git public-inbox user manual