Tags

Tags give the ability to mark specific points in history as being important
  • v2.6.1

    protected
    Automatic patch release v2.6.1
  • v2.6.0

    protected
    729f21be · Devtools update pin ·
    parsemail v2.6.0
    
    * Devtools update pin (729f21b)
    * Grade the egress probe against a control on the egress network, since Docker drops where podman has no route (034a4b9)
    * Merge the devtools includes into one entry with one ref, and add make devtools-update (8fb5f80)
    * Update devtools (8d31261)
    * Fuzz the upload path nightly against stated properties, and fix the two charset crashes it led to (ebbaad4)
    * Build a dry-run image on every branch push, with a manual smoke test, and use devtools' .dind template (8df2b0d)
    * Add a schedule-only heartbeat to the nightly, and model scheduled pipelines as branch pipelines in ci_lint (9a13257)
    * Use devtools' VEX scripts, keep the tooling venv installable on any Python, and move devtools to 30507dd (3bb69ee)
    * Use devtools' shared .sigstore template instead of a local copy (6c8534f)
    * Set timeouts on the four slow CI jobs, allow urllib3 in ci_lint, and run devtools' ci-lint too (800cbc7)
    * Cache only successful responses, so a 404 never gets a path's cache tier (058964b)
    * Escape the text split off before linked domains, and treat DKIM's i= as a tag on the page and in extraction (7acd9f8)
    * Close the leaked wake socket and HTTPError responses, and stop doubling the full stop on upload errors (9b7716d)
    * Keep extra= fields from overwriting the JSON log's own time, level, logger, pid, exception and stack (090994a)
    * Decode 8-bit attachment filenames from the raw headers instead of get_filename's replacement characters (6757100)
    * Match domains case-insensitively so upper-case TLDs are extracted and linked (3128d84)
    * Parse uploads with BytesFeedParser so binary attachments keep their CR bytes (b57f0eb)
    * Keep a failing renderer from failing the upload, and list parts after an empty one (117fb95)
    * Add a unit test suite gated at exactly 100% line and branch coverage, with strict xfails for 16 bugs it found (da1c5f9)
    * Confine every parsemail process with a seccomp denylist, self-tested at build (cd7530e)
    * Set no DNS search list for parsemail, closing CVE-2026-8674's DHCP/VPN path in the shipped stack (c673e0d)
    * Assess CVE-2026-8674 (glibc resolver abort) as affected, via host DNS config only (c7fca11)
    * Run make inside the CI image via devtools' container.mk, keeping only image, stack and release targets on the host (69c0abc)
    * Add RELEASING.md and CONTRIBUTING.md, moving the maintainer and contributor material out of the README (5e87056)
    * Use the Makefile's RUNTIME in release.sh instead of hard-coded docker (a51effc)
    * Correct stale statements in CLAUDE.md and the README about setup, reproducibility, release_image and tooling (9b6ee2e)
    * Verify the Makefile's syft, grype and pip downloads by SHA256, and pin the lint job's PyYAML (2b93d39)
    * Start every guarded CI block with set -e, and lint for it (739713b)
    * Make release.sh fetch, refuse a stale branch or unpinned key up front, and require a release-key signature (68a76cd)
    * Keep THIRD-PARTY-NOTICES.md versions in step with the lock and the image (3676158)
    * Measure the egress check from parsemail's own namespace and require ENETUNREACH (dd4ff4b)
    * Keep CI tokens out of argv and .git/config: credential helper for push, header file for curl (5773ed6)
    * Stop the daily job when the published image cannot be compared, instead of releasing (5705e14)
    * Count a tag signature only when GOODSIG and VALIDSIG are in the same gpg record (39e365e)
    * Apply a 7-day release cooldown to version checks, bumps and lockfiles via devtools (a4f8918)
    * Commit message: Attest the merged SBOM: derive the SPDX from the CycloneDX instead of a second syft run (89bae99)
    * Install devtools (83258e8)
    
  • v2.5.0

    protected
    parsemail v2.5.0
    
    * Update Debian and Python pins (4411b53)
    * Default make to podman: docker publishes no port on an internal network (1b77330)
    * Strip the body from HEAD responses instead of leaving it to gunicorn (1d32e99)
    
  • v2.4.2

    protected
    Automatic patch release v2.4.2
  • v2.4.1

    protected
    Automatic patch release v2.4.1
  • v2.4.0

    protected
    9925ea3d · JSON formatted logs ·
    parsemail v2.4.0
    
    * JSON formatted logs (9925ea3)
    
  • v2.3.0

    protected
    parsemail v2.3.0
    
    * Wake the upload worker on enqueue instead of polling for it (958ce23)
    
  • v2.2.1

    protected
    Automatic patch release v2.2.1
  • v2.2.0

    protected
    parsemail v2.2.0
    
    * Require mode=1777 on the /tmp tmpfs, and say so when it is missing (e42e65a)
    * Fetch the public suffix list with urllib, and check the rule that says why (389067a)
    * Further docs (b8787a6)
    * Some README updates (bbeb661)
    
  • v2.1.0

    protected
    parsemail v2.1.0
    
    * Add a disk quota, and stop expiry deleting messages mid-parse (c6b3110)
    * Scan native libraries against Debian data, not CPEs (759309a)
    
  • v2.0.0

    protected
    parsemail v2.0.0
    
    * Fix the release stack: fail-fast diagnostics and pinned DNS (1bf6c67)
    * Make every smoke-test wait visible (d79c9a6)
    * Fix the release gates: key import and when:always (a3f11e2)
    * Match tag signatures against the primary key or its signing subkey (f3b1c05)
    * Require a buffering proxy, and bound upload size (dad08e9)
    * Improved CI and release process and greatly shrunk image (f350cd0)
    * Ship as a PyInstaller bundle on a scratch base (2848eec)
    * Run the parsemail container unprivileged and read-only (b5b5c44)
    * Use geoveto for IP geolocation (dfdba3c)
    * Use tonguepipe for translation (f2b9de7)
    * Messages about rendered html differences, especially in dark mode (166f749)
    * Switch to using external parsemail-renderer image for html rendering (8acafa0)
    
  • v1.27.0

    protected
    b7611725 · Remove Patreon link ·