Skip to content

v0.2.0 — CAN-SPAM / GDPR / CASL / LGPD compliance

Choose a tag to compare

@denzuko denzuko released this 08 Jun 05:25
· 47 commits to develop since this release

mlisp v0.2.0

Full privacy-law compliance without requiring a web UI.

Compliance coverage

Law Mechanism
CAN-SPAM § 7704(a)(1) Subject [list-id] tag on every outbound message
CAN-SPAM § 7704(a)(2) Sender: and List-Id: headers injected
CAN-SPAM § 7704(a)(3) Unsubscribe instruction in every message footer
CAN-SPAM § 7704(a)(5)(A) Physical postal address in every message footer
GDPR Art. 7 / CASL S.6 Subscribe records :subscribed-at + :consent-method in state.sexp
GDPR Art. 17 / LGPD Art. 18 Unsubscribe removes address immediately
GDPR Art. 30 state/audit.sexp append-only ROPA event log
GDPR Art. 13 Privacy notice included in welcome message
CASL S.6(2)(c) Opt-out honoured within same process invocation

Changes from v0.1.0

  • Compliance footer appended to every distributed message
  • Subject line tagged [list-id] on outbound
  • Subscriber records promoted to plists with :subscribed-at and :consent-method
  • state/audit.sexp append-only event log for subscribe / unsubscribe / post-distributed / post-rejected
  • Three new footer templates ({discuss,announce,devel}.footer.sexp)
  • state/state.sexp extended with :postal-address and :privacy-url per list

Test coverage

  • FiveAM unit tests: 53 (+13)
  • BATS integration: 21
  • BATS regression: 8
  • BATS compliance: 23 (new)
  • Total: 105 passing