_________                 ______         
______  /________   _________  /         
_  __  /_  __ \_ | / /  _ \_  /          
/ /_/ / / /_/ /_ |/ //  __/  /           
\__,_/  \____/_____/ \___//_/   ________ 
                               |   ~~ # |
                               |  ---   |

Self host your email in 5 easy steps.


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: This project is under the BSD-3-Clause license, its code can be found in our git repositories.


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:


To install dovel you need go propperly installed and a port available, this guide works for MacOS, Linux and BSD systems.
  1. Install dovel by running: go install dovel.email/server@v0.11.10.
  2. Configure dovel by creating the configuration file, an example is provided below. Running server is enough to start.
  3. Configure your MX record in your domain registrar to point to your server. This is needed to receive email.
  4. 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.
  5. Create the handlers you want for each domain. This is explained below.

Example configuration

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.
	"port": "8000",
	"domain": "dovel.email",
	"vaultFile": "users.json"
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. For example: 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.

To see all options please refer to the go docs.


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.


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!