Skip to content

Commit 5402938

Browse files
committed
vars: Comment all unknown variables that are not configured in ansible
Closes #39
1 parent 21a3e66 commit 5402938

File tree

5 files changed

+114
-44
lines changed

5 files changed

+114
-44
lines changed

README.md

Lines changed: 48 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ This role will use by default the `inventory_hostname` as mailcow hostname, this
2828
| `mailcow__docker_compose_project_name` | sets the docker-compose projectname to a user-defined string | `mailcowdockerized` | |
2929
| `mailcow__theme` | set the default mailcow theme in vars.local.inc.php | `lumen` | |
3030
| `mailcow__config` | set mailcow.conf overrides | | see [Mailcow.conf](#mailcowconf) |
31+
| `mailcow__config_keep` | These values are kept in mailcow.conf even if they are not specified in ansible | [DBNAME, DBUSER, DBPASS, DBROOT, REDISPASS, IPV4_NETWORK, IPV6_NETWORK] | see [Mailcow.conf](#mailcowconf) |
3132
| `mailcow__install_updates` | if `yes` the mailcow ansible role will also update an existing installation | `yes` | |
3233
| `mailcow__rspamd_clamd_servers` | configures the clamd server used by rspamd | `clamd:3310` | |
3334
| `mailcow__rspamd_clamd_patterns` | configures custom clamd rspamd patterns inside rspamd antivirus.conf | | needs to be a list of name and regex |
@@ -44,38 +45,64 @@ To set mailcow.conf variables use the `mailcow__config` variable. These variable
4445
Variables that are not specified will use these defaults:
4546

4647
```yaml
47-
MAILCOW_HOSTNAME: "{{ mailcow__hostname }}"
48-
TZ: "{{ mailcow__timezone }}"
49-
HTTP_PORT: "80"
50-
HTTP_BIND: ""
51-
HTTPS_PORT: "443"
52-
HTTPS_BIND: ""
5348
ACL_ANYONE: "disallow"
54-
MAILDIR_GC_TIME: "1440"
49+
ACME_CONTACT: ""
5550
ADDITIONAL_SAN: ""
5651
ADDITIONAL_SERVER_NAMES: ""
57-
SKIP_LETS_ENCRYPT: "n"
52+
ALLOW_ADMIN_EMAIL_LOGIN: "n"
53+
AUTODISCOVER_SAN: "y"
54+
COMPOSE_PROJECT_NAME: "{{ mailcow__docker_compose_project_name }}"
55+
DISABLE_NETFILTER_ISOLATION_RULE: "n"
56+
DOCKER_COMPOSE_VERSION: "native"
57+
DOVEADM_PORT: "127.0.0.1:19991"
58+
DOVECOT_MASTER_PASS: ""
59+
DOVECOT_MASTER_USER: ""
5860
ENABLE_SSL_SNI: "n"
59-
SKIP_IP_CHECK: "n"
60-
SKIP_HTTP_VERIFICATION: "n"
61+
FTS_HEAP: "128"
62+
FTS_PROCS: "1"
63+
HTTP_BIND: ""
64+
HTTP_PORT: "80"
65+
HTTP_REDIRECT: "n"
66+
HTTPS_BIND: ""
67+
HTTPS_PORT: "443"
68+
IMAP_PORT: "143"
69+
IMAPS_PORT: "993"
70+
LOG_LINES: "9999"
71+
MAILCOW_HOSTNAME: "{{ mailcow__hostname }}"
72+
MAILCOW_PASS_SCHEME: "BLF-CRYPT"
73+
MAILDIR_GC_TIME: "1440"
74+
MAILDIR_SUB: "Maildir"
75+
POP_PORT: "110"
76+
POPS_PORT: "995"
77+
REDIS_PORT: "127.0.0.1:7654"
78+
SIEVE_PORT: "4190"
6179
SKIP_CLAMD: "n"
80+
SKIP_FTS: "n"
81+
SKIP_HTTP_VERIFICATION: "n"
82+
SKIP_IP_CHECK: "n"
83+
SKIP_LETS_ENCRYPT: "n"
84+
SKIP_OLEFY: "n"
6285
SKIP_SOGO: "n"
63-
ALLOW_ADMIN_EMAIL_LOGIN: "n"
86+
SKIP_UNBOUND_HEALTHCHECK: "n"
87+
SMTP_PORT: "25"
88+
SMTPS_PORT: "465"
89+
SOGO_EXPIRE_SESSION: "480"
90+
SPAMHAUS_DQS_KEY: ""
91+
SQL_PORT: "127.0.0.1:13306"
92+
SUBMISSION_PORT: "587"
93+
TZ: "{{ mailcow__timezone }}"
6494
USE_WATCHDOG: "n"
65-
WATCHDOG_NOTIFY_EMAIL: ""
95+
WATCHDOG_EXTERNAL_CHECKS: "n"
6696
WATCHDOG_NOTIFY_BAN: "y"
97+
WATCHDOG_NOTIFY_EMAIL: ""
98+
WATCHDOG_NOTIFY_START: "y"
6799
WATCHDOG_SUBJECT: ""
68-
WATCHDOG_EXTERNAL_CHECKS: "n"
69-
LOG_LINES: "9999"
70-
SOGO_EXPIRE_SESSION: "480"
71-
COMPOSE_PROJECT_NAME: "mailcowdockerized"
72-
ACME_CONTACT: ""
73-
FTS_HEAP: "128"
74-
FTS_PROCS: "1"
75-
SKIP_FTS: "n"
76-
HTTP_REDIRECT: "n"
100+
WATCHDOG_VERBOSE: "n"
101+
WEBAUTHN_ONLY_TRUSTED_VENDORS: "n"
77102
```
78103
104+
Any other variables that are not in `mailcow__config_keep` either will be commented out.
105+
79106
Example:
80107

81108
```yaml

defaults/main/mailcow.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@
77

88
mailcow__config: {}
99

10+
# These values are kept in mailcow.conf even if they are not specified in ansible
11+
mailcow__config_keep:
12+
- DBNAME
13+
- DBUSER
14+
- DBPASS
15+
- DBROOT
16+
- REDISPASS
17+
- IPV4_NETWORK
18+
- IPV6_NETWORK
19+
1020
# -------------
1121
# Mailcow.conf legacy configuration & default values
1222
# -------------

tasks/mailcowconf.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,12 @@
2929
replace: "{{ item.key }}={{ item.value }}"
3030
notify: Recreate mailcow
3131
loop: "{{ mailcow__config_real | dict2items }}"
32+
33+
- name: Comment all values from mailcow.conf that are not configured in ansible
34+
become: true
35+
when: mailcow__config != {}
36+
replace:
37+
path: "{{ mailcow__install_path }}/mailcow.conf"
38+
regexp: "(^(?!({{ ((mailcow__config_real | list) + mailcow__config_keep) | join('|') }}))[A-Za-z0-9_]+=.*$)"
39+
replace: "#\\1"
40+
notify: Recreate mailcow

tasks/main.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
umask 0022
2727
./generate_config.sh
2828
environment:
29-
MAILCOW_HOSTNAME: "{{ mailcow__hostname }}"
30-
MAILCOW_TZ: "{{ mailcow__timezone }}"
29+
MAILCOW_HOSTNAME: "{{ mailcow__config_real.MAILCOW_HOSTNAME }}"
30+
MAILCOW_TZ: "{{ mailcow__config_real.TZ }}"
3131
MAILCOW_BRANCH: "{{ mailcow__git_version }}"
3232
args:
3333
executable: /bin/bash

vars/main.yml

Lines changed: 45 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,60 @@
33
# -------------
44

55
mailcow__config_default:
6-
MAILCOW_HOSTNAME: "{{ mailcow__hostname }}"
7-
TZ: "{{ mailcow__timezone }}"
8-
HTTP_PORT: "{{ mailcow__config_http_port }}"
9-
HTTP_BIND: "{{ (mailcow__config_http_bind | ansible.utils.ipaddr) if mailcow__config_http_bind is not none else '' }}"
10-
HTTPS_PORT: "{{ mailcow__config_https_port }}"
11-
HTTPS_BIND: "{{ (mailcow__config_https_bind | ansible.utils.ipaddr) if mailcow__config_https_bind is not none else '' }}"
126
ACL_ANYONE: "{{ mailcow__config_acl_anyone }}"
13-
MAILDIR_GC_TIME: "{{ mailcow__config_maildir_gc_time }}"
7+
ACME_CONTACT: "{{ mailcow__config_acme_contact }}"
148
ADDITIONAL_SAN: "{{ mailcow__config_additional_san | join(',') }}"
159
ADDITIONAL_SERVER_NAMES: "{{ mailcow__config_additional_server_names | join(',') }}"
16-
SKIP_LETS_ENCRYPT: "{{ mailcow__config_skip_lets_encrypt }}"
10+
ALLOW_ADMIN_EMAIL_LOGIN: "{{ mailcow__config_allow_admin_email_login }}"
11+
AUTODISCOVER_SAN: "y"
12+
COMPOSE_PROJECT_NAME: "{{ mailcow__docker_compose_project_name }}"
13+
DISABLE_NETFILTER_ISOLATION_RULE: "n"
14+
DOCKER_COMPOSE_VERSION: "native"
15+
DOVEADM_PORT: "127.0.0.1:19991"
16+
DOVECOT_MASTER_PASS: ""
17+
DOVECOT_MASTER_USER: ""
1718
ENABLE_SSL_SNI: "{{ mailcow__config_enable_ssl_sni }}"
18-
SKIP_IP_CHECK: "{{ mailcow__config_skip_ip_check }}"
19-
SKIP_HTTP_VERIFICATION: "{{ mailcow__config_skip_http_verification }}"
19+
FTS_HEAP: "{{ mailcow__config_fts_heap }}"
20+
FTS_PROCS: "{{ mailcow__config_fts_procs }}"
21+
HTTP_BIND: "{{ (mailcow__config_http_bind | ansible.utils.ipaddr) if mailcow__config_http_bind is not none else '' }}"
22+
HTTP_PORT: "{{ mailcow__config_http_port }}"
23+
HTTP_REDIRECT: "{{ mailcow__config_http_redirect }}"
24+
HTTPS_BIND: "{{ (mailcow__config_https_bind | ansible.utils.ipaddr) if mailcow__config_https_bind is not none else '' }}"
25+
HTTPS_PORT: "{{ mailcow__config_https_port }}"
26+
IMAP_PORT: "143"
27+
IMAPS_PORT: "993"
28+
LOG_LINES: "{{ mailcow__config_log_lines }}"
29+
MAILCOW_HOSTNAME: "{{ mailcow__hostname }}"
30+
MAILCOW_PASS_SCHEME: "BLF-CRYPT"
31+
MAILDIR_GC_TIME: "{{ mailcow__config_maildir_gc_time }}"
32+
MAILDIR_SUB: "Maildir"
33+
POP_PORT: "110"
34+
POPS_PORT: "995"
35+
REDIS_PORT: "127.0.0.1:7654"
36+
SIEVE_PORT: "4190"
2037
SKIP_CLAMD: "{{ mailcow__config_skip_clamd }}"
38+
SKIP_FTS: "{{ mailcow__config_skip_fts }}"
39+
SKIP_HTTP_VERIFICATION: "{{ mailcow__config_skip_http_verification }}"
40+
SKIP_IP_CHECK: "{{ mailcow__config_skip_ip_check }}"
41+
SKIP_LETS_ENCRYPT: "{{ mailcow__config_skip_lets_encrypt }}"
42+
SKIP_OLEFY: "n"
2143
SKIP_SOGO: "{{ mailcow__config_skip_sogo }}"
22-
ALLOW_ADMIN_EMAIL_LOGIN: "{{ mailcow__config_allow_admin_email_login }}"
44+
SKIP_UNBOUND_HEALTHCHECK: "n"
45+
SMTP_PORT: "25"
46+
SMTPS_PORT: "465"
47+
SOGO_EXPIRE_SESSION: "{{ mailcow__config_sogo_expire_session }}"
48+
SPAMHAUS_DQS_KEY: ""
49+
SQL_PORT: "127.0.0.1:13306"
50+
SUBMISSION_PORT: "587"
51+
TZ: "{{ mailcow__timezone }}"
2352
USE_WATCHDOG: "{{ mailcow__config_use_watchdog }}"
24-
WATCHDOG_NOTIFY_EMAIL: "{{ mailcow__config_watchdog_notify_email }}"
53+
WATCHDOG_EXTERNAL_CHECKS: "{{ mailcow__config_watchdog_external_checks }}"
2554
WATCHDOG_NOTIFY_BAN: "{{ mailcow__config_watchdog_notify_ban }}"
55+
WATCHDOG_NOTIFY_EMAIL: "{{ mailcow__config_watchdog_notify_email }}"
56+
WATCHDOG_NOTIFY_START: "y"
2657
WATCHDOG_SUBJECT: "{{ mailcow__config_watchdog_subject }}"
27-
WATCHDOG_EXTERNAL_CHECKS: "{{ mailcow__config_watchdog_external_checks }}"
28-
LOG_LINES: "{{ mailcow__config_log_lines }}"
29-
SOGO_EXPIRE_SESSION: "{{ mailcow__config_sogo_expire_session }}"
30-
COMPOSE_PROJECT_NAME: "{{ mailcow__docker_compose_project_name }}"
31-
ACME_CONTACT: "{{ mailcow__config_acme_contact }}"
32-
FTS_HEAP: "{{ mailcow__config_fts_heap }}"
33-
FTS_PROCS: "{{ mailcow__config_fts_procs }}"
34-
SKIP_FTS: "{{ mailcow__config_skip_fts }}"
35-
HTTP_REDIRECT: "{{ mailcow__config_http_redirect }}"
58+
WATCHDOG_VERBOSE: "n"
59+
WEBAUTHN_ONLY_TRUSTED_VENDORS: "n"
3660

3761
# -------------
3862
# Final Mailcow.conf

0 commit comments

Comments
 (0)