internal/

directory
v0.2.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 24, 2026 License: MIT

Directories

Path Synopsis
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.
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.
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.
Package backup verifies streamed backups before marking them complete.
Package backup verifies streamed backups before marking them complete.
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.
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.
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.
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.
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.
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.
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.
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.
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.
dnsxtest
Package dnsxtest is an in-memory DNS zone for tests.
Package dnsxtest is an in-memory DNS zone for tests.
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.
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.
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.
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.
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`.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
Package spam scores arriving mail.
Package spam scores arriving mail.
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.
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.
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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL