# Nostr Email Protocol

# Goal

Remove gatekeepers from email. Use Nostr as transport instead of SMTP between users.

# Event Kind

# Kind 1301: Email

{
  "kind": 1301,
  "pubkey": "<sender_npub>",
  "tags": [
    ["p", "<recipient_npub>"]
  ],
  "content": "<RFC 2822 email>"
}

The content is a standard email. Nostr is just the delivery mechanism.

# Sending

There are 2 kinds of users, those using nostr and the others. If the recipient is not on nostr we need to send the email to a bridge that will forward the email to the recipient legacy inbox.

Nostr emails uses NIP-59 gift wraps for privacy. It's similar to NIP-17.

  1. Create the event kind 1301
  2. Gift wrap it
  3. Send it to recipient DMs relays

# Sending to a nostr user

{
  "kind": 1301,
  "pubkey": "<sender_npub>",
  "tags": [
    ["p", "<recipient_npub>"]
  ],
  "content": "<RFC 2822 email>"
}

# Example

{
  "kind": 1301,
  "pubkey": "npub1alice...",
  "tags": [
    ["p", "npub1bob..."]
  ],
  "content": "From: npub1alice...@nostr\nTo: npub1bob...@nostr\nSubject: Hello\nDate: Sat, 28 Dec 2024 12:00:00 +0000\n\nHey Bob, how are you?"
}

# Sending to a non nostr user

Sending to a non nostr user require using a bridge.

{
  "kind": 1301,
  "pubkey": "<sender_npub>",
  "tags": [
    ["p", "<bridge_npub>"],
    ["mail-from", "<sender_email>"],
    ["rcpt-to", "<recipient_email>"]
  ],
  "content": "<RFC 2822 email>"
}
  • You can get the bridge_npub by resolving _smtp@bridge_domain with NIP-05.
  • Multiple rcpt-to tags MAY be used for CC/BCC recipients.

# Example

{
  "kind": 1301,
  "pubkey": "npub1alice...",
  "tags": [
    ["p", "npub1bridge..."],
    ["mail-from", "npub1alice...@bridge.com"],
    ["rcpt-to", "bob@example.com"]
  ],
  "content": "From: npub1alice...@bridge.com\nTo: bob@example.com\nSubject: Hello\nDate: Sat, 28 Dec 2024 12:00:00 +0000\n\nHey Bob, how are you?"
}