MailVault
Early access · open source at launch

Programmable email forwarding

Point a domain at MailVault and every address on it becomes something your code can create, route and retire — from a terminal, a script, or an agent. No dashboard required, and nothing of yours is stored.

mailvault — forwarding for example.com
# point a domain at mailvault and route its mail
$ mailvault domain add example.com

Publish this DNS MX record so mail reaches the server:

  name:      example.com
  priority:  10
  value:     mx.mailvault.sh

$ mailvault domain verify example.com
status:  verified

$ mailvault addr add hi@example.com --to you@gmail.com
address:      hi@example.com
forwards to:  you@gmail.com

# and because it is scriptable, so is everything else
$ mailvault --output json addr list | jq -r '.[].local_part'

Why another forwarder

Mail infrastructure that keeps nothing

Forwarding itself is a commodity. What is not is holding as little of your mail as the job allows, for as short a time as possible — and building an interface your code drives rather than your mouse.

Question
Typical forwarder
MailVault
Create 40 addresses in a deploy script?
Click 40 times
One loop, JSON out, real exit codes
Read the code that handles your mail?
Closed
Open source at launch, end to end
Run it yourself if you outgrow us?
No exit
Same binary, your server, at launch
What is kept after delivery?
Varies, often logged
Nothing — no queue, no copy

The rest is table stakes and we treat it that way: SPF, DKIM, DMARC, blocklists, MTA-STS and TLS reporting run on every message. One detail is worth naming, because it is the part most forwarders get wrong — mail is relayed byte for byte, so the sender’s original DKIM signature survives intact and still passes DMARC at the destination.

And one we would rather state than let you assume: authenticating a message means reading it. Mail reaches us over TLS and is decrypted in our process so SPF, DKIM and DMARC can check it — any provider that runs those checks does the same, whatever their marketing says. What we can promise is what happens next, and it is the whole design: nothing is written down, nothing is queued, nothing is copied, and where mail is handed onward it leaves encrypted to a key only you hold.

How it works

Three commands from empty domain to working mail

Early-access accounts get the CLI and an API key. The CLI prints the exact DNS records to publish — including the MX — and tells you when they have taken effect.

01

Claim the domain

MailVault issues a TXT record proving you own it, and the MX record that routes mail to us.

mailvault domain add
02

Verify it

Checks DNS and reports a distinct exit code for “not propagated yet”, so a polling script knows to wait rather than fail.

mailvault domain verify
03

Route the mail

Aliases to your mailbox, or a catch-all delivered to your endpoint. Change destinations any time without touching DNS. Follow the quick-start.

mailvault addr add

Availability

Opening in waves

MailVault runs real mail today, for a small number of domains. We are widening access gradually rather than all at once, so that deliverability and support keep up with the load.

Hosted

Request a seat and we will get in touch as the next wave opens. No card, and nobody is charged for joining the list.

Request early access

Self-hosted

Arrives with the open-source release: the same code the hosted service runs — one Go binary, a Postgres database, and a relay. Until then, tell us about your setup and we will keep you posted.

Ask about self-hosting

Roadmap

One promise, extended

Every product below is the same idea pushed further: hold as little as possible, for as little time as possible. Forwarding keeps nothing at all. Everything after it keeps only ciphertext.

Live

Forwarding that stores nothing

Domains and aliases, driven from the CLI or the API. Messages are authenticated on arrival and relayed onward without being queued, parsed or copied. Read the forwarding quick-start.

Live

Encrypted delivery to your endpoint

Mail as a webhook, with the payload encrypted to your endpoint’s public key before it leaves our server and nothing kept afterwards. Every other inbound-parse service posts your mail as plaintext JSON. A catch-all delivers here and only here, so every address on a domain can reach one service without a single guess being relayed onward. An endpoint proves it wants mail before any is sent to it, every delivery is signed so you can tell it came from us, and a signed-plaintext mode stays available for receivers that cannot hold a key. Read the quick-start and receiver guide.

Then

Zero-access encrypted inbox

Keep mail instead of only passing it on — encrypted to a key derived on your machine, so the server stores ciphertext it has no way to open. The private key never leaves the client.

Then

Scoped addresses for agents

Give an assistant its own address and its own key. It can read and send on that address alone, and is cryptographically unable to touch any other — an inability, not a permission setting that can be misconfigured.

Later

Per-domain signing and outbound sending

Sign forwarded mail with your domain’s own key, return bounces to the original sender, and send transactional mail from the addresses you already receive on — the same authentication posture in both directions.