.\" 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 "LEI-MAIL-FORMATS 5" .TH LEI-MAIL-FORMATS 5 "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" lei\-mail\-formats \- description of mail formats supported by lei .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBlei\-q\fR\|(1) supports writing to several existing mail formats for interoperability with existing mail user agents (\s-1MUA\s0); below is an overview of them to help users choose. .SH "Maildir" .IX Header "Maildir" The default output format when given a filesystem path, it supports parallel read-write access. Performance is acceptable for smaller directories, but degrades as mailboxes get larger. Speed and scalability are limited by kernel and filesystem performance due to the use of small files and large number of syscalls. .PP See also: and .SH "Mbox family" .IX Header "Mbox family" The mbox family consists of several incompatible formats. Locking for parallel access is supported, but may not be compatible across tools. With compression (e.g. \fBgzip\fR\|(1)), they require the least amount of space while offering good read-only performance. .PP Keyword updates (\f(CW\*(C`Status:\*(C'\fR and/or \f(CW\*(C`X\-Status:\*(C'\fR headers) generally require rewriting the entire mbox. .PP See also: , \&\fBmbox\fR\|(5) .SS "mboxo" .IX Subsection "mboxo" The traditional \s-1BSD\s0 format. It quotes \f(CW\*(C`From \*(C'\fR to \f(CW\*(C`>From \*(C'\fR, but lines already beginning with \f(CW\*(C`>From \*(C'\fR do not get quoted, thus automatic reversibility is not guaranteed. MUAs which favor \&\*(L"mboxcl\*(R" or \*(L"mboxcl2\*(R" may convert these automatically to their preferred format. .PP Truncation is undetectable unless compressed with gzip or similar. .SS "mboxrd" .IX Subsection "mboxrd" An evolution of \*(L"mboxo\*(R", but quotes \f(CW\*(C`From \*(C'\fR lines prefixed with any number of \f(CW\*(C`>\*(C'\fR characters and is thus fully reversible. .PP This format is emitted by \fBPublicInbox::WWW\fR\|(3pm) with gzip. Since git 2.10, \f(CW\*(C`git am \-\-patch\-format=mboxrd\*(C'\fR reads this format. \f(CW\*(C`git log\*(C'\fR and \f(CW\*(C`git format\-patch \-\-stdout\*(C'\fR can also generate this format with the \f(CW\*(C`\-\-pretty=mboxrd\*(C'\fR switch. .PP As with uncompressed \*(L"mboxo\*(R", uncompressed mboxrd are vulnerable to undetectable truncation. .PP It gracefully degrades to being treated as \*(L"mboxo\*(R" by MUAs unaware of the format as excessive \f(CW\*(C`>From \*(C'\fR quoting is recognizable to humans. .SS "mboxcl" .IX Subsection "mboxcl" \&\*(L"mboxo\*(R" with a \f(CW\*(C`Content\-Length:\*(C'\fR header, \f(CW\*(C`From \*(C'\fR lines remain quoted to retain readability with \*(L"mboxo\*(R" and \*(L"mboxrd\*(R" MUAs. However, it is easy to corrupt these files when using tools which are not aware of \f(CW\*(C`Content\-Length:\*(C'\fR and write out updates as \*(L"mboxo\*(R". .PP \&\fBmutt\fR\|(1) will convert \*(L"mboxo\*(R" and \*(L"mboxrd\*(R" to mboxcl upon opening. .PP See also: .SS "mboxcl2" .IX Subsection "mboxcl2" Like \*(L"mboxcl\*(R", but without \f(CW\*(C`From \*(C'\fR any quoting. It is wholly incompatible with MUAs which only handle \*(L"mboxo\*(R" and/or \*(L"mboxrd\*(R". This is format is generated by \fBmutt\fR\|(1) when writing to a new mbox. .SH "MH" .IX Header "MH" Not yet supported, locking semantics (or lack thereof) appear to make it unsuitable for parallel access. It is widely-supported by a variety of MUAs and mailing list managers, however. .SH "MMDF" .IX Header "MMDF" Not yet supported, and it's unclear if current usage/support makes it worth supporting. .SH "IMAP" .IX Header "IMAP" Depending on the \s-1IMAP\s0 server software and configuration, \s-1IMAP\s0 servers may use any (or combination) of the aforementioned formats or a non-standard database backend. Currently, lei uses Mail::IMAPClient which has acceptable performance over low-latency links. Performance over high-latency links is currently poor. .SH "eml" .IX Header "eml" A single raw message file. \f(CW\*(C`eml\*(C'\fR is not an output format for lei, but accepted by as an \f(CW\*(C`\-\-input\-format\*(C'\fR (\f(CW\*(C`\-F\*(C'\fR) for read-only commands such as \fBlei\-tag\fR\|(1) and \fBlei\-import\fR\|(1). .PP Since \f(CW\*(C`eml\*(C'\fR is the suffix for the \f(CW\*(C`message/rfc822\*(C'\fR \s-1MIME\s0 type (according to the \f(CW\*(C`mime.types\*(C'\fR file), lei will infer the type based on the \f(CW\*(C`.eml\*(C'\fR suffix if \f(CW\*(C`\-\-input\-format\*(C'\fR is unspecified .PP \&\f(CW\*(C`.patch\*(C'\fR\-suffixed files generated by \fBgit\-format\-patch\fR\|(1) (without \f(CW\*(C`\-\-stdout\*(C'\fR) are \f(CW\*(C`eml\*(C'\fR files with the addition of an mbox \f(CW\*(C`From \*(C'\fR header. \fBlei\fR\|(1) removes \f(CW\*(C`From \*(C'\fR lines to treat them as \f(CW\*(C`eml\*(C'\fR when reading these for compatibility with \&\f(CW\*(C`git\-am(1)\*(C'\fR and similar tools. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2021 all contributors .PP License: \s-1AGPL\-3.0+\s0 .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBlei\fR\|(1), \fBlei\-q\fR\|(1), \fBlei\-convert\fR\|(1), \fBlei\-overview\fR\|(7)