Awesome
mailcow: dockerized - Ansible role 🐮 + 🐋 = 💕
This role will setup a mailcow dockerized email server.
Prerequisites
- Up and running Ubuntu/Debian host (other distributions not supported/tested for now)
- Docker Compose v2 is required!
Requirements
Requirements | Description |
---|---|
docker ce | Docker has to be installed on the host |
docker-compose | docker-compose is needed |
Notes
This role will use by default the inventory_hostname
as mailcow hostname, this means that you have to use the full qualified domain name as your inventory hostname e.g. mail.mailcow.tld
or you set mailcow__hostname
to the correct FQDN.
Variables
name | purpose | default value | note |
---|---|---|---|
mailcow__hostname | sets MAILCOW_HOSTNAME | inventory_hostname | needs to be an full qualified domain name |
mailcow__install_path | sets the path where the mailcow-dockerized repo will be cloned | /opt/mailcow-dockerized | |
mailcow__git_version | checkout a specific version of mailcow | master | |
mailcow__timezone | used to set the timezone your mailcow runs in during the config generation | not set | must be set |
mailcow__docker_compose_project_name | sets the docker-compose projectname to a user-defined string | mailcowdockerized | |
mailcow__theme | set the default mailcow theme in vars.local.inc.php | lumen | |
mailcow__config_http_port | sets HTTP_PORT in mailcow.conf | 80 | |
mailcow__config_http_bind | sets HTTP_BIND in mailcow.conf | none | |
mailcow__config_https_port | sets HTTPS_PORT in mailcow.conf | 443 | |
mailcow__config_https_bind | sets HTTPS_BIND in mailcow.conf | none | |
mailcow__config_acl_anyone | sets ACL_ANYONE | disallow | |
mailcow__config_maildir_gc_time | sets MAILDIR_GC_TIME in mailcow.conf | 1440 | |
mailcow__config_additional_san | sets ADDITIONAL_SAN in mailcow.conf | needs to be a list | |
mailcow__config_additional_server_names | sets ADDITIONAL_SERVER_NAMES in mailcow.conf | needs to be a list | |
mailcow__config_skip_lets_encrypt | sets SKIP_LETS_ENCRYPT in mailcow.conf | ||
mailcow__config_enable_ssl_sni | sets ENABLE_SSL_SNI in mailcow.conf | ||
mailcow__config_skip_ip_check | sets SKIP_IP_CHECK in mailcow.conf | ||
mailcow__config_skip_http_verification | sets SKIP_HTTP_VERIFICATION in mailcow.conf | n | |
mailcow__config_skip_clamd | sets SKIP_CLAMD in mailcow.conf | n | |
mailcow__config_skip_solr | sets SKIP_SOLR in mailcow.conf | n | |
mailcow__config_solr_heap | sets SOLR_HEAP in mailcow.conf | 1024 | |
mailcow__config_skip_sogo | sets SKIP_SOGO in mailcow.conf | n | |
mailcow__config_allow_admin_email_login | sets ALLOW_ADMIN_EMAIL_LOGIN in mailcow.conf | n | |
mailcow__config_use_watchdog | sets USE_WATCHDOG in mailcow.conf | n | |
mailcow__config_watchdog_notify_email | sets WATCHDOG_NOTIFY_EMAIL in mailcow.conf | ||
mailcow__config_watchdog_notify_ban | sets WATCHDOG_NOTIFY_BAN in mailcow.conf | y | |
mailcow__config_watchdog_subject | sets WATCHDOG_SUBJECT in mailcow.conf | Watchdog ALERT | |
mailcow__config_log_lines | sets LOG_LINES in mailcow.conf | 9999 | |
mailcow__config_sogo_expire_session | sets SOGO_EXPIRE_SESSION in mailcow.conf | 480 | |
mailcow__install_updates | if yes the mailcow ansible role will also update an existing installation | yes | |
mailcow__redirect_http_to_https | if yes , all requests via HTTP will be redirected to HTTPS | no | also see https://mailcow.github.io/mailcow-dockerized-docs/u_e-80_to_443/ |
mailcow__config_acme_contact | sets ACME_CONTACT in mailcow.conf | ||
mailcow__rspamd_clamd_servers | configures the clamd server used by rspamd | clamd:3310 | |
mailcow__compose_command | configures the command that is used for compose | docker compose | set to docker-compose for the standalone version of compose |
Usage
Minimal playbook:
---
- name: Install Python3
hosts: all
become: true
gather_facts: false
roles:
- { role: raw,0.0, vars: {command: 'apt-get install -y python3 python3-pip'} }
- name: Main Playbook
hosts: all
become: true
gather_facts: true
vars:
mailcow__timezone: Europe/Berlin
roles:
- Ansible-Roles.docker-ce
- Ansible-Roles.docker-compose
- Ansible-Roles.mailcow