=head1 NAME

public-inbox-overview - an overview of public-inbox

=head1 DESCRIPTION

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

=over 4

=item 1

Mirroring existing public-inboxes.

=item 2

Mirroring mailing lists.

=item 3

Hosting standalone inboxes.

=back

=head2 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 L<git(1)> commands.

Instructions are different depending on whether the inbox
is L<public-inbox-v1-format(5)> or L<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 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 L</"Serving public-inboxes"> below for info on how to expose
your mirror to other readers.

=head2 Mirroring mailing lists

Mirroring mailing lists may be done by any reader
of a mailing list using L<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 L<public-inbox-watch(1)> manual for configuring
C<watch>, C<watchheader>, C<listid> and the optional C<spamcheck>
and C<watchspam> entries.

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

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

	public-inbox-index INBOX_DIR

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

=head2 Hosting standalone inboxes

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

=head2 Serving public-inboxes

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

See L<public-inbox-httpd(1)> and L<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 L<Plack> may also use
L<PublicInbox::WWW> with the preferred server instead of
L<public-inbox-httpd(1)>

=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 2016-2021 all contributors L<mailto:meta@public-inbox.org>

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