Skip to content

Email Security: document the raw-download budget and the access event - #380

Merged
maximelb merged 3 commits into
masterfrom
emlaudit/eml-access-record
Sep 6, 2026
Merged

Email Security: document the raw-download budget and the access event#380
maximelb merged 3 commits into
masterfrom
emlaudit/eml-access-record

Conversation

@maximelb

@maximelb maximelb commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Documents the two controls added to the raw-message download in the paired backend PRs.

api-reference.md — the GET /messages/{msg_uuid}/eml section now states that every attempt, served or refused, emits an EMAIL_ACTION with action: get_eml on the connection's sensor, carrying the actor, the message, the mailbox, the stated justification and the byte count. Adds the table of refused_reason codes a client can branch on, the audited block (including event_emitted, which is false when the organization has no live mail connection to ship on), and the two rate limits with the reason this is the only route on the surface that carries one.

detections.md — a new "Watching the download itself" section with two working D&R rules: one alerting on download volume (the byte count is on the event precisely so the rule can be about volume rather than about the fact that one download happened, and the suppression block is what makes it quiet for normal use and loud for a scrape), and one alerting on the first permission_denied refusal, which is the earlier signal a stolen key produces. Template paths are .detect.event.… per the response-actions reference — the transform context is the detection, not the raw event.

automation.md — one-line correction: the EMAIL_ACTION row said "on every remediation outcome", which is no longer the whole truth.

Paired with legion_mailsec#79 (the record) and lc_api-go#935 (the budgets). Public repo — not merging; opened for review and for Maxime to merge when the backend is deployed.

🤖 Generated with Claude Code

lcbill
lcbill previously approved these changes Sep 5, 2026
@maximelb
maximelb marked this pull request as ready for review September 5, 2026 22:22
@maximelb

maximelb commented Sep 5, 2026

Copy link
Copy Markdown
Contributor Author

/lc-review

lcbill
lcbill previously approved these changes Sep 5, 2026
lcbill
lcbill previously approved these changes Sep 5, 2026
maximelb and others added 3 commits September 5, 2026 18:53
Every call to the raw EML download — served or refused — now emits an
EMAIL_ACTION with action: get_eml, and the route carries a per-key and a
per-organization rate limit. Documents both, the refusal reason codes, and a
D&R rule that alerts on download volume rather than on the fact that a download
happened.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@maximelb

maximelb commented Sep 6, 2026

Copy link
Copy Markdown
Contributor Author

/lc-review

@maximelb
maximelb merged commit e2e72aa into master Sep 6, 2026
7 checks passed
@maximelb
maximelb deleted the emlaudit/eml-access-record branch September 6, 2026 02:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants