/docker-postfix

run postfix with smtp authentication (sasldb) in a docker container

Primary LanguageShellMIT LicenseMIT

docker-postfix

run postfix with smtp authentication (sasldb) in a docker container. TLS and OpenDKIM support are optional.

Requirement

  • Docker 1.0

Installation

  1. Build image

    $ sudo docker pull catatnight/postfix

Usage

  1. Create postfix container with smtp authentication

    $ sudo docker run -p 25:25 \
    		-e maildomain=mail.example.com -e smtp_user=user:pwd \
    		--name postfix -d catatnight/postfix
    # Set multiple user credentials: -e smtp_user=user1:pwd1,user2:pwd2,...,userN:pwdN
  2. Enable OpenDKIM: save your domain key .private in /path/to/domainkeys

    $ sudo docker run -p 25:25 \
    		-e maildomain=mail.example.com -e smtp_user=user:pwd \
    		-v /path/to/domainkeys:/etc/opendkim/domainkeys \
    		--name postfix -d catatnight/postfix
  3. Enable TLS(587): save your SSL certificates .key and .crt to /path/to/certs

    $ sudo docker run -p 587:587 \
    		-e maildomain=mail.example.com -e smtp_user=user:pwd \
    		-v /path/to/certs:/etc/postfix/certs \
    		--name postfix -d catatnight/postfix
  4. (Optional) Configure postfix to allow relaying from a local docker network (containers in the same network):

network=`docker network inspect --format='{{range .IPAM.Config}}{{.Subnet}}{{end}}' my_docker_network`

docker run -d --name smtp \
  --net=my_docker_network \
  -e maildomain=mydomain.localhost \
  -e mynetworks=127.0.0.0/8,$network \
  myrepo/postfix

Note

  • Login credential should be set to (username@mail.example.com, password) in Smtp Client
  • You can assign the port of MTA on the host machine to one other than 25 (postfix how-to)
  • Read the reference below to find out how to generate domain keys and add public key to the domain's DNS records

Reference