PUBLIC-INBOX-GLOSSARY(7)   public-inbox user manual   PUBLIC-INBOX-GLOSSARY(7)

       public-inbox-glossary - glossary for public-inbox

       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

       This is mainly intended for hackers of public-inbox, but may be useful
       for administrators of public-facing services and/or users building

       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 "num" column of the
               "over" table in "over.sqlite3"

       tid, THREADID
               A sequentially-assigned positive integer.  These integers are
               per-inbox or per-extindex.  In the future, this may be prefixed
               with "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 "tid" column of the "over" table in "over.sqlite3"

       blob    For email, this is the git blob object ID (SHA-(1|256)) of an
               RFC-(822|2822|5322) email message.

       IMAP EMAILID, JMAP Email Id
               To-be-decided.  This will likely be the git blob ID prefixed
               with "g" rather than the numeric UID to accommodate the same
               blob showing up in both an extindex and inbox (or multiple

               The name of the NNTP newsgroup, see public-inbox-config(5).

       IMAP (folder|mailbox) slice
               A 50K slice of a newsgroup to accommodate the limitations of
               IMAP clients with public-inbox-imapd(1).  This is the
               "newsgroup" name with a ".$INTEGER_SUFFIX", e.g. a newsgroup
               named "inbox.test" would have its first slice named
               "inbox.test.0", and second slice named "inbox.test.1" and so

               If implemented, the RFC 8474 MAILBOXID of an IMAP slice will
               NOT have the same Mailbox Id as the public-facing full JMAP

       inbox name, public JMAP mailbox name
               The HTTP(S) name of the public-inbox ("publicinbox.<name>.*").
               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 public-inbox-nntpd(1) or

       epoch   A git repository used for blob storage.  See "GIT EPOCHS" in

       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 "Status:" and
               "X-Status:" headers for mbox(5), as system IMAP FLAGS (RFC 3501
               section 2.3.2), or Maildir info flags.

               public-inbox-watch(1) ignores drafts and trashed (deleted)
               messages.  lei-import(1) ignores trashed (deleted) messages,
               but it imports drafts.

       labels, private JMAP mailboxes
               For 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 notmuch(1) and non-system IMAP FLAGS.

       volatile metadata (VMD)
               For lei(1) users only, this refers to the combination of
               keywords and labels which are subject to frequent change
               independently of immutable message content.

       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.

       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.

       Copyright 2021 all contributors <>

       License: AGPL-3.0+ <>

       public-inbox-v2-format(5), public-inbox-v1-format(5),
       public-inbox-extindex-format(5), gitglossary(7)

public-inbox.git                  1993-10-02          PUBLIC-INBOX-GLOSSARY(7)