Documentation ¶
Overview ¶
Project Brief encompasses both a command-line non-TUI minimalistically- featured POP3/SMTP-based MUA (colloquially known as a "mail client") as well as a general-purpose library facilitating the cmd.
Project Brief is unstable as of 2024-03. No compatibility promises are made. Use at your own risk.
Install via:
$ go install pkg.jfrech.com/brief/cmd/brief@latest
Noteworthy client features:
- Vocality about display names paired with an alias system are designed to prevent homograph attacks (often employed in phishing).
- All mails are stored fully locally (IMAP is actively not supported).
- All mails are pristinely stored as presented by the POP3 source. Mails are marked up with a RFC-822-compliant Brief header (via "X-Brief-*" headers) which contains a cryptographic hash to detect disk failure.
- The entire body of mail messages (called a "sack" in Brief terminology) is present to all commands at all times and can be richly searched.
- Explicit configurability of the usage of STARTTLS (defaults to off).
- Password manager to allow for a single .brief/config.xml configuration which may be put into a semi-private Git repository without fully compromising mailing credentials.
- Message composing which interoperates with the system's $EDITOR.
See also brief(1) (currently in draft stage):
$ brief install-manpage /tmp/brief.1.gz && man /tmp/brief.1.gz
Noteworthy library features: + Byte-precise RFC 822 message parsing via *mailx.Splitter + Fuzz-tested 80-column-optimised Q-encoding for header fields via mailx + POP3 client implementation
Brief is written by Jonathan Frech, 2022--2024.
Directories ¶
Path | Synopsis |
---|---|
Package bql implements parsing and pluggable interpretation for the Brief query language (abbreviated "BQL"), a small LISP-style language to specify mail queries.
|
Package bql implements parsing and pluggable interpretation for the Brief query language (abbreviated "BQL"), a small LISP-style language to specify mail queries. |
pl
Package pl ("parantheses language") implements semantics-free S-expressions.
|
Package pl ("parantheses language") implements semantics-free S-expressions. |
cmd
|
|
brief
Command brief implements the Brief project's canonical command-line interaction with the Brief system.
|
Command brief implements the Brief project's canonical command-line interaction with the Brief system. |
Package composing implements $EDITOR interfacing with a Brief sack.
|
Package composing implements $EDITOR interfacing with a Brief sack. |
Package config defines .brief/config.xml.
|
Package config defines .brief/config.xml. |
vault
Package vault implements Brief's password manager.
|
Package vault implements Brief's password manager. |
Package decode provides byte stream filters to convert or assert form of mail-related data.
|
Package decode provides byte stream filters to convert or assert form of mail-related data. |
Package escape provides percent and shell string escaping.
|
Package escape provides percent and shell string escaping. |
Package fieldnames is a collection of standard or commonly enough used field names in RFC 822 style mail messages.
|
Package fieldnames is a collection of standard or commonly enough used field names in RFC 822 style mail messages. |
Package homographhardened provides escape functions to thwart homograph attacks.
|
Package homographhardened provides escape functions to thwart homograph attacks. |
Package humaninterface provides a human-writable timespan description DSL.
|
Package humaninterface provides a human-writable timespan description DSL. |
internal
|
|
attach
Package attach handles interfacing the Brief system with a POSIX-style filesystem.
|
Package attach handles interfacing the Brief system with a POSIX-style filesystem. |
headersemantics
Package headersemantics groups field names.
|
Package headersemantics groups field names. |
markdownish
TODO What does utf8.DecodeRuneInString("") return? I hope utf8.RuneError, but probably just '\x00'?
|
TODO What does utf8.DecodeRuneInString("") return? I hope utf8.RuneError, but probably just '\x00'? |
network
Deprecated: Will be replaced by the more general *World interface.
|
Deprecated: Will be replaced by the more general *World interface. |
perf
Deprecated: Package perf provided ad-hoc performance metrics.
|
Deprecated: Package perf provided ad-hoc performance metrics. |
phraserouters
Deprecated: Package phraserouters was a command-line flag parsing attempt.
|
Deprecated: Package phraserouters was a command-line flag parsing attempt. |
understanding
Package understanding lists properties the developers of Brief think hold true for Go the language, Go's standard library and all packages Brief depends on.
|
Package understanding lists properties the developers of Brief think hold true for Go the language, Go's standard library and all packages Brief depends on. |
vfs
a paranoic layer to assure internal implementation consistency
|
a paranoic layer to assure internal implementation consistency |
Package mailx implements precise syntactic RFC 822 message manipulation.
|
Package mailx implements precise syntactic RFC 822 message manipulation. |
Package msgs provides the Brief system's mail message abstraction including the Docket together with mail message parsing.
|
Package msgs provides the Brief system's mail message abstraction including the Docket together with mail message parsing. |
Package pop3 implements parts of the POP3 protocol (cf.
|
Package pop3 implements parts of the POP3 protocol (cf. |
Package sacks holds the Sack interface, the Brief project's abstraction of a collection of messages.
|
Package sacks holds the Sack interface, the Brief project's abstraction of a collection of messages. |
fssacks
Package fssacks implements a sacks.Sack on top of a POSIX-like directory.
|
Package fssacks implements a sacks.Sack on top of a POSIX-like directory. |
Package sem collects semantically charged strings.
|
Package sem collects semantically charged strings. |
Package tequat implements parsing of mail messages into categories of "Text, Quotes, Attachment".
|
Package tequat implements parsing of mail messages into categories of "Text, Quotes, Attachment". |
Package text provides a column-writer and general-purpose text filter.
|
Package text provides a column-writer and general-purpose text filter. |
Package uuids implements RFC 4122 version 4 UUIDs.
|
Package uuids implements RFC 4122 version 4 UUIDs. |
Click to show internal directories.
Click to hide internal directories.