v0.2.0 — CAN-SPAM / GDPR / CASL / LGPD compliance
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-atand:consent-method state/audit.sexpappend-only event log for subscribe / unsubscribe / post-distributed / post-rejected- Three new footer templates (
{discuss,announce,devel}.footer.sexp) state/state.sexpextended with:postal-addressand:privacy-urlper list
Test coverage
- FiveAM unit tests: 53 (+13)
- BATS integration: 21
- BATS regression: 8
- BATS compliance: 23 (new)
- Total: 105 passing