gochatmail

module
v0.0.0-...-9ba032a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 23, 2024 License: MIT

README

gochatmail

A chatmail server written in Go, based on the original Python implementation.

What is this?

I want to improve my skills with Go, and I think that it would be good for everyone if it were much easier to deploy a chatmail server. Imagine if you could stand up a chatmail server for you and your friends in 30 minutes or less with minimal technical knowledge. Maybe this would help put a dent in the market shares of services like Discord and WhatsApp. I don't think I can get it to be as easy as the "new guild" button in Discord. I'm hoping that I can help make computing into a tool for creativity and expression again, instead of a tool for surveillance and control.

In order to make that happen, I'm building a Go implementation of the chatmail server components, wiring them up to the Go email server Maddy, and wrapping it all up with GoKrazy. This makes a Raspberry Pi image or x86 virtual machine image that you can deploy as a chatmail server very easily.

How do I use it?

This isn't anywhere close to ready yet. Once there is something runnable, I'll update this section with directions.

What's on the to-do list?

Deployment tooling
  • Generate chatmail server sign-up/privacy webpages
  • Check for correctly set-up chatmail DNS records
  • Automatically configure DNS records with popular registrars (Cloudflare, Porkbun, Gandi, etc.)
  • Build a clear, user-friendly UI for setting things up (maybe with bubbletea if that works well on Windows too, or possibly a cross-platform GUI toolkit like Qt)
  • Build the deployment command that actually generates a GoKrazy image with everything in it
Chatmail server programs
  • Implement milter to reject outgoing unencrypted email
  • Implement SASL authentication plugin that creates accounts on first use
  • Build a tiny web server that serves the sign-up/privacy webpages and obtains HTTP-01 LetsEncrypt certificates
  • Build a TLS ALPN sniffing proxy to multiplex HTTP, SMTP, and IMAP on port 443 (for beating firewalls and increasing censorship resistance)
  • Build inactive user cleanup process
  • Build prometheus/openmetrics metrics endpoint
  • Add /new endpoint to the tiny web server to generate new accounts automatically.
  • Implement push notification support for iOS/Android
Testing
  • CI of some description, so that I don't break it by accident
  • Add more unit/integration tests, and check coverage metrics
  • Test the documentation and UI with less technically-inclined friends to make sure that it is clear, understandable, and easy enough to use.

How do I help?

Open an issue or a PR!

What is the license?

MIT, as with the upstream project. See LICENSE.txt. Note that this project also follows the Delta Chat community standards and practices.

Directories

Path Synopsis
cmd
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL