项目作者: madharjan

项目描述 :
Docker container for Postfix SMTP, Dovecot IMAP/POP3
高级语言: Shell
项目地址: git://github.com/madharjan/docker-mail.git
创建时间: 2016-08-04T05:37:00Z
项目社区:https://github.com/madharjan/docker-mail

开源协议:MIT License

下载


docker-mail

Build Status
Layers

Docker container for Postfix SMTP & Dovecot IMAP/POP3 based on madharjan/docker-base

Mail Server configuration based on tomav/docker-mailserver

Changes

  • Services configured as runit services
  • Scripts refactor-ed for baseimage docker-base

Features

  • Using scripts in my_init.d to initialize services (e.g mail-startup.sh)
  • Using scripts in my_shutdown.d to cleanup services before container stop (e.g postfix-stop.sh)
  • Bats (sstephenson/bats) based test cases

Postfix 2.11 & Dovecot 2.2.9 (docker-mail)

  • SpamAssassin 3.4.0
  • ClamAV 0.99.2
  • Fail2Ban 0.8.11
  • Manage Sieve 2.2.9
  • Certbot SSL
  • OpenDKIM 2.9.1
  • OpenDMARC 1.2.0

Environment

Variable Default Example
DISABLE_AMAVIS 1 (to disable)
DISABLE_CLAMAV 1 (to disable)
DISABLE_SPAMASSASSIN 1 (to disable)
ENABLE_FAIL2BAN 1 (to enable)
ENABLE_MANAGESIEVE 1 (to enable)
ENABLE_POP3 1 (to enable)
SMTP_ONLY 1 (to enable)
SSL_TYPE certbot
SASL_PASSWD domain username:password
SA_TAG 2.0
SA_TAG2 6.31
SA_KILL 6.31

Build

  1. # clone project
  2. git clone https://github.com/madharjan/docker-mail
  3. cd docker-mail
  4. # build
  5. make
  6. # tests
  7. make run
  8. make fixtures
  9. make test
  10. # clean
  11. make clean

Run

Note: update environment variables below as necessary

Postfix SMTP, Dovecot IMAP/POP3

Run Certbot to create SSL certificate for mail.${DOMAIN}

  1. docker run --rm \
  2. -e EMAIL=me@email.com \
  3. -e DOMAIN=company.com \
  4. -p 80:80 \
  5. -p 443:443 \
  6. -v /opt/docker/certbot:/etc/certbot \
  7. madharjan/doocker-mail:3.10-2.2.22 \
  8. generate-mail-cert

Generate DKIM keys

  1. docker run --rm \
  2. -v /opt/docker/mail/config:/tmp/config \
  3. madharjan/docker-mail:3.10-2.2.22 \
  4. generate-dkim-config

DKIM keys are generated, configure DNS server with DKIM keys from config/opedkim/keys/domain.tld/mail.txt

Create mail users

  1. docker exec --rm \
  2. -e EMAIL=user1 \
  3. -e PASSWORD=password \
  4. -v /opt/docker/mail/config:/tmp/config \
  5. madharjan/doocker-mail:3.10-2.2.22 \
  6. add-mail-user

Run docker-mail container

  1. docker stop mail
  2. docker rm mail
  3. docker run -d \
  4. -e ENABLE_POP3=1 \
  5. -e ENABLE_FAIL2BAN=1 \
  6. -e ENABLE_MANAGESIEVE=1 \
  7. -e SA_TAG=2.0 \
  8. -e SA_TAG2=6.31 \
  9. -e SA_KILL=6.31\
  10. -e SMTP_ONLY= \
  11. -e SSL_TYPE=certbot \
  12. -p 25:25 \
  13. -p 587:587 \
  14. -p 993:993 \
  15. -p 995:995 \
  16. -v /opt/docker/mail/config:/tmp/config \
  17. -v /opt/docker/mail/data:/var/mail \
  18. -v /opt/docker/mail/log:/var/log/mail \
  19. -v /opt/docker/certbot:/etc/certbot \
  20. --hostname mail.${DOMAIN}
  21. --name mail \
  22. madharjan/docker-mail:3.10-2.2.22

Systemd Unit File

Note: update environment variables below as necessary

  1. [Unit]
  2. Description=Mail
  3. After=docker.service
  4. [Service]
  5. TimeoutStartSec=0
  6. ExecStartPre=-/bin/mkdir -p /opt/docker/mail
  7. ExecStartPre=-/usr/bin/docker stop mail
  8. ExecStartPre=-/usr/bin/docker rm mail
  9. ExecStartPre=-/usr/bin/docker pull madharjan/docker-mail:3.10-2.2.22
  10. ExecStart=/usr/bin/docker run \
  11. -e ENABLE_POP3=1 \
  12. -e ENABLE_FAIL2BAN=1 \
  13. -e ENABLE_MANAGESIEVE=1 \
  14. -e SA_TAG=2.0 \
  15. -e SA_TAG2=6.31 \
  16. -e SA_KILL=6.31\
  17. -e SMTP_ONLY= \
  18. -e SSL_TYPE=certbot \
  19. -p 25:25 \
  20. -p 587:587 \
  21. -p 993:993 \
  22. -p 995:995 \
  23. -v /opt/docker/mail/config:/tmp/config \
  24. -v /opt/docker/mail/data:/var/mail \
  25. -v /opt/docker/mail/log:/var/log/mail \
  26. -v /opt/docker/certbot:/etc/certbot \
  27. --hostname mail.${DOMAIN}
  28. --name mail \
  29. madharjan/docker-mail:3.10-2.2.22
  30. ExecStop=/usr/bin/docker stop -t 2 mail
  31. [Install]
  32. WantedBy=multi-user.target

Generate Systemd Unit File

Variable Default Example
VOLUME_HOME /opt/docker /opt/data
NAME mail
DOMAIN mycompany.com
DISABLE_AMAVIS 0 1 (to disable)
DISABLE_CLAMAV 0 1 (to disable)
DISABLE_SPAMASSASSIN 0 1 (to disable)
ENABLE_FAIL2BAN 0 1 (to enable)
ENABLE_MANAGESIEVE 0 1 (to enable)
ENABLE_POP3 0 1 (to enable)
SMTP_ONLY 0 1 (to enable)
SSL_TYPE certbot
SASL_PASSWD domain.com username:password
SA_TAG 2.0
SA_TAG2 6.31
SA_KILL 6.31
PORTS 25:25,587:587,993:993,995:995
  1. # generate mail.service
  2. docker run --rm \
  3. -e VOLUME_HOME=/opt/docker \
  4. -e NAME=mail \
  5. -e DOMAIN=mycompany.com \
  6. madharjan/docker-mail:3.10-2.2.22 \
  7. mail-systemd-unit | \
  8. sudo tee /etc/systemd/system/mail.service
  9. sudo systemctl enable mail
  10. sudo systemctl start mail