| =head1 NAME |
| |
| public-inbox-glossary - glossary for public-inbox |
| |
| =head1 DESCRIPTION |
| |
| public-inbox combines several independently-developed protocols |
| and data formats with overlapping concepts. This document is |
| intended as a guide to identify and clarify overlapping concepts |
| with different names. |
| |
| This is mainly intended for hackers of public-inbox, but may be useful |
| for administrators of public-facing services and/or users building |
| tools. |
| |
| =head1 TERMS |
| |
| =over 8 |
| |
| =item IMAP UID, NNTP article number, on-disk Xapian docid |
| |
| A sequentially-assigned positive integer. These integers are per-inbox, |
| or per-extindex. This is the C<num> column of the C<over> table in |
| C<over.sqlite3> |
| |
| =item tid, THREADID |
| |
| A sequentially assigned positive integer. These integers are |
| per-inbox or per-extindex. In the future, this may be prefixed |
| with C<T> for JMAP (RFC 8621) and RFC 8474. This may not be |
| strictly compliant with RFC 8621 since inboxes and extindices |
| are considered independent entities from each other. |
| |
| This is the C<tid> column of the C<over> table in C<over.sqlite3> |
| |
| =item blob |
| |
| For email, this is the git blob object ID (SHA-(1|256)) of an |
| RFC-(822|2822|5322) email message. |
| |
| =item IMAP EMAILID, JMAP Email Id |
| |
| To be decided. This will likely be the git blob ID prefixed with C<g> |
| rather than the numeric UID to accommodate the same blob showing |
| up in both an extindex and inbox (or multiple extindices). |
| |
| =item newsgroup |
| |
| The name of the NNTP newsgroup, see L<public-inbox-config(5)>. |
| |
| =item IMAP (folder|mailbox) slice |
| |
| A 50K slice of a newsgroup to accommodate the limitations of IMAP |
| clients with L<public-inbox-imapd(1)>. This is the C<newsgroup> |
| name with a C<.$INTEGER_SUFFIX>, e.g. a newsgroup named C<inbox.test> |
| would have its first slice named C<inbox.test.0>, and second slice |
| named C<inbox.test.1> and so forth. |
| |
| If implemented, the RFC 8474 MAILBOXID of an IMAP slice will NOT have |
| the same Mailbox Id as the public-facing full JMAP mailbox. |
| |
| =item inbox name, public JMAP mailbox name |
| |
| The HTTP(S) name of the public-inbox |
| (C<publicinbox.E<lt>nameE<gt>.*>). JMAP will use this name |
| rather than the newsgroup name since public-facing JMAP will be |
| part of the PSGI code and not need a separate daemon like |
| L<public-inbox-nntpd(1)> or L<public-inbox-imapd(1)> |
| |
| =item epoch |
| |
| A git repository used for blob storage. See |
| L<public-inbox-v2-format(5)/GIT EPOCHS>. |
| |
| =item keywords, (IMAP|Maildir) flags, mbox Status + X-Status |
| |
| Private, per-message keywords or flags as described in RFC 8621 |
| section 10.4. These are conveyed in the C<Status:> and |
| C<X-Status:> headers for L<mbox(5)>, as system IMAP FLAGS |
| (RFC 3501 section 2.3.2), or Maildir info flags. |
| |
| L<public-inbox-watch(1)> ignores drafts and trashed (deleted) |
| messages. L<lei-import(1)> ignores trashed (deleted) messages, |
| but it imports drafts. |
| |
| =item labels, private JMAP mailboxes |
| |
| For L<lei(1)> users only. This will allow lei users to place |
| the same email into one or more virtual folders for |
| ease of filtering. This is NOT tied to public-inbox names, as |
| messages stored by lei may not be public. |
| |
| These are similar in spirit to arbitrary freeform "tags" |
| in mail software such as L<notmuch(1)> and non-system IMAP FLAGS. |
| |
| =item volatile metadata (VMD) |
| |
| For L<lei(1)> users only, this refers to the combination of |
| keywords and labels which are subject to frequent change |
| independently of immutable message content. |
| |
| =item IMAP INTERNALDATE, JMAP receivedAt, rt: search prefix |
| |
| The first valid timestamp value of Received: headers (top first). |
| If no Received: header exists, the Date: header is used, and the |
| current time if neither header(s) exist. When mirroring via |
| git, this is the git commit time. |
| |
| =item IMAP SENT*, JMAP sentAt, dt: and d: search prefixes |
| |
| The first valid timestamp value of the Date: header(s). |
| If no Date: header exists, the time from the Received: header is |
| used, and then the current time if neither header exists. |
| When mirroring via git, this is the git author time. |
| |
| =back |
| |
| =head1 COPYRIGHT |
| |
| Copyright 2021 all contributors L<mailto:meta@public-inbox.org> |
| |
| License: AGPL-3.0+ L<http://www.gnu.org/licenses/agpl-3.0.txt> |
| |
| =head1 SEE ALSO |
| |
| L<public-inbox-v2-format(5)>, L<public-inbox-v1-format(5)>, |
| L<public-inbox-extindex-format(5)>, L<gitglossary(7)> |