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.
- 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
numcolumn of the
- tid, THREADID
A sequentially-assigned positive integer. These integers are per-inbox or per-extindex. In the future, this may be prefixed with
Tfor 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
tidcolumn of the
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
grather than the numeric UID to accomodate the same blob showing up in both an extindex and inbox (or multiple extindices).
The name of the NNTP newsgroup, see public-inbox-config(5).
- IMAP (folder|mailbox) slice
A 50K slice of a newsgroup to accomodate the limitations of IMAP clients with public-inbox-imapd(1). This is the
newsgroupname with a
.$INTEGER_SUFFIX, e.g. a newsgroup named
inbox.testwould have its first slice named
inbox.test.0, and second slice named
inbox.test.1and 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.
- 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 public-inbox-imapd(1)
A git repository used for blob storage. See “GIT EPOCHS” in public-inbox-v2-format(5).
- 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
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 <mailto:email@example.com>
License: AGPL-3.0+ <http://www.gnu.org/licenses/agpl-3.0.txt>
public-inbox-v2-format(5), public-inbox-v1-format(5), public-inbox-extindex-format(5), gitglossary(7)