Skip to content

Rail v0.7.0

Choose a tag to compare

@github-actions github-actions released this 02 Nov 16:46
· 76 commits to main since this release
2984fd3

Security hardening of remote pictures: a trusted sender's pictures load only for mail the
receiving server vouched for, the daemon bounds its picture fetches and cache, and IPv6 can be
turned off for them (#131, #132, #134).

Added

  • remote_images_ipv6 under [general] (default true). false makes the daemon fetch remote
    pictures over IPv4 only. On an IPv6-only network with NAT64, the gateway's own prefix looks
    public to Rail's address guard but can be translated to private IPv4 addresses; the README now
    says so (#134).

Fixed

  • The daemon fetches at most eight remote pictures at once, however many readers ask, and the
    image cache (cache/images/) holds at most 512 MiB: the oldest pictures go to make room for a
    new one, besides the weekly sweep. A mailbox of picture-heavy mail can no longer fill the disk
    before the sweep (#132).

Security

  • A trusted sender's remote pictures (remote_images_from, I) load by themselves only when
    the receiving server vouched for the sender's domain: the topmost Authentication-Results
    (Gmail's own, from mx.google.com, or Exchange Online's) shows DMARC passed for the From
    domain, or a DKIM signature of it or a parent domain passed. Mail with a forged From line now
    waits with the hint, as an untrusted sender's does, so its pictures no longer signal that you
    read it. I still loads the open thread's pictures at once (#131).

Upgrading

  • This version adds a database migration (schema v12: messages.vouched_domains). An older
    Rail refuses the upgraded store.
  • Mail stored before this version has no vouched domains until its body is fetched again, so a
    trusted sender's older mail shows the hint; i loads it.
  • An older Rail refuses a config.toml that contains remote_images_ipv6; remove it before
    going back.

Downloads

Archive For
rail-v0.7.0-x86_64-unknown-linux-gnu.tar.gz Linux x86_64, glibc 2.36 or newer
rail-v0.7.0-aarch64-unknown-linux-gnu.tar.gz Linux ARM64, glibc 2.36 or newer
rail-v0.7.0-aarch64-apple-darwin.tar.gz macOS 11 or newer on Apple Silicon
rail-v0.7.0-x86_64-apple-darwin.tar.gz macOS 11 or newer on Intel

Each archive holds the rail binary, the README, the changelog, the licences and
BUILD-INFO.txt. Extract it and put rail in a directory on your PATH.

Check an archive against SHA256SUMS, and check where it was built:

sha256sum -c --ignore-missing SHA256SUMS   # macOS: shasum -a 256 -c --ignore-missing SHA256SUMS
gh attestation verify rail-v0.7.0-<target>.tar.gz --repo vitosans/rail

On other systems, build from the tag with Rust 1.88 or newer:

git clone --branch v0.7.0 --depth 1 https://github.com/vitosans/rail.git
cd rail
cargo install --locked --path crates/rail