Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
lfr
command
Command lfr runs and operates a newsletter, list-website and mailbox server for many small domains: lfr serve runs it, every other command manages it over a local socket.
|
Command lfr runs and operates a newsletter, list-website and mailbox server for many small domains: lfr serve runs it, every other command manages it over a local socket. |
|
internal
|
|
|
addr
Package addr normalizes email addresses, domain names and host names, the one place deciding what lfr accepts as an address.
|
Package addr normalizes email addresses, domain names and host names, the one place deciding what lfr accepts as an address. |
|
aitext
Package aitext estimates whether text-detection tools would flag prose as written by a language model, and says why.
|
Package aitext estimates whether text-detection tools would flag prose as written by a language model, and says why. |
|
api
Package api defines the arguments and results of every control operation, shared by the CLI and the server so both always agree.
|
Package api defines the arguments and results of every control operation, shared by the CLI and the server so both always agree. |
|
backup
Package backup verifies streamed backups before marking them complete.
|
Package backup verifies streamed backups before marking them complete. |
|
blob
Package blob stores raw messages as immutable files named by their SHA-256, so a message delivered to several mailboxes is kept once and a crash never leaves a half-written file behind.
|
Package blob stores raw messages as immutable files named by their SHA-256, so a message delivered to several mailboxes is kept once and a crash never leaves a half-written file behind. |
|
certs
Package certs provides TLS certificates from Let's Encrypt for every host lfr serves (mail host, list websites, MTA-STS hosts), renewing them automatically, with a self-signed fallback so STARTTLS keeps working before DNS is in place.
|
Package certs provides TLS certificates from Let's Encrypt for every host lfr serves (mail host, list websites, MTA-STS hosts), renewing them automatically, with a self-signed fallback so STARTTLS keeps working before DNS is in place. |
|
cli
Package cli is the lfr command line: the only way to operate a server.
|
Package cli is the lfr command line: the only way to operate a server. |
|
concept
Package concept reads concept.md, the editorial brief of a newsletter: who it is for, what it promises, how each issue is built, how often it comes, how long it is, how it sounds, and when to worry.
|
Package concept reads concept.md, the editorial brief of a newsletter: who it is for, what it promises, how each issue is built, how often it comes, how long it is, how it sounds, and when to worry. |
|
config
Package config is the typed view of the instance settings kept in the database.
|
Package config is the typed view of the instance settings kept in the database. |
|
craft
Package craft is lfr's own research on newsletter craft, embedded in the binary: verbatim voices of readers and writers, peer newsletters, and evidence from standards, studies, benchmarks and guides.
|
Package craft is lfr's own research on newsletter craft, embedded in the binary: verbatim voices of readers and writers, peer newsletters, and evidence from standards, studies, benchmarks and guides. |
|
ctl
Package ctl is the local control protocol between the lfr CLI and the running server: one JSON request per connection over a unix socket that only the server's user (and group) can open.
|
Package ctl is the local control protocol between the lfr CLI and the running server: one JSON request per connection over a unix socket that only the server's user (and group) can open. |
|
dnsbl
Package dnsbl looks up connecting IP addresses in DNS blocklists, telling a listing apart from the error codes lists return to resolvers they refuse.
|
Package dnsbl looks up connecting IP addresses in DNS blocklists, telling a listing apart from the error codes lists return to resolvers they refuse. |
|
dnsx
Package dnsx is the DNS interface every lookup in lfr goes through, so tests run against a fake zone and production gets timeouts and an optional fixed resolver.
|
Package dnsx is the DNS interface every lookup in lfr goes through, so tests run against a fake zone and production gets timeouts and an optional fixed resolver. |
|
dnsx/dnsxtest
Package dnsxtest is an in-memory DNS zone for tests.
|
Package dnsxtest is an in-memory DNS zone for tests. |
|
domains
Package domains manages the mail domains lfr serves: their DKIM keys, the postmaster mailbox every domain must have, and the exact DNS records an operator has to publish for mail and websites to work.
|
Package domains manages the mail domains lfr serves: their DKIM keys, the postmaster mailbox every domain must have, and the exact DNS records an operator has to publish for mail and websites to work. |
|
editorial
Package editorial checks the words of an issue: subject, preheader, length, links, images, tone and the brief's own phrases.
|
Package editorial checks the words of an issue: subject, preheader, length, links, images, tone and the brief's own phrases. |
|
emailmd
Package emailmd renders Markdown into what a newsletter needs: email HTML with every style inlined (mail clients ignore most stylesheets), clean HTML for the web archive, and a readable plain-text part.
|
Package emailmd renders Markdown into what a newsletter needs: email HTML with every style inlined (mail clients ignore most stylesheets), clean HTML for the web archive, and a readable plain-text part. |
|
engine
Package engine assembles lfr: it opens the data directory, wires the services together, runs the SMTP and HTTP servers, the delivery queue and the scheduler, and answers the CLI over the control socket.
|
Package engine assembles lfr: it opens the data directory, wires the services together, runs the SMTP and HTTP servers, the delivery queue and the scheduler, and answers the CLI over the control socket. |
|
events
Package events records what happens (mail received, subscriptions, sends, bounces, opens, clicks) and streams it live to `lfr events --follow`.
|
Package events records what happens (mail received, subscriptions, sends, bounces, opens, clicks) and streams it live to `lfr events --follow`. |
|
feedback
Package feedback reads what the mail world reports back: delivery status notifications (bounces), abuse feedback reports (spam complaints), DMARC aggregate and TLS reports, and relay webhooks.
|
Package feedback reads what the mail world reports back: delivery status notifications (bounces), abuse feedback reports (spam complaints), DMARC aggregate and TLS reports, and relay webhooks. |
|
finding
Package finding is the one shape every check in lfr reports in: a rule ID, a severity, where, what is wrong and how to fix it.
|
Package finding is the one shape every check in lfr reports in: a rule ID, a severity, where, what is wrong and how to fix it. |
|
i18n
Package i18n holds the few sentences lfr itself writes to readers, in English and German.
|
Package i18n holds the few sentences lfr itself writes to readers, in English and German. |
|
inbound
Package inbound is the SMTP server on port 25: it receives mail for lfr's domains, refuses abuse as early and cheaply as possible, authenticates and scores what remains, and hands accepted messages to the engine.
|
Package inbound is the SMTP server on port 25: it receives mail for lfr's domains, refuses abuse as early and cheaply as possible, authenticates and scores what remains, and hands accepted messages to the engine. |
|
issues
Package issues is the newsletter itself: issues written in Markdown, checked before sending, rendered per recipient with signed unsubscribe, click and open links, queued to every confirmed member, and counted afterwards.
|
Package issues is the newsletter itself: issues written in Markdown, checked before sending, rendered per recipient with signed unsubscribe, click and open links, queued to every confirmed member, and counted afterwards. |
|
lists
Package lists manages newsletter lists and their audience: contacts, memberships with double opt-in and stored consent proof, unsubscribes, suppression after bounces and complaints, and import and export.
|
Package lists manages newsletter lists and their audience: contacts, memberships with double opt-in and stored consent proof, unsubscribes, suppression after bounces and complaints, and import and export. |
|
mailauth
Package mailauth authenticates arriving mail (SPF, DKIM, DMARC with alignment) and DKIM-signs leaving mail.
|
Package mailauth authenticates arriving mail (SPF, DKIM, DMARC with alignment) and DKIM-signs leaving mail. |
|
mailbox
Package mailbox is the plain mailbox side of lfr: addresses that receive and send like any mail account, with aliases, catch-alls, plus-addressing, forwarding, folders, flags and full-text search.
|
Package mailbox is the plain mailbox side of lfr: addresses that receive and send like any mail account, with aliases, catch-alls, plus-addressing, forwarding, folders, flags and full-text search. |
|
msg
Package msg reads and writes RFC 5322 messages: parsing what arrives (tolerant of the malformed mail spam and old clients produce), composing what lfr sends, and turning HTML into readable text.
|
Package msg reads and writes RFC 5322 messages: parsing what arrives (tolerant of the malformed mail spam and old clients produce), composing what lfr sends, and turning HTML into readable text. |
|
outbound
Package outbound is the delivery queue: every message lfr sends is a row that survives restarts, is built and DKIM-signed at send time, handed to a relay or straight to the recipient's MX, and retried with backoff until it is delivered, refused for good or five days old.
|
Package outbound is the delivery queue: every message lfr sends is a row that survives restarts, is built and DKIM-signed at send time, handed to a relay or straight to the recipient's MX, and retried with backoff until it is delivered, refused for good or five days old. |
|
project
Package project is a newsletter's editorial workspace on disk: research, the concept, the backlog of ideas, issue drafts and what each sent issue taught.
|
Package project is a newsletter's editorial workspace on disk: research, the concept, the backlog of ideas, issue drafts and what each sent issue taught. |
|
prose
Package prose holds writing to the floor readers expect from a person: no stock phrases of generated copy, none of the structural habits current models have (correcting claims nobody made, announcing instead of saying, recap endings, label-colon bullets, pet words), concrete names and numbers, paragraphs and sentences shaped like human writing, and an estimate of whether AI-text detectors would flag it (package aitext).
|
Package prose holds writing to the floor readers expect from a person: no stock phrases of generated copy, none of the structural habits current models have (correcting claims nobody made, announcing instead of saying, recap endings, label-colon bullets, pet words), concrete names and numbers, paragraphs and sentences shaped like human writing, and an estimate of whether AI-text detectors would flag it (package aitext). |
|
research
Package research reads and checks the research files of a newsletter project: verbatim voices of readers and writers, the peer newsletters of the niche, and evidence from standards and studies.
|
Package research reads and checks the research files of a newsletter project: verbatim voices of readers and writers, the peer newsletters of the niche, and evidence from standards and studies. |
|
skills
Package skills holds the Agent Skills (agentskills.io) that teach an agent to run lfr: setting up the server, researching and conceiving a newsletter, launching it, writing and sending each issue, learning from the numbers, and handling mailboxes.
|
Package skills holds the Agent Skills (agentskills.io) that teach an agent to run lfr: setting up the server, researching and conceiving a newsletter, launching it, writing and sending each issue, learning from the numbers, and handling mailboxes. |
|
smtptest
Package smtptest runs a recording SMTP server for tests: STARTTLS or implicit TLS with a throwaway certificate, optional AUTH PLAIN, and scripted rejections.
|
Package smtptest runs a recording SMTP server for tests: STARTTLS or implicit TLS with a throwaway certificate, optional AUTH PLAIN, and scripted rejections. |
|
spam
Package spam scores arriving mail.
|
Package spam scores arriving mail. |
|
store
Package store owns the SQLite database: opening it with the pragmas a long-running server needs, schema migrations, transactions and the key-value settings table.
|
Package store owns the SQLite database: opening it with the pragmas a long-running server needs, schema migrations, transactions and the key-value settings table. |
|
token
Package token makes and checks the signed tokens in links and addresses: confirm, unsubscribe, open, click and bounce.
|
Package token makes and checks the signed tokens in links and addresses: confirm, unsubscribe, open, click and bounce. |
|
web
Package web serves everything lfr shows to readers: each list's small site (latest issues, archive, feed, signup form), the confirm and unsubscribe pages, click and open tracking, MTA-STS policies and relay webhooks.
|
Package web serves everything lfr shows to readers: each list's small site (latest issues, archive, feed, signup form), the confirm and unsubscribe pages, click and open tracking, MTA-STS policies and relay webhooks. |
Click to show internal directories.
Click to hide internal directories.