misc

Unnamed repository; edit this file 'description' to name the repository.
git clone git://git.alexwennerberg.com/misc
Log | Files | Refs | README | LICENSE

commit b70735b4c7eb22c004c909794b76932c9db70611
parent 83b10d0b0895a90013e5172c567e9c85a645f51d
Author: alex wennerberg <alex@alexwennerberg.com>
Date:   Sun, 20 Nov 2022 15:14:11 -0800

update spec

Diffstat:
Mspec.txt | 58++++++++++++++++++++++++++++++++--------------------------
1 file changed, 32 insertions(+), 26 deletions(-)

diff --git a/spec.txt b/spec.txt @@ -1,5 +1,5 @@ Nanomail ideas -------------- +============== A lighter-weight email replacement @@ -7,47 +7,53 @@ Deliberitly limited in scope for personal, text-based communication Server runs on port 1999 -Client requests from a list of servers to get mail +Sending mail +------------ + +Like SMTP -Domain/host 1-to-1 with a user +No multiple recipients here. Think like physical mail Client request: - FETCH - Host: sally.com + SEND + From: sally@example.com + To: bob@gmail.com + Subject: My Email Signature: abcdef123 -Server then makes a request to the nanomail server at sally.com (if it doesnt have the key already): - - GETKEY + # Example email + UTF-8 characters, Following gemini text format: + => https://gemini.circumlunar.space/docs/specification.gmi -Which fetches the public keyy and validates the signature +gmail.com then makes a request to the nanomail server at example.com (if it doesnt have the key already): -If key validation works, server will respond with emails, one per FETCH request: + GETKEY sally - From: sally.example - To: bob.example - Subject: My Email +Which fetches the public keyy and validates the signature. - # Example email - UTF-8 characters, Following gemini text format: - => https://gemini.circumlunar.space/docs/specification.gmi +If key validation works, server will respond OK, else some error code -Or, if there is no mail to be received: - - DONE +status CODES: -Client is responsible for pulling mesages from everyone they are communicating with +20 OK +40 INVALID REQUEST +41 USER DNE +51 SIGNATURE INVALID -Encryption is out of scope, use something else for encrypted messages +etc -Delivery is exactly-once +Pulling mail (client-server) +--------------------------- -No group messages. You can copy a message to send it to multiple people. Like -physical mail. Mailing list implementation would be a separate server +Like POP + FETCH sally [signature] -### Client-server communication +Returns messages if there are any. Each request returns a message, or DONE -How do you send mail? +Handling spam +------------- +no one will use this, so no worries about spam. If they do, consider a server +allowlist or blocklist (like how fediverse handles these things)