All Projects → neilalexander → yggmail

neilalexander / yggmail

Licence: MPL-2.0 License
End-to-end encrypted email for the mesh networking age

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to yggmail

docker-protonmail-bridge
Run ProtonMail Bridge in a docker container
Stars: ✭ 34 (-52.78%)
Mutual labels:  imap, smtp, smtp-server, imap-server
Exim
Exim Mail Transport Agent - source, testsuite and documentation
Stars: ✭ 545 (+656.94%)
Mutual labels:  email, smtp, smtp-server
Deltachat Desktop
Email-based instant messaging for Desktop.
Stars: ✭ 526 (+630.56%)
Mutual labels:  email, imap, smtp
Magma
The magma server daemon, is an encrypted email system with support for SMTP, POP, IMAP, HTTP and MOLTEN,. Additional support for DMTP and DMAP is currently in active development.
Stars: ✭ 1,740 (+2316.67%)
Mutual labels:  email, imap, smtp
Deltachat Core Rust
Delta Chat Rust Core library, used by Android/iOS/desktop apps and bindings
Stars: ✭ 300 (+316.67%)
Mutual labels:  email, imap, smtp
Mailkit
A cross-platform .NET library for IMAP, POP3, and SMTP.
Stars: ✭ 4,477 (+6118.06%)
Mutual labels:  email, imap, smtp
Opaquemail
.NET email library and proxy supporting IMAP, POP3, and SMTP with S/MIME and PGP.
Stars: ✭ 91 (+26.39%)
Mutual labels:  email, imap, smtp
Sendria
Sendria (formerly MailTrap) is a SMTP server designed to run in your dev/test environment, that is designed to catch any email you or your application is sending, and display it in a web interface instead of sending to real world.
Stars: ✭ 30 (-58.33%)
Mutual labels:  email, smtp, smtp-server
Mnm
The legitimate email replacement — n-identity, decentralized, store-and-forward, open protocol, open source. (Server)
Stars: ✭ 162 (+125%)
Mutual labels:  email, imap, smtp
Aiosmtpd
A reimplementation of the Python stdlib smtpd.py based on asyncio.
Stars: ✭ 195 (+170.83%)
Mutual labels:  email, smtp, smtp-server
Vmime
VMime Mail Library
Stars: ✭ 218 (+202.78%)
Mutual labels:  email, imap, smtp
Notqmail
Collaborative open-source successor to qmail
Stars: ✭ 255 (+254.17%)
Mutual labels:  email, smtp, smtp-server
ESP-Mail-Client
⚡️Arduino Mail Client Library to send, read and get incoming mail notification for ESP32, ESP8266 and SAMD21 devices. The library also supported other Arduino devices using Clients interfaces e.g. WiFiClient, EthernetClient, and GSMClient.
Stars: ✭ 78 (+8.33%)
Mutual labels:  email, imap, smtp
Salmon
A Python Mail Server
Stars: ✭ 482 (+569.44%)
Mutual labels:  email, smtp, smtp-server
Magento 2 Smtp
Magento 2 SMTP Extension helps the owner of store simply install SMTP (Simple Mail Transfer Protocol) server which transmits the messages into codes or numbers.
Stars: ✭ 228 (+216.67%)
Mutual labels:  email, smtp, smtp-server
Papercut Smtp
Papercut SMTP -- The Simple Desktop Email Server
Stars: ✭ 2,094 (+2808.33%)
Mutual labels:  email, smtp, smtp-server
Mailer
A light-weight, modular, message representation and mail delivery framework for Python.
Stars: ✭ 225 (+212.5%)
Mutual labels:  email, imap, smtp
Mailu
Insular email distribution - mail server as Docker images
Stars: ✭ 3,151 (+4276.39%)
Mutual labels:  email, imap, smtp
imapd
IMAP server (library) to serve emails to an email client, written in pure PHP.
Stars: ✭ 45 (-37.5%)
Mutual labels:  imap, imap-server
smtpd
SMTP server (library) for receiving emails, written in pure PHP.
Stars: ✭ 94 (+30.56%)
Mutual labels:  smtp, smtp-server

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.

  • Yggmail runs just about anywhere you like — your inbox is stored right on your own machine;
  • Implements IMAP and SMTP protocols for sending and receiving mail, so you can use your favourite client (hopefully);
  • Mails are exchanged between Yggmail users using built-in Yggdrasil connectivity;
  • All mail exchange traffic between any two Yggmail nodes is always end-to-end encrypted without exception;
  • Yggdrasil and Yggmail nodes on the same network are discovered automatically using multicast or you can configure a static Yggdrasil peer.

Email addresses are based on your public key, like 617b5772c6d10feda41fc6e0e43b976c4cc9383d3729310d3dc9e1332f0d9acd@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:

  • SMTP is listening on localhost port 1025, username is your mail address, plain password authentication, no SSL/TLS
  • IMAP is listening on localhost port 1143, username is your mail address, plain password authentication, no SSL/TLS

Then try sending a mail to another Yggmail user!

Parameters

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

  • -peer=tls://... or -peer=tcp://... — connect to a specific Yggdrasil node, like one of the Public Peers;
  • -multicast - enable multicast peer discovery for Yggdrasil nodes on your LAN
  • -database=/path/to/yggmail.db — use a specific database file;
  • -smtp=listenaddr:port — listen for SMTP on a specific address/port
  • -imap=listenaddr:port — listen for IMAP on a specific address/port;
  • -password — set your IMAP/SMTP password (doesn't matter if Yggmail is running or not, just make sure that Yggmail is pointing at the right database file or that you are in the right working directory).

Notes

There are a few important notes:

  • Yggmail needs to be running in order to receive inbound emails — it's therefore important to run Yggmail somewhere that will have good uptime;
  • Yggmail tries to guarantee that senders are who they say they are. Your From address must be your Yggmail address;
  • You can only email other Yggmail users, not regular email addresses on the public Internet;
  • You may need to configure your client to allow "insecure" or "plaintext" authentication to IMAP/SMTP — this is because we don't support SSL/TLS on the IMAP/SMTP listeners yet;
  • Yggmail won't transport mails larger than 1MB right now.

Bugs

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

  • IMAP behaviour might not be entirely spec-compliant in all cases, so your mileage with mail clients might vary;
  • IMAP search isn't implemented yet and will instead return all mails.

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].