.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "PUBLIC-INBOX-GLOSSARY 7" .TH PUBLIC-INBOX-GLOSSARY 7 "1993-10-02" "public-inbox.git" "public-inbox user manual" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" public\-inbox\-glossary \- glossary for public\-inbox .SH "DESCRIPTION" .IX Header "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. .PP This is mainly intended for hackers of public-inbox, but may be useful for administrators of public-facing services and/or users building tools. .SH "TERMS" .IX Header "TERMS" .IP "\s-1IMAP UID, NNTP\s0 article number, on-disk Xapian docid" 8 .IX 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 \f(CW\*(C`num\*(C'\fR column of the \f(CW\*(C`over\*(C'\fR table in \&\f(CW\*(C`over.sqlite3\*(C'\fR .IP "tid, \s-1THREADID\s0" 8 .IX Item "tid, THREADID" A sequentially-assigned positive integer. These integers are per-inbox or per-extindex. In the future, this may be prefixed with \f(CW\*(C`T\*(C'\fR for \s-1JMAP\s0 (\s-1RFC 8621\s0) and \s-1RFC 8474.\s0 This may not be strictly compliant with \s-1RFC 8621\s0 since inboxes and extindices are considered independent entities from each other. .Sp This is the \f(CW\*(C`tid\*(C'\fR column of the \f(CW\*(C`over\*(C'\fR table in \f(CW\*(C`over.sqlite3\*(C'\fR .IP "blob" 8 .IX Item "blob" For email, this is the git blob object \s-1ID\s0 (\s-1SHA\-\s0(1|256)) of an \&\s-1RFC\-\s0(822|2822|5322) email message. .IP "\s-1IMAP EMAILID, JMAP\s0 Email Id" 8 .IX Item "IMAP EMAILID, JMAP Email Id" To-be-decided. This will likely be the git blob \s-1ID\s0 prefixed with \f(CW\*(C`g\*(C'\fR rather than the numeric \s-1UID\s0 to accommodate the same blob showing up in both an extindex and inbox (or multiple extindices). .IP "newsgroup" 8 .IX Item "newsgroup" The name of the \s-1NNTP\s0 newsgroup, see \fBpublic\-inbox\-config\fR\|(5). .IP "\s-1IMAP\s0 (folder|mailbox) slice" 8 .IX Item "IMAP (folder|mailbox) slice" A 50K slice of a newsgroup to accommodate the limitations of \s-1IMAP\s0 clients with \fBpublic\-inbox\-imapd\fR\|(1). This is the \f(CW\*(C`newsgroup\*(C'\fR name with a \f(CW\*(C`.$INTEGER_SUFFIX\*(C'\fR, e.g. a newsgroup named \f(CW\*(C`inbox.test\*(C'\fR would have its first slice named \f(CW\*(C`inbox.test.0\*(C'\fR, and second slice named \f(CW\*(C`inbox.test.1\*(C'\fR and so forth. .Sp If implemented, the \s-1RFC 8474 MAILBOXID\s0 of an \s-1IMAP\s0 slice will \s-1NOT\s0 have the same Mailbox Id as the public-facing full \s-1JMAP\s0 mailbox. .IP "inbox name, public \s-1JMAP\s0 mailbox name" 8 .IX Item "inbox name, public JMAP mailbox name" The \s-1HTTP\s0(S) name of the public-inbox (\f(CW\*(C`publicinbox..*\*(C'\fR). \s-1JMAP\s0 will use this name rather than the newsgroup name since public-facing \s-1JMAP\s0 will be part of the \s-1PSGI\s0 code and not need a separate daemon like \&\fBpublic\-inbox\-nntpd\fR\|(1) or \fBpublic\-inbox\-imapd\fR\|(1) .IP "epoch" 8 .IX Item "epoch" A git repository used for blob storage. See \&\*(L"\s-1GIT EPOCHS\*(R"\s0 in \fBpublic\-inbox\-v2\-format\fR\|(5). .IP "keywords, (IMAP|Maildir) flags, mbox Status + X\-Status" 8 .IX Item "keywords, (IMAP|Maildir) flags, mbox Status + X-Status" Private, per-message keywords or flags as described in \s-1RFC 8621\s0 section 10.4. These are conveyed in the \f(CW\*(C`Status:\*(C'\fR and \&\f(CW\*(C`X\-Status:\*(C'\fR headers for \fBmbox\fR\|(5), as system \s-1IMAP FLAGS\s0 (\s-1RFC 3501\s0 section 2.3.2), or Maildir info flags. .Sp \&\fBpublic\-inbox\-watch\fR\|(1) ignores drafts and trashed (deleted) messages. \fBlei\-import\fR\|(1) ignores trashed (deleted) messages, but it imports drafts. .IP "labels, private \s-1JMAP\s0 mailboxes" 8 .IX Item "labels, private JMAP mailboxes" For \fBlei\fR\|(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 \s-1NOT\s0 tied to public-inbox names, as messages stored by lei may not be public. .Sp These are similar in spirit to arbitrary freeform \*(L"tags\*(R" in mail software such as \fBnotmuch\fR\|(1) and non-system \s-1IMAP FLAGS.\s0 .IP "volatile metadata (\s-1VMD\s0)" 8 .IX Item "volatile metadata (VMD)" For \fBlei\fR\|(1) users only, this refers to the combination of keywords and labels which are subject to frequent change independently of immutable message content. .IP "\s-1IMAP INTERNALDATE, JMAP\s0 receivedAt, rt: search prefix" 8 .IX 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. .IP "\s-1IMAP\s0 SENT*, \s-1JMAP\s0 sentAt, dt: and d: search prefixes" 8 .IX 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. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2021 all contributors .PP License: \s-1AGPL\-3.0+\s0 .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBpublic\-inbox\-v2\-format\fR\|(5), \fBpublic\-inbox\-v1\-format\fR\|(5), \&\fBpublic\-inbox\-extindex\-format\fR\|(5), \fBgitglossary\fR\|(7)