You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Go to file
Pierre Jaury aace1c2d78 Get back to serving CDN assets, related to #25 8 years ago
admin Get back to serving CDN assets, related to #25 8 years ago
clamav Update clamav properly and initialize the database, related to #18 8 years ago
doc Update the documentation 9 years ago
dovecot Learn from spam automatically, fixes #8 9 years ago
fetchmail Enforce certificate checks with fetchmail, fixes #24 8 years ago
nginx Use docker links for nginx to resolve properly 9 years ago
postfix Enable milter in postfix and run the containers 9 years ago
rmilter Add whitelist addresses for rmilter limits 8 years ago
roundcube Use the environment secret key instead of default one 9 years ago
rspamd Run the rspamd controller 9 years ago
.gitignore Add virtualenv folders to .gitignore 9 years ago
INSTALL.md Update the install documentation to user manage.py 8 years ago
LICENSE Add a license file 9 years ago
MANAGE.md Add a proper INSTALL documentation 9 years ago
README.md Update the documentation to use manage.py 8 years ago
docker-compose.yml Handle DKIM key generation and storage 8 years ago
freeposte.env Define the fetchmail delay in the global configuration 9 years ago

README.md

Freeposte.io

Simple yet full-featured mail server as a set of Docker images. The idea behing Freeposte.io is identical to motivations that led to poste.io: providing a simple and maintainable mail server that is painless to manage and does not require more resources than necessary.

People from poste.io did an amazing job at accomplishing this ; any company looking for a serious yet simple mail server with professional support should turn to them.

This project is meant for free software supporters and hackers to reach the 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 able to fine-tune some details if needed.

General architecture

The mail infrastructure is based on a standard MTA-LDA pattern :

  • Postfix for incoming and outgoing emails ;
  • Rmilter as a filtering interface before delivery (with rspamd and ClamAV) ;
  • Dovecot as a delivery agent and reading (IMAP) server ;
  • Roundcube (or any Webmail) as a user-friendly Web client ;
  • Fetchmail as a client to fetch remote accounts (POP/IMAP) ;
  • Freeposte (Flask application) as an administration interface.

Architecture

Running a mail server

Freeposte runs on top of Docker for easy packaging and upgrades. All you need is a proper system with Docker and Compose installed, then simply download the docker-compose.yml and sample freeposte.env, tune them to your needs and fire up the mail server:

docker-compose up -d

For a detailed walktrough, see INSTALL.md. Also, see MANAGE.md for details about daily maintenance of your mail server.

Development environment

The administration Web interface requires a proper dev environment that can easily be setup using virtualenv (make sure you are using Python 3) :

cd admin
virtualenv .
source bin/activate
pip install -r requirements.txt

You can then export the path to the development database:

export SQLALCHEMY_DATABASE_URI=sqlite:///path/to/dev.db

And finally run the server with debug enabled:

python manage.py runserver

Philosophy

The mailserver is designed as a whole, some images are therefore not best suited for reuse outside this project. All images should however follow Docker best practices and be as generic as possible :

  • even if not suited for reuse, they should be simple enough to fit as base images for other projects,
  • interesting settings should be available as environment variables
  • base images should be well-trusted (officiel Alpine or Debian for instance).