2016-05-23 07:21:29 +02:00
# docker-mailserver [![Build Status](https://travis-ci.org/tve/docker-mailserver.svg?branch=master)](https://travis-ci.org/tve/docker-mailserver)
This is a fork of https://github.com/tomav/docker-mailserver with some additional features:
### Sending outbound mail via Amazon SES
Instead of letting postfix deliver mail directly it is possible to forward outgoing email
through Amazon SES (Simple Email Service). To enable this feature, define the following two
environment variables in the `docker-compose.yml` with the appropriate values for your AWS SES
subscription (the values for `AWS_SES_USERPASS` are the "SMTP username" and "SMTP password"
provided when yuo create SMTP credentials for SES):
```
environment:
- AWS_SES_HOST=email-smtp.us-east-1.amazonaws.com
- AWS_SES_USERPASS=AKIAXXXXXXXXXXXXXXXX:kqXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
```
### Configuring regexp aliases
Additional regexp aliases can be configured by placing them into `config/postfix-regexp.cf` .
The regexp aliases get evaluated after the virtual aliases (`postfix-cirtual.cf`). For example,
the following `config/postfix-regexp.cf` causes all email to test users to be delivered
to `qa@example.com` :
```
/^test[0-9][0-9]*@example.com/ qa@example.com
```
## Overview
2016-04-24 17:37:10 +02:00
2016-04-21 15:28:23 +02:00
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.
2015-03-28 16:44:40 +01:00
Includes:
2015-03-29 14:07:56 +02:00
2015-03-31 17:28:13 +02:00
- postfix with smtp auth
2016-04-07 14:20:51 +02:00
- dovecot for sasl, imap (and optional pop3) with ssl support
2015-03-31 17:28:13 +02:00
- amavis
2016-02-01 15:05:29 +01:00
- spamassasin supporting custom rules
2015-06-29 14:55:54 +02:00
- clamav with automatic updates
2016-01-20 16:41:34 +01:00
- opendkim
2016-04-21 15:28:23 +02:00
- opendmarc
2016-02-13 12:20:15 +01:00
- fail2ban
2016-04-29 17:52:22 +02:00
- basic [sieve support ](https://github.com/tomav/docker-mailserver/wiki/Configure-Sieve-filters ) using dovecot
2016-01-26 12:56:26 +01:00
- [LetsEncrypt ](https://letsencrypt.org/ ) and self-signed certificates
2016-04-21 15:28:23 +02:00
- [integration tests ](https://travis-ci.org/tomav/docker-mailserver )
2016-02-01 15:05:29 +01:00
- [automated builds on docker hub ](https://hub.docker.com/r/tvial/docker-mailserver/ )
2015-03-28 16:44:40 +01:00
2015-09-12 10:53:59 +02:00
Why I created this image: [Simple mail server with Docker ](http://tvi.al/simple-mail-server-with-docker/ )
2015-08-26 10:05:40 +02:00
2016-04-24 17:37:10 +02:00
Before you open an issue, please have a look this `README` , the [Wiki ](https://github.com/tomav/docker-mailserver/wiki/ ) and Postfix/Dovecot documentation.
2016-04-20 10:15:51 +02:00
2016-04-24 17:37:10 +02:00
## Usage
2015-03-31 17:28:13 +02:00
2016-05-08 20:10:38 +02:00
#### Get latest image
2016-04-24 17:37:10 +02:00
2016-05-08 20:10:38 +02:00
docker pull tvial/docker-mailserver:latest
2015-03-28 16:04:09 +01:00
2016-04-24 17:37:10 +02:00
#### Create a `docker-compose.yml`
2016-04-20 10:15:51 +02:00
2016-04-24 17:37:10 +02:00
Adapt this file with your FQDN.
2016-02-01 15:05:29 +01:00
2016-04-24 17:37:10 +02:00
version: '2'
2016-02-01 15:05:29 +01:00
2016-04-24 17:37:10 +02:00
services:
mail:
2016-05-08 20:10:38 +02:00
image: tvial/docker-mailserver:latest
2016-04-24 17:37:10 +02:00
# build: .
hostname: mail
domainname: domain.com
container_name: mail
ports:
- "25:25"
- "143:143"
- "587:587"
- "993:993"
volumes:
2016-05-08 19:02:32 +02:00
- maildata:/var/mail
2016-04-24 17:37:10 +02:00
- ./config/:/tmp/docker-mailserver/
2016-02-01 15:05:29 +01:00
2016-04-24 17:37:10 +02:00
volumes:
maildata:
driver: local
2016-02-01 15:05:29 +01:00
2016-04-24 17:37:10 +02:00
#### Create your mail accounts
2016-04-07 14:20:51 +02:00
2016-04-24 17:37:10 +02:00
Don't forget to adapt MAIL_USER and MAIL_PASS to your needs
2016-04-07 14:20:51 +02:00
2016-04-24 17:37:10 +02:00
mkdir -p config
2016-04-23 00:31:15 +02:00
docker run --rm \
-e MAIL_USER=user1@domain.tld \
2016-04-24 17:37:10 +02:00
-e MAIL_PASS=mypassword \
2016-05-08 20:10:38 +02:00
-ti tvial/docker-mailserver:latest \
2016-04-24 17:37:10 +02:00
/bin/sh -c 'echo "$MAIL_USER|$(doveadm pw -s CRAM-MD5 -u $MAIL_USER -p $MAIL_PASS)"' >> config/postfix-accounts.cf
2016-02-01 15:05:29 +01:00
2016-04-24 17:37:10 +02:00
#### Generate DKIM keys
2015-07-16 19:35:11 +02:00
2016-04-24 17:37:10 +02:00
docker run --rm \
-v "$(pwd)/config":/tmp/docker-mailserver \
2016-05-08 20:10:38 +02:00
-ti tvial/docker-mailserver:latest generate-dkim-config
2015-07-16 19:35:11 +02:00
2016-04-24 17:37:10 +02:00
Now the keys are generated, you can configure your DNS server by just pasting the content of `config/opedkim/keys/domain.tld/mail.txt` in your `domain.tld.hosts` zone.
2015-08-10 12:20:50 +02:00
2016-04-24 17:37:10 +02:00
#### Start the container
2015-06-29 14:55:54 +02:00
2016-04-24 17:37:10 +02:00
docker-compose up -d mail
2015-06-29 14:55:54 +02:00
2016-04-24 17:37:10 +02:00
You're done!
2015-12-05 17:32:33 +01:00
2016-02-01 15:05:29 +01:00
## Environment variables
2015-06-29 14:55:54 +02:00
2016-05-10 07:32:45 +02:00
Please check [how the container starts ](https://github.com/tomav/docker-mailserver/blob/master/target/start-mailserver.sh ) to understand what's expected.
2016-04-23 00:31:15 +02:00
2016-04-24 17:37:10 +02:00
Value in **bold** is the default value.
2016-04-23 00:31:15 +02:00
##### ENABLE_POP3
- **empty** => POP3 service disabled
- 1 => Enables POP3 service
##### ENABLE_FAIL2BAN
- **empty** => fail2ban service disabled
- 1 => Enables fail2ban service
2016-04-23 12:09:28 +02:00
If you enable Fail2Ban, don't forget to add the following lines to your `docker-compose.yml` :
cap_add:
- NET_ADMIN
Otherwise, `iptables` won't be able to ban IPs.
2016-04-29 17:09:48 +02:00
##### ENABLE_MANAGESIEVE
2016-04-29 15:24:10 +02:00
- **empty** => Managesieve service disabled
- 1 => Enables Managesieve on port 4190
2016-04-23 00:31:15 +02:00
##### SA_TAG
- **2.0** => add spam info headers if at, or above that level
##### SA_TAG2
- **6.31** => add 'spam detected' headers at that level
##### SA_KILL
- **6.31** => triggers spam evasive actions
##### SASL_PASSWD
- **empty** => No sasl_passwd will be created
2016-04-23 00:35:40 +02:00
- string => `/etc/postfix/sasl_passwd` will be created with the string as password
2016-04-23 00:31:15 +02:00
##### SMTP_ONLY
- **empty** => all daemons start
- 1 => only launch postfix smtp
2016-01-22 15:02:25 +01:00
2016-04-24 17:37:10 +02:00
##### SSL_TYPE
2016-04-20 23:01:32 +02:00
2016-04-24 17:37:10 +02:00
- **empty** => SSL disabled
- letsencrypt => Enables Let's Encrypt certificates
- custom => Enables custom certificates
- self-signed => Enables self-signed certificates
2015-03-31 22:21:44 +02:00
2016-04-24 17:37:10 +02:00
Please read [the SSL page in the wiki ](https://github.com/tomav/docker-mailserver/wiki/Configure-SSL ) for more information.
2015-03-31 22:21:44 +02:00
2016-02-04 08:51:07 +01:00