mailu: seventeen data directories are placed, not stated

Each resolves to <root>/mailu/<id> — the maildir at
/var/lib/mailu/data-mail, certs at data-certs, and so on. Landing this
is a window, not an edit: seventeen renames on the node (the nested
data/ tree flattens to the ids), then the full stack recreated, because
a changed volume path does not recreate a container by itself (hq 126).
Ids are untouched on purpose — a renamed id orphans its held record,
and the mail spool is the wrong place to learn what a removal step does
with one.
This commit is contained in:
2026-09-26 18:07:11 +02:00
parent 668278bde4
commit 8a046be198
+17 -34
View File
@@ -152,7 +152,6 @@
{
"id": "data-automx",
"type": "directory",
"path": "/var/lib/mailu/data/automx",
"mode": "0700"
},
{
@@ -186,97 +185,81 @@
{
"id": "data-certs",
"type": "directory",
"path": "/var/lib/mailu/data/certs",
"mode": "0700"
},
{
"id": "data-data",
"type": "directory",
"path": "/var/lib/mailu/data/data",
"mode": "0700"
},
{
"id": "data-dkim",
"type": "directory",
"path": "/var/lib/mailu/data/dkim",
"mode": "0700"
},
{
"id": "data-mail",
"type": "directory",
"path": "/var/lib/mailu/data/mail",
"mode": "0700"
},
{
"id": "data-mailqueue",
"type": "directory",
"path": "/var/lib/mailu/data/mailqueue",
"mode": "0755"
},
{
"id": "data-filter",
"type": "directory",
"path": "/var/lib/mailu/data/filter",
"mode": "0700"
},
{
"id": "data-clamav",
"type": "directory",
"path": "/var/lib/mailu/data/clamav",
"mode": "0700"
},
{
"id": "data-redis",
"type": "directory",
"path": "/var/lib/mailu/data/redis",
"mode": "0700"
},
{
"id": "data-webmail",
"type": "directory",
"path": "/var/lib/mailu/data/webmail",
"mode": "0700"
},
{
"id": "data-dav",
"type": "directory",
"path": "/var/lib/mailu/data/dav",
"mode": "0700"
},
{
"id": "data-fetchmail",
"type": "directory",
"path": "/var/lib/mailu/data/data/fetchmail",
"mode": "0700"
},
{
"id": "data-overrides-nginx",
"type": "directory",
"path": "/var/lib/mailu/data/overrides/nginx",
"mode": "0700"
},
{
"id": "data-overrides-dovecot",
"type": "directory",
"path": "/var/lib/mailu/data/overrides/dovecot",
"mode": "0700"
},
{
"id": "data-overrides-postfix",
"type": "directory",
"path": "/var/lib/mailu/data/overrides/postfix",
"mode": "0700"
},
{
"id": "data-overrides-rspamd",
"type": "directory",
"path": "/var/lib/mailu/data/overrides/rspamd",
"mode": "0700"
},
{
"id": "data-overrides-roundcube",
"type": "directory",
"path": "/var/lib/mailu/data/overrides/roundcube",
"mode": "0700"
},
{
@@ -304,7 +287,7 @@
"image": "redis@sha256:4bed291aa5efb9f0d77b76ff7d4ab71eee410962965d052552db1fb80576431d",
"network": "mailu",
"volumes": [
"/var/lib/mailu/data/redis:/data"
"${dir:data-redis}:/data"
]
},
{
@@ -320,8 +303,8 @@
"/var/lib/mailu/admin.env"
],
"volumes": [
"/var/lib/mailu/data/data:/data",
"/var/lib/mailu/data/dkim:/dkim"
"${dir:data-data}:/data",
"${dir:data-dkim}:/dkim"
],
"secrets-in-environment": "mailu-admin honours SECRET_KEY_FILE, DB_PW_FILE and API_TOKEN_FILE (configuration.py) but INITIAL_ADMIN_PW is env-only (start.py); the remaining containers' need for SECRET_KEY is unverified",
"dns": [
@@ -338,8 +321,8 @@
"/var/lib/mailu/mailu.env"
],
"volumes": [
"/var/lib/mailu/data/mail:/mail",
"/var/lib/mailu/data/overrides/dovecot:/overrides:ro"
"${dir:data-mail}:/mail",
"${dir:data-overrides-dovecot}:/overrides:ro"
],
"dns": [
"192.168.203.254"
@@ -355,8 +338,8 @@
"/var/lib/mailu/mailu.env"
],
"volumes": [
"/var/lib/mailu/data/mailqueue:/queue",
"/var/lib/mailu/data/overrides/postfix:/overrides:ro"
"${dir:data-mailqueue}:/queue",
"${dir:data-overrides-postfix}:/overrides:ro"
],
"dns": [
"192.168.203.254"
@@ -372,8 +355,8 @@
"/var/lib/mailu/mailu.env"
],
"volumes": [
"/var/lib/mailu/data/filter:/var/lib/rspamd",
"/var/lib/mailu/data/overrides/rspamd:/etc/rspamd/override.d:ro"
"${dir:data-filter}:/var/lib/rspamd",
"${dir:data-overrides-rspamd}:/etc/rspamd/override.d:ro"
],
"dns": [
"192.168.203.254"
@@ -386,7 +369,7 @@
"image": "clamav/clamav-debian@sha256:b12ef8fefddbba7d88de59bea8a32622f365339154adf02d38fd089112e6745a",
"network": "mailu",
"volumes": [
"/var/lib/mailu/data/clamav:/var/lib/clamav"
"${dir:data-clamav}:/var/lib/clamav"
],
"dns": [
"192.168.203.254"
@@ -403,8 +386,8 @@
"/var/lib/mailu/secret.env"
],
"volumes": [
"/var/lib/mailu/data/webmail:/data",
"/var/lib/mailu/data/overrides/roundcube:/overrides:ro"
"${dir:data-webmail}:/data",
"${dir:data-overrides-roundcube}:/overrides:ro"
],
"secrets-in-environment": "mailu-admin honours SECRET_KEY_FILE, DB_PW_FILE and API_TOKEN_FILE (configuration.py) but INITIAL_ADMIN_PW is env-only (start.py); the remaining containers' need for SECRET_KEY is unverified",
"dns": [
@@ -422,7 +405,7 @@
"/var/lib/mailu/secret.env"
],
"volumes": [
"/var/lib/mailu/data/dav:/data"
"${dir:data-dav}:/data"
],
"secrets-in-environment": "mailu-admin honours SECRET_KEY_FILE, DB_PW_FILE and API_TOKEN_FILE (configuration.py) but INITIAL_ADMIN_PW is env-only (start.py); the remaining containers' need for SECRET_KEY is unverified",
"dns": [
@@ -440,7 +423,7 @@
"/var/lib/mailu/secret.env"
],
"volumes": [
"/var/lib/mailu/data/data/fetchmail:/data"
"${dir:data-fetchmail}:/data"
],
"secrets-in-environment": "mailu-admin honours SECRET_KEY_FILE, DB_PW_FILE and API_TOKEN_FILE (configuration.py) but INITIAL_ADMIN_PW is env-only (start.py); the remaining containers' need for SECRET_KEY is unverified",
"dns": [
@@ -468,8 +451,8 @@
"7443:443"
],
"volumes": [
"/var/lib/mailu/data/certs:/certs",
"/var/lib/mailu/data/overrides/nginx:/overrides:ro"
"${dir:data-certs}:/certs",
"${dir:data-overrides-nginx}:/overrides:ro"
],
"dns": [
"192.168.203.254"
@@ -522,7 +505,7 @@
"4243"
],
"volumes": [
"/var/lib/mailu/data/automx:/data"
"${dir:data-automx}:/data"
]
}
],