Skip to content

Tags: denzuko/mlisp

Tags

v0.8.0

Toggle v0.8.0's commit message

Unverified

This tag is not signed, but one or more authors requires that any tag attributed to them is signed.
v0.8.0 (re-tagged after release-fix #118)

Highlights:
- 42/46 mlisp-admin cmd-* functions converted to define-admin-cmd(+)
- mlisp-procmail-gen: s-expr DSL + binary for procmailrc generation
- Multi-platform release packages (#97): Linux tarball + pkgsrc,
  NetBSD pkgsrc, FreeBSD pkg
- Automated GitHub Release creation on tag push
- Pattern-based Makefile rules (self-healing)
- XDG/etc-mlisp config bootstrap fix (#107)
- GitFlow branch model + merge-authority policy

378/378 BATS + 78/78 FiveAM = 456/456.

v0.7.0

Toggle v0.7.0's commit message

Unverified

This tag is not signed, but one or more authors requires that any tag attributed to them is signed.
v0.7.0 — mlisp-bugs: Debbugs-compatible email bug tracker

v0.6.2

Toggle v0.6.2's commit message

Unverified

This tag is not signed, but one or more authors requires that any tag attributed to them is signed.
v0.6.2 — self-hosted CI hook, email-first contribution workflow, migr…

…ation guides

v0.6.1

Toggle v0.6.1's commit message

Unverified

This tag is not signed, but one or more authors requires that any tag attributed to them is signed.
v0.6.1 — Quicklisp dist, mlisp.el Emacs interface

v0.6.0

Toggle v0.6.0's commit message

Unverified

This tag is not signed, but one or more authors requires that any tag attributed to them is signed.
v0.6.0 — subscriber commands (info/who/query/set), BITNET search, All…

…Fix file distribution, plugin filter pipeline

v0.5.0

Toggle v0.5.0's commit message

Unverified

This tag is not signed, but one or more authors requires that any tag attributed to them is signed.
v0.5.0 — 9 subgroups, RFC 8058, DKIM strip, rate-limit, embargo, manp…

…ages

v0.4.0

Toggle v0.4.0's commit message

Unverified

This tag is not signed, but one or more authors requires that any tag attributed to them is signed.
v0.4.0 — DMARC, VERP, LDIF, double opt-in, mass subscribe, diagnose, …

…multigram bounce

v0.3.0

Toggle v0.3.0's commit message

Unverified

This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
chore: bump version to 0.3.0, update CHANGELOG

Version 0.3.0 adds 18 features over v0.2.0:
  MIME stripping, BCC privacy, RFC 2369 headers, -request mode,
  bounce management, auto-subscribe, Prometheus metrics, MDN headers,
  unsubscribe synonyms, daemon discrimination, dedup, moderator queue,
  digest mode, exploder, Maildir, mlisp-distrib, hash-at-rest, GPG.

Test count: 275 (78 FiveAM + 197 BATS)

v0.2.0

Toggle v0.2.0's commit message

Unverified

This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
feat(compliance): CAN-SPAM, GDPR, CASL, LGPD compliance

CAN-SPAM 15 U.S.C. § 7704:
- Footer appended to every distributed message with physical postal
  address (1207 Delaware Ave Ste 103, Wilmington DE 19806) and
  unsubscribe instructions
- Subject line tagged [list-id] on outbound (no deceptive subjects)
- Sender/List-Id headers injected per § 7704(a)(2)

GDPR Regulation (EU) 2016/679:
- Art.7 consent: subscribe command records :subscribed-at (ISO-8601)
  and :consent-method in state.sexp
- Art.17 erasure: unsubscribe removes address immediately
- Art.30 ROPA: audit.sexp append-only event log for subscribe,
  unsubscribe, post-distributed, post-rejected events

CASL S.C. 2010 c.23 s.6:
- Opt-out honoured within same process invocation
- Unsubscribe mechanism in every message

LGPD Art.7/18: covered by GDPR erasure + consent path

State schema change: subscriber records promoted from flat address
strings to plists with :address :subscribed-at :consent-method

New files:
  templates/{discuss,announce,devel}.footer.sexp
  state/audit.sexp (created at runtime)

Test coverage:
  FiveAM:     +13 tests (53 total)
  BATS compliance: 23 new tests
  All 105 tests passing

v0.1.0

Toggle v0.1.0's commit message

Unverified

This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
feat: initial mlisp implementation

Compiled standalone SBCL mailing list manager replacing smartlist.

Architecture:
- src/mlisp.lisp: core engine, RFC 2822 parser, troff DSL, MTA fork
- state/state.sexp: S-expression database seeded with discuss/announce/devel
- templates/: 9 troff DSL templates (welcome/help/goodbye x 3 lists)
- build.lisp: sb-ext:save-lisp-and-die compile script

Routing boundaries:
  discuss  -> denzuko+mlist-discuss@panix.com
  announce -> denzuko+mlist-announce@panix.com
  devel    -> denzuko+mlist-devel@panix.com

Loop protection: X-Loop-List-<Name> header detection
State persistence: MLISP_HOME env-driven runtime path resolution
CRLF tolerance: trailing CR stripped from read-line input

Test coverage:
- FiveAM: 40 unit tests (parse, address, commands, state, troff DSL)
- BATS:   21 integration tests (routing, loops, auth, commands)
- BATS:    8 regression tests (RC-A broken-pipe, RC-B state mutation,
           RC-C wrong-loop-header)

Fixes in this commit vs initial scaffold:
  RC-A: sendmail pipe guarded with ignore-errors + stdin-draining stub
  RC-B: rebuild exposes mlisp-home() runtime path; state.sexp now written
        to correct MLISP_HOME location at runtime
  RC-C: CRLF stripping ensures headers parse correctly; wrong-list loop
        header no longer suppresses authorized subscriber delivery