All Projects → emersion → Neutron

emersion / Neutron

Licence: mit
Self-hosted server for the ProtonMail client

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Neutron

Mailu
Insular email distribution - mail server as Docker images
Stars: ✭ 3,151 (+597.12%)
Mutual labels:  webmail, mail, smtp, imap
Rainloop Webmail
Simple, modern & fast web-based email client
Stars: ✭ 3,618 (+700.44%)
Mutual labels:  webmail, mail, smtp, imap
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 (-82.74%)
Mutual labels:  mail, imap, smtp
squirrelmail
🌰️🐿️ SquirrelMail GitHub Repository (PHP 7-OK!)
Stars: ✭ 42 (-90.71%)
Mutual labels:  imap, smtp, webmail
Excision-Mail
Fullstack, security focused mailserver based on OpenSMTPD for OpenBSD using ansible
Stars: ✭ 108 (-76.11%)
Mutual labels:  mail, imap, smtp
Cypht
Cypht: Lightweight Open Source webmail written in PHP and JavaScript
Stars: ✭ 628 (+38.94%)
Mutual labels:  webmail, smtp, imap
Inbucket
Disposable webmail server (similar to Mailinator) with built in SMTP, POP3, RESTful servers; no DB required.
Stars: ✭ 685 (+51.55%)
Mutual labels:  webmail, mail, smtp
enough mail
IMAP, POP3 and SMTP clients for Dart developers. Contains both low level as well as a high level API.
Stars: ✭ 78 (-82.74%)
Mutual labels:  mail, imap, smtp
Mail
The Hoa\Mail library.
Stars: ✭ 24 (-94.69%)
Mutual labels:  mail, imap, smtp
skirnir
Skirnir Email Server
Stars: ✭ 31 (-93.14%)
Mutual labels:  mail, imap, smtp
fs2-mail
asynchronous library for sending and receiving mail via fs2._
Stars: ✭ 39 (-91.37%)
Mutual labels:  mail, imap, smtp
Mail
💌 Mail app for Nextcloud
Stars: ✭ 528 (+16.81%)
Mutual labels:  webmail, smtp, imap
Maddy
✉️ Composable all-in-one mail server.
Stars: ✭ 2,800 (+519.47%)
Mutual labels:  mail, smtp, imap
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 (+284.96%)
Mutual labels:  webmail, smtp, imap
Neomutt
✉️ Teaching an Old Dog New Tricks -- IRC: #neomutt on irc.libera.chat
Stars: ✭ 2,343 (+418.36%)
Mutual labels:  mail, smtp, imap
Docker Mailserver
Production-ready fullstack but simple mail server (SMTP, IMAP, LDAP, Antispam, Antivirus, etc.) running inside a container.
Stars: ✭ 8,115 (+1695.35%)
Mutual labels:  mail, smtp, imap
James Project
Emails at the heart of your business logic!
Stars: ✭ 485 (+7.3%)
Mutual labels:  mail, smtp, imap
Hydroxide
A third-party, open-source ProtonMail CardDAV, IMAP and SMTP bridge
Stars: ✭ 578 (+27.88%)
Mutual labels:  mail, smtp, imap
imail
small mail server
Stars: ✭ 88 (-80.53%)
Mutual labels:  mail, imap, smtp
Mail
Library to send e-mails over different transports and protocols (like SMTP and IMAP) using immutable messages and streams. Also includes SMTP server.
Stars: ✭ 399 (-11.73%)
Mutual labels:  mail, smtp, imap

neutron

Build Status GoDoc

Self-hosted server for Protonmail client.

This project is not affiliated or supported by ProtonMail.

What is it?

Neutron is a server that will allow the ProtonMail client to be used with backends. Several backends are available right now:

  • IMAP: this will read and store messages on your IMAP server. Received messages will stay as is (that is, unencrypted) but messages saved from the web client will be encrypted. You will login to the web client with your IMAP username and password.
  • SMTP: this will send messages using your SMTP server. Messages are sent encrypted to the server. If a recipient's public key is not found, the server will decrypt the message before sending it to this recipient.
  • Filesystem: settings, contacts, keys are stored on disk. Keys are always stored encrypted.
  • Memory: all is stored in memory and will be destroyed when the server is stopped.

Neutron is modular so it's easy to create new backends and handle more scenarios.

Keep in mind that Neutron is less secure than ProtonMail: most servers don't use full-disk encryption and aren't under 1,000 meters of granite rock in Switzerland. Also, SRP is not yet supported (#35). If you use Neutron, make sure to donate to ProtonMail!

Install

Configuration

See config.json. You'll have to change IMAP and SMTP settings to match your mail server config.

{
	"Memory": {
		"Enabled": true,
		"Populate": false, // Populate server with default neutron user
		"Domains": ["emersion.fr"] // Available e-mail domains
	},
	"Imap": { // IMAP server config
		"Enabled": true,
		"Hostname": "mail.gandi.net",
		"Tls": true,
		"Suffix": "@emersion.fr" // Will be appended to username when authenticating
	},
	"Smtp": { // SMTP server config
		"Enabled": true,
		"Hostname": "mail.gandi.net",
		"Port": 587,
		"Suffix": "@emersion.fr" // Will be appended to username when authenticating
	},
	"Disk": { // Store keys, contacts and settings on disk
		"Enabled": true,
		"Keys": { "Directory": "db/keys" }, // PGP keys location
		"Contacts": { "Directory": "db/contacts" },
		"UsersSettings": { "Directory": "db/settings" },
		"Addresses": { "Directory": "db/addresses" }
	}
}

Usage

To generate keys for a new user the first time, just click Sign up on the login page and enter your IMAP credentials.

Options

  • -config: specify a custom config file
  • -help: show help

Build

Requirements:

  • Go (to build the server)
  • Node, NPM (to build the client)
# Get the code
go get -u github.com/emersion/neutron
cd $GOPATH/src/github.com/emersion/neutron

# Build the client
git submodule init
git submodule update
make build-client

# Start the server
make start

Docker

make build-docker
docker build -t neutron .
docker create -p 4000:4000 -v $PWD/config.json:/config.json -v $PWD/db:/db neutron

Backends

All backends must implement the backend interface. The main backend interface is split into multiple other backend interfaces for different roles: ContactsBackend, LabelsBackend and so on. This allows to build modular backends, e.g. a MessagesBackend which stores messages on an IMAP server with a ContactsBackend which stores contacts on a LDAP server and a SendBackend which sends outgoing messages to a SMTP server.

Writing a backend is just a matter of implementing the necessary functions. You can read the memory backend to understand how to do that. Docs for the backend are available here: https://godoc.org/github.com/emersion/neutron/backend#Backend

License

MIT

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].