Skip to content
A fullstack but simple mailserver (smtp, imap, antispam, antivirus, ssl...) using Docker.
Branch: master
Clone or download
Pull request Compare This branch is 488 commits behind tomav:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
postfix
spamassassin
test
.gitignore
.travis.yml
Dockerfile
LICENCE
Makefile
README.md
SSL.md
assert.sh
docker-compose.yml.dist
start-mailserver.sh

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 he 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 password separated by a pipe.

Example:

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

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

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

SSL

Please read SSL.md 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/test.sh
  • Build image and run tests using make
  • Document your improvements
  • Commit, push and make a pull-request
You can’t perform that action at this time.