Internal reference for packaging and distribution channels.
| Channel | Status | Notes |
|---|---|---|
| Homebrew | Ready | brew install rustmailapp/rustmail/rustmail |
| Docker | Ready | smyile/rustmail:latest |
| GitHub Releases | Ready | Multi-platform binaries via release workflow |
| Source | Ready | make build (requires Node + pnpm + Rust) |
| crates.io | Not used | All crates yanked. Binary can't be published (embedded UI requires Node build step) |
A tap is a self-hosted formula repository. Users install with:
brew install rustmailapp/rustmail/rustmailSetup:
- Create repo
rustmailapp/homebrew-rustmailon GitHub - Add
Formula/rustmail.rbpointing to a tagged release tarball - Formula builds from source using
depends_on "rust" => :buildanddepends_on "node" => :build - Optionally use pre-built binaries from GitHub Releases instead of building from source
Example formula (build from source):
class Rustmail < Formula
desc "Self-hosted SMTP mail catcher with web UI, REST API, and CI assertions"
homepage "https://github.com/rustmailapp/rustmail"
url "https://github.com/rustmailapp/rustmail/archive/refs/tags/v0.1.0.tar.gz"
sha256 "<sha256 of tarball>"
license "MIT OR Apache-2.0"
depends_on "rust" => :build
depends_on "node" => :build
def install
system "corepack", "enable"
system "pnpm", "--dir", "ui", "install", "--frozen-lockfile"
system "pnpm", "--dir", "ui", "build"
system "cargo", "install", "--locked", "--root", prefix, "--path", "crates/rustmail-server"
end
test do
assert_match "rustmail", shell_output("#{bin}/rustmail --version")
end
endTools that can auto-generate formulas from GitHub release assets:
cargo-brew(https://crates.io/crates/cargo-brew)formulaic(https://github.com/ceejbot/formulaic)
Submission to the official Homebrew repository requires:
- >=75 GitHub stars (or >=30 forks, or >=30 watchers)
- Project age >30 days
- Stable tagged release
- Someone other than the author submits the PR (community member)
- Builds on latest 3 macOS versions (ARM + x86_64) + x86_64 Linux
- No unpatched security vulnerabilities
Process:
- Meet thresholds above
- A community member submits PR to
Homebrew/homebrew-core brew test-botCI builds bottles (pre-compiled binaries) for all platforms- Homebrew maintainers review (typically 1-4 weeks)
Precedent: ripgrep, bat, fd, hyperfine, delta (all Rust CLI tools in homebrew-core). Mailpit (Go, same problem space) is also in homebrew-core.
Reference: https://docs.brew.sh/Acceptable-Formulae
- AUR (Arch Linux) — PKGBUILD, straightforward for Rust binaries
- Nix — nixpkgs PR, similar community process to Homebrew
- Scoop (Windows) — JSON manifest in a bucket repo
- Snap / Flatpak — lower priority, Docker covers Linux well