Dovel is a SMTP server that sends and receives emails acording to a
simple configuration file. It also comes with an optional web interface
that you can use to browse your emails. It is designed to be simple and
easy to use, and will remain so. Dovel is great because:
Is lightweight: Uses only a few MBs of RAM and loads
pages super fast.
Is easy to configure: Needs just one JSON file.
Is easy to use: The design is simple and extensible.
Supports DKIM
Supports PGP using the WKD standard
This project is under the BSD-3-Clause license, its code can be found
in our git repositories.
Roadmap
Dovel is in early stages and in active development, this means there
is a lot to be done. The major features planned are as follows:
Support DKIM.
Multiple inboxes.
PGP support.
Multiple users.
Create http and ssh clients.
Installation
There are 2 ways of installing it: using docker or building the binary.
To build and install the binary version you need go
propperly installed, this guide works for MacOS, Linux and BSD systems.
Install dovel by running:
go install dovel.email/server@v0.13.1.
Configure dovel by creating the configuration file, an
example is provided below. Running server
is enough to start.
Configure your MX record in your domain registrar to
point to your server. This is needed to receive email.
Configure other DNS records as you wish in your domain
registrar such as PTR, SPF, DKIM or DMARC to improve
sending emails. Dovel supports DKIM by passing the key
path in the configuration file.
Create the handlers you want for each domain. This is
explained below.
The docker version has similar steps, instead of 1. build the
docker image. To run the container you need to give dovel a
way to access config files, one option is to share the config
folder using -v argument:
docker run bleemayer/dovel -v CONFIG_FOLDER:/root/.config/dovel/
Configuring
The following configuration is enought to receive emails: Dovel needs
the file ~/.config/dovel/config.json is order to work
correctly, otherwise it will use default settings which may not
suit you. The field vaultFile is optional for receiving emails.
Now the hook must be placed: suppose your domain is dovel.email,
emails addressed to joe@dovel.email will be handled by a hook
named receive-dovel.email and emails sent by this domain are
handled by send-dovel.email likewise.
So, to enable a domain, simply create the according script.
To see all options please refer to the
go docs.
Hooks
Dovel can handle email for different domains, so you can have multiple
inboxes. To achieve this handler files must be created in the
~/.config/dovel/hooks/ folder. The program will run the
corresponding hook passing the email as standard input.
Dovel has some usefull hooks in the
hooks repository:
receive-example.domain
Using
Using dovel email server is meant to be super easy: the server
uses the configuration above, you can add the vault file in order to
authenticate users that want to send emails. After creating the config
file, simply run server to start the server.
Contributing
Sending bug reports, starting discussions and sending patches can be
done easily by email, this project follows the git email convention,
our git repositories can be found on our git.
Financial support is also greatly appreciated, you can donate
any amount by using this ko-fi
link. Thank you!