SPF checks the envelope. DKIM checks the relay. MIDSIG binds the message itself to a domain key published in DNS — a forged From address fails a signature, not a heuristic. Plus optional postage: if you can't afford 5 cents of compute, I don't want your mail.
Three moving parts. No flag day. Any receiving domain can start enforcing today.
Your domain publishes its Ed25519 public key in one DNS TXT record — the exact pattern DKIM already uses.
Every outgoing message carries a signature over (domain, Message-ID, timestamp). The binding survives relays.
The receiver checks the signature against DNS in microseconds. Forged domain = failed crypto = rejected.
# 1. publish (once) _midsig.example.com. 300 IN TXT "v=midsig1; k=ed25519; p=JwBWTqTtGzbFrFI/EEQJkguLJ1QeJI95mJiXf75n2bI=" # 2. every message carries X-Midsig: v=1; d=example.com; i=<abc123@example.com>; t=1720600000; s=<base64 sig> X-Midsig-Postage: v=1; n=000000000021f69e; x=0000097599…; b=20 # 3. receiver policy $ midsig verify --input mail.eml --required-bits 20 verdict: pass
| Attack | SPF | DKIM | MIDSIG |
|---|---|---|---|
| Forged From domain (phishing) | partial | partial | rejected |
| Stripped / unverified signing | ignorable | ignorable | quarantined |
| Mass spam from burner domains | weak | weak | priced out |
| Message-ID impersonation / thread-jacking | no | no | bound |
SPF and DKIM stay. MIDSIG adds the one binding they both leave unsigned — the message identity — and gives receivers a pricing knob for their inbox.
Real proof-of-work, minted in your browser, no server involved. Raise the bits and watch the compute cost climb — this is the "5 cents" dial.
Hashcash (1997) invented PoW postage for email. Penny Black (2003) and Camram (2004) tried to make it mainstream. DKIM (2007) proved domain-key signing works at internet scale. MIDSIG is the narrow slice DKIM leaves unsigned — the Message-ID binding — plus a modern pricing knob. And no, the spoofing fix doesn't need a blockchain: DNS + signatures do it deterministically. A blockchain only earns its keep here as the payment rail for real postage later. The hard part was never crypto. It's convincing receiving domains to enforce it — which is why this is designed for incremental, unilateral adoption.