=head1 NAME

public-inbox-watch - mailbox watcher for public-inbox

=head1 SYNOPSIS

	public-inbox-watch

In ~/.public-inbox/config:

	[publicinbox "test"]
		; generic public-inbox-config keys:
		address = test@example.com
		url = http://example.com/test
		inboxdir = /path/to/test.example.com.git

		; config keys specific to public-inbox-watch:

		watch = maildir:/path/to/maildirs/.INBOX.test/

		; optional, emails that don't have a header matching
		; value will be skipped
		watchheader = List-Id:<test.example.com>

	[publicinboxwatch]
		; optional, enable use of spamc(1) for checking:
		spamcheck = spamc

		; optional, emails marked as read which appear
		; here will be trained as spam and deleted from
		; the inboxdirs of any public-inboxes which are
		; configured for watch.
		; This is global for all publicinbox.* sections
		watchspam = maildir:/path/to/maildirs/.INBOX.spam

=head1 DESCRIPTION

public-inbox-watch allows watching a mailbox or newsgroup
for the arrival of new messages and automatically
importing them into public-inbox git repositories and indices.
public-inbox-watch is useful in situations when a user wishes to
mirror an existing mailing list, but has no access to run
L<public-inbox-mda(1)> on a server.  Unlike public-inbox-mda
which is invoked once per message, public-inbox-watch is a
persistent process, making it faster for after-the-fact imports
of large Maildirs.

Upon startup, it scans the mailbox for new messages to be
imported while it was not running.

All versions of public-inbox-watch support Maildirs.  public-inbox
1.6.0 added support for IMAP folders and NNTP newsgroups.
public-inbox 2.0 adds support for MH directories.  There are no
plans to support the mbox family since new messages are expensive
to detect in large mboxes.

public-inbox-watch should be run inside a L<screen(1)> session
or as a L<systemd(1)> service.  Errors are emitted to stderr.

=head1 OPTIONS

public-inbox-watch takes no command-line options.

=head1 CONFIGURATION

These configuration knobs should be used in the
L<public-inbox-config(5)> file.

=over 8

=item publicinboxImport.dropUniqueUnsubscribe

See L<public-inbox-config(5)/publicinboxImport.dropUniqueUnsubscribe>

=item publicinbox.<name>.watch

A location to watch.  public-inbox 1.5.0 and earlier only supported
C<maildir:> paths:

	[publicinbox "test"]
		watch = maildir:/path/to/maildirs/.INBOX.test/

public-inbox 1.6.0+ supports C<nntp://>, C<nntps://>,
C<imap://> and C<imaps://> URLs:

		watch = nntp://news.example.com/inbox.test.group
		watch = imaps://user@mail.example.com/INBOX.test

2.0+ supports MH:

		watch = mh:/path/to/MH/inbox.test

This may be specified multiple times to combine several mailboxes
into a single public-inbox.  URLs requiring authentication
will require L<netrc(5)> and/or L<git-credential(1)> (preferred) to fill
in the username and password.

public-inbox 2.0+ also supports boolean C<false> to prevent the global
L</publicinboxwatch.watchspam> directive from writing to the inbox.

Default: none

=item publicinbox.<name>.watchheader

	[publicinbox "test"]
		watchheader = List-Id:<test.example.com>

If specified, L<public-inbox-watch(1)> will only process mail
matching the given header.  If specified multiple times in
public-inbox 1.5 or later, mail will be processed if it matches
any of the values.  Only the last value was used in public-inbox
1.4 and earlier.

Default: none

=item publicinboxwatch.spamcheck

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.

Default: none

=item publicinboxwatch.watchspam

A Maildir to watch for confirmed spam messages to appear in.
Messages which appear in this folder with the (S)een flag
will be hidden from all configured inboxes based on Message-ID
and content matching.

Messages without the (S)een flag are not considered for hiding.
This hiding affects all configured public-inboxes in PI_CONFIG.

As with C<publicinbox.$NAME.watch>, C<imap://> and C<imaps://> URLs
are supported in public-inbox 1.6.0+, and C<MH> in 2.0+.

Default: none; only for L<public-inbox-watch(1)> users

=item imap.Starttls / imap.$URL.Starttls

Whether or not to use C<STARTTLS> on plain C<imap://> connections.

May be specified for certain URLs via L<git-config(1)/--get-urlmatch>
in C<git(1)> 1.8.5+.

Default: C<true>

=item imap.Compress / imap.$URL.Compress

Whether or not to use the IMAP COMPRESS (RFC4978) extension to
save bandwidth.  This is not supported by all IMAP servers and
some advertising this feature may not implement it correctly.

May be specified only for certain URLs if L<git(1)> 1.8.5+ is
installed to use L<git-config(1)/--get-urlmatch>

Default: C<false>

=item nntp.Starttls / nntp.$URL.Starttls

Whether or not to use C<STARTTLS> on plain C<nntp://> connections.

May be specified for certain URLs via L<git-config(1)/--get-urlmatch>
in C<git(1)> 1.8.5+.

Default: C<false> if the hostname is a Tor C<.onion>, C<true> otherwise

=back

=head1 SIGNALS

=over 8

=item SIGHUP

Reload the config file (default: ~/.public-inbox/config)

=item SIGUSR1

Rescan all watched mailboxes.  This is done automatically after
startup.

=item SIGQUIT / SIGTERM / SIGINT

Gracefully shut down.  In-flight messages will be stored
and indexed.

=back

=head1 ENVIRONMENT

=over 8

=item PI_CONFIG

config file. default: ~/.public-inbox/config
See L<public-inbox-config(5)>

=item PERL_INLINE_DIRECTORY

This may affect any public-inbox processes, but is intended
for long-lived ones such as C<public-inbox-watch> or network
daemons.  See L<public-inbox-daemon(8)>.

=back

=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 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<public-inbox-config(5)>
