Tags give the ability to mark specific points in history as being important
-
v0.4.14
effdff5a · ·v0.4.14: refresh MCP dependencies and lock the Python environment Refreshes the MCP stack and locks the Python dependency graph. - Upgraded the MCP SDK to 1.28.1 and Black to 26.3.1. Runtime and development images now install strictly from uv.lock. - Added a Streamable HTTP MCP contract test that initializes the mounted route, lists tools, and calls mailboxes through the application. - Fixed package update commands for exact pins and the dev group. - Aligned runtime, package, health example, and Codex plugin versions.
-
v0.4.13
90e6b492 · ·v0.4.13: fix IMAP command injection in folder/uid/search (issue #1) Fixes an IMAP command injection vulnerability (issue #1). Closes #1. - The folder, uid and search values that reach the IMAP client were string-interpolated into IMAP commands and handed to Python's imaplib, which does not sanitize its own arguments. A CR/LF in any of them (reachable from an ordinary %0D%0A in an HTTP query or path parameter) ended the current command and spliced a second, attacker-chosen IMAP command onto the same authenticated connection, including a STORE +FLAGS (\Deleted) + EXPUNGE pair that deletes a whole folder through the read-only message routes. - Every such value is now validated before it reaches imaplib: folder, search and structured search terms (including since/before) reject CR, LF and NUL; uid must be digits and sequence-set punctuation only; and folder names have any embedded " and \ escaped so they cannot break out of the IMAP quoted string. The checks live in imap_client, so both the HTTP API and the MCP server inherit them. - Added an in-process mock IMAP server and an IMAP test suite: the happy path (list, fetch, structured search) plus the injection cases, including the verbatim issue #1 payload driven through the read-only GET route.
-
v0.4.12
9cc07bfa · ·v0.4.12: fix the CI lint failure so the image builds and publishes Fixes the CI lint failure introduced by v0.4.11 so the image builds and publishes. - v0.4.11 added make lint to CI for the first time, which surfaced a pre-existing flake8 E501: a 103-character line in src/mailboxd/server.py. The lint job failed and the image build and publish steps, which depend on it, were skipped. Wrapped the line so flake8 passes. No behavior change.
-
v0.4.11
2b74d1e6 · ·v0.4.11: CI lints, tests and security-scans before building the image CI now lints, tests, and security-scans the code before building the image, via the generic reusable code-workflow. - New code pipeline job runs make lint (flake8 + mypy), make test (pytest unit + docker-in-docker integration), and make sec, and the image build now waits on it. The pipeline previously built and published the image without running any of these. - New make sec: semgrep, bandit and pip-audit run in parallel and their findings merge into sec.sarif for the GitHub Security tab. It never fails the build; findings are reported, not gated. The scanners live in an isolated venv in the dev image so semgrep's bundled mcp pin cannot collide with the project's mcp==1.9.0. - Removed the make check alias; use make lint, make test, make sec. - Kept .telemetry/ out of git and out of the image.
-
-
-
-
-
-
-
-
-
-
-
-
-
v0.3.0
3058813f · ·docker-mailbox v0.3.0 — reader mode `?reader=true` on message fetch (HTTP + MCP) adds a `body_reader` field — the HTML body flattened to clean markdown via html2text. Drops styles, scripts, tracking pixels, and table chrome; keeps headings, inline links, bold/italic. Built for LLMs that don't want to parse raw HTML. Original body_text/body_html still returned; reader is additive. Off by default to keep payload size sane on bulk reads.
-
v0.2.0
f5e19b7d · ·docker-mailbox v0.2.0 — flat MCP tool set MCP now exposes one flat tool catalog. Per-mailbox tools take `mailbox` as a parameter (name or address) instead of being namespaced. Tool count is now O(1) instead of O(N) in mailbox count — agents can scale to 100+ inboxes without drowning in tool definitions. BREAKING for MCP clients: `<name>__list_messages` → `list_messages(mailbox=...)`.
-
v0.1.0
123e107c · ·docker-mailbox v0.1.0 — first release REST + MCP control plane over IMAP/SMTP. One process, one port, one bearer-auth gate. Configure mailboxes in config.yaml, mount read-only, ship. Highlights: - /mailboxes, /inbox, per-mailbox IMAP + SMTP endpoints - /mcp streamable-HTTP transport for agent integration - Multi-token bearer auth with constant-time comparison - Thunderbird MUA masquerade for self-send deliverability