It's a complete multi-domain mail server in an all-in-one container, with all the services for professional use simplified deployment and configuration this to the 'menu.sh' script, plus an API and web interface for complete platform management with ACLs
The inspiration for this project came from the Docker Mailserver Project. I started from scratch and wanted to create the same project, but with full MySQL-based email management and simplified, easy-to-use configuration for everyone.
When I started this project, I had limited knowledge of mail servers, I read a lot of documentation and tutorials to help me in the creation, I had to make choices during development due to errors and problems, which explains a large number of commits, through this project I increased my experience in this field and if I had to start from 0, I would have thought differently about this architecture, anyway it's a project that will improve over time.
Through this project, I'd like to apply what I've learned in my courses on the DYMA platform (see my objectives diagram), among the DYMA courses I'd like to apply :
- HTML & CSS
- Tailwind 3
- Linux & Bash
- Docker
- Node
- Typescript
- React (I'd like try that with with next.js)
- React native (maybe, with an app for iOS and Android smartphones)
- NestJS
- Postfix with SASL Dovecot-LMTP authentication
- Dovecot with SASL, IMAPS only
- Quota enabled managed by MySQL database
- Sieve support with basic configuration (see docker/conf/sieve/)
- Rspamd
- auto bayesian HAM & SPAM
- Web interface on port 4001 with full spam module configuration
- filtering virus with clamav dedicated module
- Amavis
- ClamAV with automatic updates
- OpenDKIM
- OpenDMARC
- script for sending Dmarc reports
- Fail2ban
- Postscreen
- Roundcube
- SSL certificate to be updated on host, letsencrypt compatible, but server doesn't have port 80 to update itself
- MySQL database support
- API Nest.js with ACL support for multiple domains, recipients and business plan
- React front application
There's no reason why this project can't be used by a company, since all the packages used in this project have already been used for many years by professional mail servers. The Docker container and all its contents can be updated by personal or tierce contributions or by forking the initial project. Contributions from other developers will allow me to better myself both personally and professionally, that's my goal. However, before using this project, please give me time to finalize it completely.
In the documentation dovecot, postfix, opendmarc etc ..., MySQL plugins seem to be the most optimized. Postgresql seems optimized for dovecot and postfix but not opendmarc. It's possible to use mongodb via third-party archives, I chose to this project MySQL for the advantage of updates and vulnerabilities, which would be fixed more quickly. Later, I think it would be possible to choose in the environment which type of database by altering the docker configuration files and the bash sed command, it's quite possible and it would be experimental. I don't think I'd use SQLite because it's limited in terms of writing performance, but PostgreSQL is, and why not mongoDB?
The docker container runs on a VPS 2vcore with 4 GB memory, which seems to be sufficient for working with 10 recipients and 2 domains. Memory consumption increases with the antivirus, so it depends on the number of recipients and will have to be adjusted if necessary.
I had planned a documentation that I'll produce later.
I've finalized a tool that allows complete management of the container, except for the creation of DKIM keys, which will have to be done in the container. It's not impossible that I'll add this functionality from the Menu, but it will appear in the API.
The menu allows you to install, configure and use
There is a document dedicated to this by clicking here
Julien Jean (main contributor)