Found a hole? Tell us first.
Porch Mail holds the keys to people’s email. If you find a way to get at mail, secrets or the computer it runs on, we want to hear about it, and we’ll treat you as someone helping.
security@porch.zeiq.devEmail us. Please don’t open a public issue.
Write to security@porch.zeiq.dev with the version (Settings → About), your system, the steps to reproduce it, and what an attacker gets. A proof of concept helps; a video is fine.
Test only against your own accounts and computers. Don’t read other people’s mail, keep what you touch to the minimum the report needs, and delete it afterwards. Research done that way, in good faith, is welcome: we won’t pursue or report you for it.
There’s no paid bounty yet. With your permission, we credit you in the release notes of the fix. This policy is also published as security.txt.
- 3 working days
- We confirm we have your report.
- 10 working days
- We tell you whether we can reproduce it and how serious we think it is.
- 30 days
- Our aim for a fixed release when the issue is critical or high. Others go into the next regular release.
- 90 days
- The default before you publish, or sooner once the fix is out. We’ll agree a different date with you if a fix needs longer.
What we most want to hear about.
- The desktop app and the daemon
The local API and its tokens, anything that reaches it from another program or user on the same computer.
- Email rendering
Script, remote content or tracking that escapes the sanitiser or the content policy, and anything that gets out of the email’s page.
- The image proxy
Requests it can be made to send to private or local addresses, or to hosts it didn’t put in the page.
- Accounts and secrets
The OAuth flow, the keyring, and any secret written to disk, logs or the cache.
- Agents, the CLI and MCP
A token doing more than its scopes allow. Sending mail with any token is a bug.
- Releases
Anything that would let a tampered download pass the checks below.
Out of scope
Your mail provider’s own servers and sign-in pages. Report those to the provider.
Attacks that need root, or full control of your user account, already.
Findings on this static website with no real impact, such as missing headers or version banners.
Social engineering, physical access, and denial of service.
Check it came from us, unchanged.
Every release comes with SHA256SUMS, a signature over it (SHA256SUMS.minisig), and a software bill of materials in CycloneDX format: one for the npm packages inside the app, one for the Rust crates in the desktop binary. The Mac app is also signed with our Apple Developer ID and notarized by Apple.
- 01 · The checksums are ours
With minisign (
brew install minisign), in the folder you downloaded to:minisign -Vm SHA256SUMS -P RWSPN42jCDy1ITaiYmH5FMdELSR5R6NsN0M9exYN9KlosIHD/1nNl9B5Our public key:
RWSPN42jCDy1ITaiYmH5FMdELSR5R6NsN0M9exYN9KlosIHD/1nNl9B5 - 02 · The file matches
Then check the files you have against the signed list:
shasum -a 256 -c SHA256SUMS --ignore-missing - 03 · Apple agrees
On a Mac, Gatekeeper checks the signature and notarization when you open the app. To check by hand:
spctl -a -t open --context context:primary-signature -v Porch-Mail-*.dmg codesign -dv "/Applications/Porch Mail.app" 2>&1 | grep AuthorityThe first line should say
accepted, and the authorityDeveloper ID Application.