|
|
@ -16,6 +16,28 @@ same level of functionality and still be able to host a complete mail server
|
|
|
|
at little cost while running only FOSS, applying the KISS principle and being
|
|
|
|
at little cost while running only FOSS, applying the KISS principle and being
|
|
|
|
able to fine-tune some details if needed.
|
|
|
|
able to fine-tune some details if needed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
How-to run your mail server
|
|
|
|
|
|
|
|
===========================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*Please note that this image is still in a very early stage. Do not use for
|
|
|
|
|
|
|
|
production!*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The mail server runs as a single Docker container. A volume should be mounted to ``/data`` for persistent storage. Simply setup Docker on your
|
|
|
|
|
|
|
|
server then run a container with the ``kaiyou/freeposte.io`` image:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
docker run --name=freeposte -d \
|
|
|
|
|
|
|
|
-e POSTMASTER_ADDRESS=admin@your.tld \
|
|
|
|
|
|
|
|
-e MAIL_HOSTNAME=mail.your.tld \
|
|
|
|
|
|
|
|
-e SECRET_KEY=yourflasksecretkey \
|
|
|
|
|
|
|
|
-p 25:25 \
|
|
|
|
|
|
|
|
-p 143:143 \
|
|
|
|
|
|
|
|
-p 587:587 \
|
|
|
|
|
|
|
|
-p 80:80 \
|
|
|
|
|
|
|
|
-v /path/to/your/data:/data \
|
|
|
|
|
|
|
|
kaiyou/freeposte.io
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
General architecture
|
|
|
|
General architecture
|
|
|
|
====================
|
|
|
|
====================
|
|
|
|
|
|
|
|
|
|
|
@ -32,34 +54,3 @@ Additional Web UI :
|
|
|
|
* Administration UI based on Flask.
|
|
|
|
* Administration UI based on Flask.
|
|
|
|
|
|
|
|
|
|
|
|
All components are monitored by supervisord.
|
|
|
|
All components are monitored by supervisord.
|
|
|
|
|
|
|
|
|
|
|
|
Incoming e-mail
|
|
|
|
|
|
|
|
===============
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Incoming e-mail is received by postfix, according to the workflow:
|
|
|
|
|
|
|
|
- ``smtpd`` receives the message;
|
|
|
|
|
|
|
|
- the domain is checked against the ``domains`` table;
|
|
|
|
|
|
|
|
- if the domain matches an active domain or the source address is allowed relay, continue;
|
|
|
|
|
|
|
|
- the mail is forwarded to Spamassassin, which appends some headers;
|
|
|
|
|
|
|
|
- the mail is fowarded to Dovecot using ``lmtp``;
|
|
|
|
|
|
|
|
- the local part and domain are checked against the ``users`` table;
|
|
|
|
|
|
|
|
- the user quota is checked;
|
|
|
|
|
|
|
|
- the mail is delivered to the local maildir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TODO
|
|
|
|
|
|
|
|
====
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The project is still at a very (very !) early stage.
|
|
|
|
|
|
|
|
This is more of a roadmap than a proper TODO list. Please poke me or pull
|
|
|
|
|
|
|
|
request if you would like to join the effort.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- [x] Import vmm configuration files and get a simple postfix/dovecot running with SQLite.
|
|
|
|
|
|
|
|
- [x] Add support for spamassassin.
|
|
|
|
|
|
|
|
- [ ] Add support for clamav.
|
|
|
|
|
|
|
|
- [ ] Learn from user-defined spam or ham.
|
|
|
|
|
|
|
|
- [ ] Draft a Web administration UI.
|
|
|
|
|
|
|
|
- [ ] Implement basic features from the free (as in beer) poste.io.
|
|
|
|
|
|
|
|
- [ ] Start using on a couple production mail servers.
|
|
|
|
|
|
|
|
- [ ] Implement some fancy features.
|
|
|
|
|
|
|
|