Postmaster forward has no fan-out bound and no organisation-state gate
- Dominant language
- Python
- Stars
- 4
- Forks
- 0
- Avg merge
- 8h 24m
- Merged PRs (30d)
- 115
Description
Proven during security review of the postmaster-forward work (branch `codingjoe-mta-forward-non-reports`): confidence 9/10, impact 6/10.
Any host with SMTP egress can send `postmaster@` (or `postmaster+anything@`) without an account. Once rspamd clears the message, relay sends one message per organisation member from the platform's postmaster address (`services/email/mta/tasks.py:302-308` → `:249`, `:262-270`). Nothing counts, throttles, or cools down the fan-out, and the path consults neither `billing_is_active` nor `suspended_at`, while `dispatch_webhook` drops messages for an unpaid organisation and the MSA refuses a suspended one. Receiving members are the organisation's own roster, so no third party can be reached; the harm is uncapped repeat mail into a cut-off organisation's inboxes from the platform identity, and burning the platform's sending reputation.
The user accepted the fan-out and asked for this issue rather than a gate.
A gate would be small: mirror `dispatch_webhook`'s billing check and the MSA's `suspended_at` check either where the forward is enqueued in `check_incoming_spam` or at the top of `forward_postmaster_message`.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.