Journal reports: move to a documented multipart/report #287

Merged
jcoffey-dev merged 1 commits from feat/journal-report-format into main 2026-11-04 04:24:51 +00:00
Owner

Moves journal reports to the format in the new public spec (coffeylabs.org PR to follow): a multipart/report with a summary, an envelope part with one line per recipient, and the original untouched. The old Bcc line was misleading, because ordinary list mail lands in it too, so it's now not-in-headers.

Reports to an outside archive now declare BODY=8BITMIME or BINARYMIME. They weren't declaring anything before. A server that can't take the body whole doesn't get the report, and it's kept in the built-in journal. That includes originals with lines past 998 bytes going to a server without BINARYMIME, Postfix for one, where it used to be sent and possibly altered. Other outgoing mail is unchanged, and it doesn't declare BODY= either, which may be worth its own look.

Main only, not release/2026. Stored reports aren't rewritten, and report::original reads both layouts. Delivery through inbuxa Relay doesn't run the new check and can't carry BINARYMIME yet.

Tested with the unit tests, system::journal::journal_tests, and a sample report through Python's email parser.

Moves journal reports to the format in the new public spec (coffeylabs.org PR to follow): a `multipart/report` with a summary, an envelope part with one line per recipient, and the original untouched. The old `Bcc` line was misleading, because ordinary list mail lands in it too, so it's now `not-in-headers`. Reports to an outside archive now declare `BODY=8BITMIME` or `BINARYMIME`. They weren't declaring anything before. A server that can't take the body whole doesn't get the report, and it's kept in the built-in journal. That includes originals with lines past 998 bytes going to a server without BINARYMIME, Postfix for one, where it used to be sent and possibly altered. Other outgoing mail is unchanged, and it doesn't declare `BODY=` either, which may be worth its own look. Main only, not release/2026. Stored reports aren't rewritten, and `report::original` reads both layouts. Delivery through inbuxa Relay doesn't run the new check and can't carry BINARYMIME yet. Tested with the unit tests, `system::journal::journal_tests`, and a sample report through Python's `email` parser.
jcoffey-dev added 1 commit 2026-11-04 04:13:37 +00:00
Journal reports: move to a documented multipart/report
ci / fork-checks (pull_request) Skipped
ci / build (pull_request) Skipped
github/ci (branch) GitHub Actions
ci / github (pull_request) Successful in 10m6s
edf5a6441f
Reports now follow coffeylabs.org/specs/journal-report/: a summary for
people, an envelope part for programs with one line per recipient, and the
original byte for byte. "Bcc" becomes not-in-headers, since a list's post
looks the same. Stored reports keep their old layout, and the original can
still be read from either.

To an outside archive, a report now declares BODY=8BITMIME or BINARYMIME.
A server that can't take the body whole doesn't get the report; it's kept
in the built-in journal under JR-7. Only journal reports change here.

An ORCPT that isn't plainly an address is dropped, because it goes into a
field programs read.
jcoffey-dev merged commit 68dc77f83b into main 2026-11-04 04:24:51 +00:00
jcoffey-dev deleted branch feat/journal-report-format 2026-11-04 04:24:51 +00:00
Sign in to join this conversation.