=head2 EXAMPLE
[publicinbox "test"]
- mainrepo = /home/user/path/to/test.git
+ inboxdir = /home/user/path/to/test.git
; multiple addresses are supported
address = test@example.com
; address = alternate@example.com
url = http://example.com/test
newsgroup = inbox.test
+ ; backwards compatibility with public-inbox pre-1.2.0,
+ ; "inboxdir" takes precedence over "mainrepo"
+ mainrepo = /home/user/path/to/test.git
+
=head2 VARIABLES
=over 8
Default: none, required
-=item publicinbox.<name>.mainrepo
+=item publicinbox.<name>.inboxdir
The absolute path to the directory which hosts the
public-inbox. This must be specified once.
+This was previously known as "mainrepo", which remains supported,
+but "inboxdir" takes precedence.
+
Default: none, required
=item publicinbox.<name>.url
[publicinbox "test"]
watchheader = List-Id:<test.example.com>
+If specified, L<public-inbox-watch(1)> will only process mail matching
+the given header. Multiple values are not currently supported.
+
Default: none; only for L<public-inbox-watch(1)> users
+=item publicinbox.<name>.listid
+
+The L<rfc2919|https://tools.ietf.org/html/rfc2919> header without
+angle brackets for L<public-inbox-mda(1)> deliveries and
+L<public-inbox-watch(1)>.
+
+For public-inbox-watch users, this is a shortcut for specifying
+C<publicinbox.$NAME.watchheader=List-Id:<foo.example.com>>
+
+For public-inbox-mda users, this may be used to avoid recipient
+matching via C<ORIGINAL_RECIPIENT> environment variable.
+
+This may be specified multiple times for merging multiple mailing
+lists into a single public-inbox, only one C<List-Id> header
+needs to match.
+
+Default: none
+
=item publicinbox.<name>.nntpmirror
This may be the full NNTP URL of an independently-run mirror.
Default: none
+=item publicinbox.<name>.indexlevel
+
+The indexing level for L<public-inbox-index(1)>
+
+C<basic> only requires L<DBD::SQLite(3pm)> and provides all
+NNTP functionality along with thread-awareness in the WWW
+interface.
+
+C<medium> requires L<Search::Xapian(3pm)> to provide full-text
+term search functionality in the WWW UI.
+
+C<full> also includes positional information used by Xapian to
+allow for searching for phrases using quoted text.
+(e.g. C<"looking for a complete sentence">)
+
+Default: C<full>
+
=item publicinbox.<name>.httpbackendmax
If a digit, the maximum number of parallel
history. Other spam filtering backends may be supported in
the future.
+This requires L<public-inbox-watch(1)>, but affects all configured
+public-inboxes in PI_CONFIG.
+
Default: none
=item publicinboxwatch.watchspam
-This may be set to C<spamc> to enable the use of SpamAssassin
-L<spamc(1)> for filtering spam before it is imported into git
-history. Other spam filtering backends may be supported in
-the future. This requires L<public-inbox-watch(1)>, but affects
-all configured public-inboxes in PI_CONFIG.
+A Maildir to watch for confirmed spam messages to appear in.
+Messages which appear in this folder with the (S)een Maildir flag
+will be hidden from all configured inboxes based on Message-ID
+and content matching.
-Default: none
+Messages without the (S)een Maildir flag are not considered for hiding.
+
+Default: none; only for L<public-inbox-watch(1)> users
=item publicinbox.nntpserver
A comma-delimited list of listings to hide the inbox from.
-Valid values are currently "www".
+Valid values are currently C<www> and C<manifest>.
Default: none
Default: basename of C<publicinbox.cgitbin>, /var/www/htdocs/cgit/
or /usr/share/cgit/
+=item publicinbox.mailEditor
+
+See L<public-inbox-edit(1)>
+
=item publicinbox.wwwlisting
Enable a HTML listing style when the root path of the URL '/' is accessed.
=over 8
-=item all
+=item * all
+- Show all inboxes
-Show all inboxes
-
-=item 404
-
-Return a 404 page. This is useful to allow customization with
+=item * 404
+- Return a 404 page. This is useful to allow customization with
L<Plack::App::Cascade(3pm)>
-=item match=domain
-
-Only show inboxes with URLs which belong to the domain of the HTTP
-request
+=item * match=domain
+- Only show inboxes with URLs which belong to the domain of the HTTP request
=for TODO comment
=back
-Default: 404
+Default: C<404>
+
+=item publicinbox.grokmanifest
+
+Controls the generation of a grokmirror-compatible gzipped JSON file
+at the top-level of the PSGI interface. You generally do not need to
+change this from the default.
+
+Valid values are:
+
+=over 8
+
+=item * match=domain
+- Only include inboxes with URLs which belong to the domain of
+the HTTP request. This is compatible with virtual hosting where
+several domains come from the same host.
+
+=item * all
+- All inboxes are present in C<manifest.js.gz>, regardless of domain.
+Only use this if you're serving HTTP requests in a domain-agnostic manner.
+
+=item * 404
+- C<manifest.js.gz> will only contain an empty JSON array.
+This does NOT affect C<$INBOX_URL/manifest.js.gz>, which will
+always contain all git repos used by the inbox at C<$INBOX_URL>
+
+=back
+
+Default: C<match=domain>
=back
; big inboxes which require lots of memory to clone:
[publicinbox "big1"]
- mainrepo = /path/to/big1
+ inboxdir = /path/to/big1
address = big1@example.com
httpbackendmax = big
[publicinbox "big2"]
- mainrepo = /path/to/big2
+ inboxdir = /path/to/big2
address = big2@example.com
httpbackendmax = big
; tiny inboxes which are easily cloned:
[publicinbox "tiny1"]
- mainrepo = /path/to/tiny1
+ inboxdir = /path/to/tiny1
address = tiny1@example.com
[publicinbox "tiny2"]
- mainrepo = /path/to/tiny2
+ inboxdir = /path/to/tiny2
address = tiny2@example.com
[publicinboxlimiter "big"]
=head1 COPYRIGHT
-Copyright 2016-2018 all contributors L<mailto:meta@public-inbox.org>
+Copyright 2016-2019 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<git(1)>, L<git-config(1)>, L<public-inbox-daemon(8)>,
-L<public-inbox-mda(1)>, L<public-inbox-watch(1)>
+L<public-inbox-mda(1)>, L<public-inbox-watch(1)>,
+L<grokmirror|https://git.kernel.org/pub/scm/utils/grokmirror/grokmirror.git>