neilalexander / yggmail

End-to-end encrypted email for the mesh networking age
https://matrix.to/#/#yggmail:matrix.org
Mozilla Public License 2.0
133 stars 17 forks source link
email imap imap-server mesh mesh-networking mesh-networks smtp smtp-server yggdrasil yggdrasil-network

Yggmail

It's email, but not as you know it.

Introduction

Yggmail is a single-binary all-in-one mail transfer agent which sends and receives email natively over the Yggdrasil Network.

Email addresses are based on your public key, like 89cd1ea25d99b8ccf29e454280313128c234ffb82aa0eb2e3496f6f156d063d0@yggmail.

Why?

There are all sorts of messaging services in the world but there is still a lot of value in asynchronous communication. Email is something that a lot of people understand reasonably well and there is still a huge volume of software in the world which supports email. Yggmail is designed to comply with the standards that people know and expect.

Yggdrasil is well-suited for ad-hoc mail delivery and allows Yggmail to work even in closed networks, where Internet or other connectivity is restricted or simply not available. It guarantees end-to-end encryption and handles networks with changing topologies reasonably well.

Quickstart

Use a recent version of Go to install Yggmail:

go install github.com/neilalexander/yggmail/cmd/yggmail@latest

It will then be installed into your GOPATH, so add that to your environment:

export PATH=$PATH:`go env GOPATH`/bin

Create a mailbox and set your password. Your Yggmail database will automatically be created in your working directory if it doesn't already exist:

yggmail -password

Start Yggmail, using the database in your working directory, with either multicast enabled, an Yggdrasil static peer specified or both:

yggmail -multicast
yggmail -peer=tls://...
yggmail -multicast -peer=tls://...

Your mail address will be printed in the log at startup. You will also use this as your username when you log into SMTP/IMAP.

Connect your mail client to Yggmail. In the above example:

Then try sending a mail to another Yggmail user!

Parameters

The following command line switches are supported by the yggmail binary:

Notes

There are a few important notes:

Bugs

There are probably all sorts of bugs, but the ones that we know of are:

The code's also a bit of a mess, so sorry about that.