Go to file
angus 09d5bb72e3 Configure fail2ban for dovecot and add custom failregex.
Correct the handling of virtual_alias_maps file in postfix (virtual)
for the generation of virtual_mailbox_domains file (vhost).
Minor changes to file names.
2016-04-08 16:48:52 +02:00
bin Fixed error reported by jderusse 2015-12-05 19:08:39 +01:00
dovecot Dovecot based version of the mailserver. 2016-04-07 14:42:07 +02:00
postfix Dovecot based version of the mailserver. 2016-04-07 14:42:07 +02:00
spamassassin Fixes #8 - BC BREAK - User configuration is no longer in docker-compose.yml to make it easier to maintain 2015-07-16 19:35:11 +02:00
test Clamav, Imap, Pop3, Dovecot, Postfix services are now logging into 2016-04-08 00:23:12 +02:00
.gitignore - added DKIM support 2016-01-20 16:41:34 +01:00
.travis.yml Added new line when needed and fixed a test 2015-10-18 21:30:53 +02:00
Dockerfile Dovecot based version of the mailserver. 2016-04-07 14:42:07 +02:00
LICENSE Configure fail2ban for dovecot and add custom failregex. 2016-04-08 16:48:52 +02:00
Makefile Merge branch 'feat_separate-logs' into feat_dovecot_separate-logs 2016-04-08 00:42:31 +02:00
README.md Dovecot based version of the mailserver. 2016-04-07 14:42:07 +02:00
docker-compose.yml.dist add NET_ADMIN container capabilities instead of all privileges 2016-02-13 01:40:36 +01:00
start-mailserver.sh Configure fail2ban for dovecot and add custom failregex. 2016-04-08 16:48:52 +02:00

README.md

docker-mailserver

Build Status

A fullstack but simple mail server (smtp, imap, antispam, antivirus...).
Only configuration files, no SQL database. Keep it simple and versioned.
Easy to deploy and upgrade.

Includes:

Why I created this image: Simple mail server with Docker

Before you open an issue, please have a look this README, the FAQ and Postfix documentation.

Usage

# get latest image
docker pull tvial/docker-mailserver

# create a "docker-compose.yml" file containing:  
mail:
  image: tvial/docker-mailserver
  hostname: mail
  domainname: domain.com
  # your FQDN will be 'mail.domain.com'
  ports:
  - "25:25"
  - "143:143"
  - "587:587"
  - "993:993"
  volumes:
  - ./spamassassin:/tmp/spamassassin/
  - ./postfix:/tmp/postfix/

# start the container
docker-compose up -d mail

Managing users and aliases

Users

Users are managed in postfix/accounts.cf.
Just add the full email address and its encrypted password separated by a pipe.

Example:

user1@domain.tld|mypassword-encrypted
user2@otherdomain.tld|myotherpassword-encrypted

To generate the password you could run for example the following:

docker run --rm -ti tvial/docker-mailserver doveadm pw -s MD5-CRYPT -u user1@domain.tld

You will be asked for a password (and for a confirmation of the password). Just copy all the output string in the file postfix/accounts.cf.

The `doveadm pw` command let you choose between several encryption schemes for the password.
Use doveadm pw -l to get a list of the currently supported encryption schemes.

Aliases

Please first read Postfix documentation on virtual aliases.

Aliases are managed in postfix/virtual.
An alias is a full email address that will be:

  • delivered to an existing account in postfix/accounts.cf
  • redirected to one or more other email adresses

Alias and target are space separated.

Example:

# Alias to existing account
alias1@domain.tld user1@domain.tld

# Forward to external email address
alias2@domain.tld external@gmail.com

Environment variables

  • DMS_SSL
    • empty (default) => SSL disabled
    • letsencrypt => Enables Let's Encrypt certificates
    • self-signed => Enables self-signed certificates
  • ENABLE_POP3
    • empty (default) => POP3 service disabled
    • 1 => Enables POP3 service
  • SMTP_ONLY
    • empty (default) => courier daemons might start
    • *1 => do not launch any courier daemons (imap, pop3)
  • SA_TAG
    • 2.0 (default) => add spam info headers if at, or above that level
  • SA_TAG2
    • 6.31 (default) => add 'spam detected' headers at that level
  • SA_KILL
    • 6.31 (default) => triggers spam evasive actions
  • SASL_PASSWORD
    • empty (default) => No sasl_passwd will be created
    • string => A /etc/postfix/sasl_passwd will be created with that content and postmap will be run on it
  • ENABLE_FAIL2BAN
    • empty (default) => fail2ban service disabled
    • 1 => Enables fail2ban service

Please read how the container starts to understand what's expected.

SSL

Please read the SSL page in the wiki for more information.

Todo

Things to do or to improve are stored on Github, some open by myself. Feel free to improve this docker image.

Contribute

  • Fork
  • Improve
  • Add integration tests in test/tests.bats
  • Build image and run tests using make
  • Document your improvements
  • Commit, push and make a pull-request