4.0 KiB
Purpose
The purpose of this document is to illustrate how to deploy Mailcow in a dockerized format.
!!! note "Assumptions" It is assumed that you are deploying Mailcow into an existing Ubuntu Server environment. If you are using a different operating system, refer to the official documentation.
Setting Up Docker
Go ahead and set up docker and docker-compose with the following commands:
sudo su # (1)
curl -sSL https://get.docker.com/ | CHANNEL=stable sh # (2)
apt install docker-compose-plugin # (3)
systemctl enable --now docker # (4)
- Make yourself root.
- Install
Docker
- Install
Docker-Compose
- Make docker run automatically when the server is booted.
Download and Deploy Mailcow
Run the following commands to pull down the mailcow deployment files and install them with docker. Go get a cup of coffee as the docker compose pull
command may take a while to run.
!!! note "Potential Docker Compose
Issues"
If you run the docker-compose pull
command and it fails for some reason, change the command to docker compose pull
instead. This is just the difference between the plugin version of compose versus the standalone version. Both will have the same result.
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
./generate_config.sh # (1)
docker-compose pull # (2)
docker-compose up -d
- Generate a configuration file. Use a FQDN (
host.domain.tld
) as hostname when asked. - If you get an error about the ports of the
nginx-mailcow
service in thedocker-compose.yml
stack, change the ports for that service as follows:ports: - "${HTTPS_BIND:-0.0.0.0}:${HTTPS_PORT:-443}:${HTTPS_PORT:-443}" - "${HTTP_BIND:-0.0.0.0}:${HTTP_PORT:-80}:${HTTP_PORT:-80}"
Reverse-Proxy Configuration
For the purposes of this document, it will be assumed that you are deploying Mailcow behind Traefik. You can use the following dynamic configuration file to achieve this:
tcp:
routers:
mailcow-smtp:
entryPoints:
- smtp
rule: "HostSNI(`mail.bunny-lab.io`)"
service: mailcow-smtp
tls:
passthrough: true
mailcow-smtps:
entryPoints:
- smtps
rule: "HostSNI(`mail.bunny-lab.io`)"
service: mailcow-smtps
tls:
passthrough: true
mailcow-submission:
entryPoints:
- submission
rule: "HostSNI(`mail.bunny-lab.io`)"
service: mailcow-submission
tls:
passthrough: true
mailcow-imaps:
entryPoints:
- imaps
rule: "HostSNI(`mail.bunny-lab.io`)"
service: mailcow-imaps
tls:
passthrough: true
mailcow-imap:
entryPoints:
- imap
rule: "HostSNI(`mail.bunny-lab.io`)"
service: mailcow-imap
tls:
passthrough: true
# Optional: POP3(s)
mailcow-pop3s:
entryPoints:
- pop3s
rule: "HostSNI(`mail.bunny-lab.io`)"
service: mailcow-pop3s
tls:
passthrough: true
services:
mailcow-smtp:
loadBalancer:
servers:
- address: "192.168.3.61:25"
mailcow-smtps:
loadBalancer:
servers:
- address: "192.168.3.61:465"
mailcow-submission:
loadBalancer:
servers:
- address: "192.168.3.61:587"
mailcow-imaps:
loadBalancer:
servers:
- address: "192.168.3.61:993"
mailcow-imap:
loadBalancer:
servers:
- address: "192.168.3.61:143"
mailcow-pop3s:
loadBalancer:
servers:
- address: "192.168.3.61:995"
Login to Mailcow
At this point, the Mailcow server has been deployed so you can log into it.
- Administrators:
https://${MAILCOW_HOSTNAME}/admin
(Username:admin
| Password:moohoo
) - Regular Mailbox Users:
https://${MAILCOW_HOSTNAME}
(FQDN only)