diff --git a/FAQ.md b/FAQ.md index 04fc289..c41e010 100644 --- a/FAQ.md +++ b/FAQ.md @@ -10,7 +10,7 @@ Trusting a mail server carries more. Once you trust a server, it is allowed to a Adding a server is a manual, deliberate step. It is never a link you can be tricked into clicking. -## Why does Smol Mail not have native WebSocket support? +## Why does smolmail not have native WebSocket support? It does, kept separate as an optional annex ([WS.md](WS.md)) rather than built into the core protocol. diff --git a/README.md b/README.md index 58b4aec..826976d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# smol mail +# smolmail [![AI-DECLARATION: auto](https://img.shields.io/badge/%E4%B7%BC%20AI--DECLARATION-auto-ede9fe?labelColor=ede9fe)](https://ai-declaration.md) [![License: CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) diff --git a/SPEC.md b/SPEC.md index b3b72e7..4b3eb6d 100644 --- a/SPEC.md +++ b/SPEC.md @@ -1,6 +1,6 @@ -# Smol Mail Protocol, version 1.2 +# smolmail Protocol, version 1.2 A minimalist, decentralised, end-to-end encrypted mail protocol. @@ -375,7 +375,7 @@ RNS facts cited below were read from Reticulum 1.5.4. Constants in that stack ar ### 13.1 Server destination -A server holds one **Reticulum identity**, persisted, separate from every Smol Mail identity in §2 and never used as one. RNS writes its private key unencrypted, so the file MUST be protected as any long-term server key is: mode 0600, backed up by the operator, never transmitted. +A server holds one **Reticulum identity**, persisted, separate from every smolmail identity in §2 and never used as one. RNS writes its private key unencrypted, so the file MUST be protected as any long-term server key is: mode 0600, backed up by the operator, never transmitted. ``` RNS.Destination(identity, IN, SINGLE, "smolmail", "server") @@ -471,7 +471,7 @@ A mailbox reachable over both transports has one queue, and §6.1 requires a rec The per-IP connection and `SEND` limits of §10 have no analogue. Reticulum gives a server no stable handle on an initiator that does not identify itself, and that is the point: a sender is absent from the wire format by construction (§5.2), and a transport that reintroduced a durable sender identifier would undo it. -- A server MUST NOT require Reticulum link identification for any operation. It proves a Reticulum identity rather than a Smol Mail one, and a durable one is exactly the handle this section says a server must not have. +- A server MUST NOT require Reticulum link identification for any operation. It proves a Reticulum identity rather than a smolmail one, and a durable one is exactly the handle this section says a server must not have. - A server SHOULD limit requests and bytes per link, and cap concurrent links. Reticulum enforces neither. - A server SHOULD keep a global `SEND` ceiling in place of the per-peer one. - The per-accept-token `SEND` limit of §10 is unchanged and becomes the main defence. It never needed a peer identity: a token is issued by the mailbox owner (§5.8), which is exactly the handle this transport still has. diff --git a/WS.md b/WS.md index fd42720..9da9d61 100644 --- a/WS.md +++ b/WS.md @@ -1,6 +1,6 @@ -# Smol Mail over WebSocket annex +# smolmail over WebSocket annex This annex is not part of the protocol. It adds no version, no section, no address form and no label, and a server that ignores it is fully conformant. It records one convention for carrying the transport of §4 through a WebSocket, so that browsers, which cannot open TCP sockets, and clients on networks that pass only port 443 can reach a mailbox, and so that independent implementations of that carriage agree. The keywords below bind only an implementation that claims to follow this annex. Section references are to [SPEC.md](SPEC.md). diff --git a/smolmail.py b/smolmail.py index cf6d447..8c9ebbc 100755 --- a/smolmail.py +++ b/smolmail.py @@ -5,7 +5,7 @@ # /// # Copyright 2026 randogoth # SPDX-License-Identifier: Apache-2.0 -"""Smol Mail reference client. +"""smolmail reference client. Implements SPEC.md version 1.1 from both ends: one master secret, sealed and signed messages, server key pinning, trust on first use with rotation chains, @@ -282,7 +282,7 @@ def unseal(identities: list[Identity], envelope: bytes) -> dict: if len(envelope) < ENVELOPE_HEADER + 16: raise SmolError("envelope too short") if envelope[:4] != MAGIC: - raise SmolError("not a Smol Mail envelope") + raise SmolError("not a smolmail envelope") if envelope[4] != VERSION: raise SmolError(f"unsupported envelope version {envelope[4]}") to, epk, sealed = envelope[5:37], envelope[37:69], envelope[69:] diff --git a/smolmail_rns.py b/smolmail_rns.py index 55cef77..57d5271 100644 --- a/smolmail_rns.py +++ b/smolmail_rns.py @@ -5,7 +5,7 @@ # /// # Copyright 2026 randogoth # SPDX-License-Identifier: Apache-2.0 -"""Smol Mail reference client -- Reticulum transport. +"""smolmail reference client -- Reticulum transport. Implements reticulum.md (protocol 1.2), the Reticulum-transport addendum to SPEC.md's version 1.1. Identities, envelopes, message identifiers, operations, @@ -314,7 +314,7 @@ def unseal(identities: list[Identity], envelope: bytes) -> dict: if len(envelope) < ENVELOPE_HEADER + 16: raise SmolError("envelope too short") if envelope[:4] != MAGIC: - raise SmolError("not a Smol Mail envelope") + raise SmolError("not a smolmail envelope") if envelope[4] != VERSION: raise SmolError(f"unsupported envelope version {envelope[4]}") to, epk, sealed = envelope[5:37], envelope[37:69], envelope[69:] diff --git a/smolmaild.py b/smolmaild.py index 0790a94..4f243ca 100755 --- a/smolmaild.py +++ b/smolmaild.py @@ -5,7 +5,7 @@ # /// # Copyright 2026 randogoth # SPDX-License-Identifier: Apache-2.0 -"""Smol Mail reference server. +"""smolmail reference server. Implements SPEC.md version 1.1: a store-and-forward mailbox reachable over TCP with a Noise_NX handshake. The server never sees plaintext, sender identities, diff --git a/smolmaild_rns.py b/smolmaild_rns.py index 99953a5..1eb5239 100644 --- a/smolmaild_rns.py +++ b/smolmaild_rns.py @@ -5,7 +5,7 @@ # /// # Copyright 2026 randogoth # SPDX-License-Identifier: Apache-2.0 -"""Smol Mail reference server -- Reticulum transport. +"""smolmail reference server -- Reticulum transport. Implements reticulum.md (protocol 1.2), the Reticulum-transport addendum to SPEC.md's version 1.1. It is the same store-and-forward mailbox as