public
nobgit
read
NobMail
Based on mailcow: dockerized
Languages
Repository composition by tracked source files.
PHP
49%
JavaScript
35%
HTML
9%
CSS
4%
Shell
2%
Python
1%
Lua
0%
Perl
0%
Ruby
0%
SCSS
0%
Create file
Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git
Commit
[Dovecot] Allow to define static master user (not recommended)
5f8e13f5
data/Dockerfiles/dovecot/docker-entrypoint.sh | 4 ++++
docker-compose.yml | 4 +++-
generate_config.sh | 8 ++++++++
update.sh | 17 +++++++++++++++++
4 files changed, 32 insertions(+), 1 deletion(-)
Diff
diff --git a/data/Dockerfiles/dovecot/docker-entrypoint.sh b/data/Dockerfiles/dovecot/docker-entrypoint.sh
index 419038c3..e16f95df 100755
--- a/data/Dockerfiles/dovecot/docker-entrypoint.sh
+++ b/data/Dockerfiles/dovecot/docker-entrypoint.sh
@@ -219,6 +219,10 @@ done
RAND_USER=$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 16 | head -n 1)
RAND_PASS=$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 24 | head -n 1)
+if [[ ! -z ${DOVECOT_MASTER_USER} ]] && [[ ! -z ${DOVECOT_MASTER_PASS} ]]; then
+ RAND_USER=${DOVECOT_MASTER_USER}
+ RAND_PASS=${DOVECOT_MASTER_PASS}
+fi
echo ${RAND_USER}@mailcow.local:{SHA1}$(echo -n ${RAND_PASS} | sha1sum | awk '{print $1}'):::::: > /etc/dovecot/dovecot-master.passwd
echo ${RAND_USER}@mailcow.local::5000:5000:::: > /etc/dovecot/dovecot-master.userdb
echo ${RAND_USER}@mailcow.local:${RAND_PASS} > /etc/sogo/sieve.creds
diff --git a/docker-compose.yml b/docker-compose.yml
index b42bcc70..c47c437d 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -192,7 +192,7 @@ services:
- sogo
dovecot-mailcow:
- image: mailcow/dovecot:1.133
+ image: mailcow/dovecot:1.134
depends_on:
- mysql-mailcow
dns:
@@ -213,6 +213,8 @@ services:
- rspamd-vol-1:/var/lib/rspamd:z
- mysql-socket-vol-1:/var/run/mysqld/:z
environment:
+ - DOVECOT_MASTER_USER=${DOVECOT_MASTER_USER:-}
+ - DOVECOT_MASTER_PASS=${DOVECOT_MASTER_PASS:-}
- LOG_LINES=${LOG_LINES:-9999}
- DBNAME=${DBNAME}
- DBUSER=${DBUSER}
diff --git a/generate_config.sh b/generate_config.sh
index 2dd159b0..e4d23f7a 100755
--- a/generate_config.sh
+++ b/generate_config.sh
@@ -303,6 +303,14 @@ MAILDIR_SUB=Maildir
# SOGo session timeout in minutes
SOGO_EXPIRE_SESSION=480
+# DOVECOT_MASTER_USER and DOVECOT_MASTER_PASS must both be provided. No special chars.
+# Empty by default to auto-generate master user and password on start.
+# User expands to [email protected]
+# LEAVE EMPTY IF UNSURE
+DOVECOT_MASTER_USER=
+# LEAVE EMPTY IF UNSURE
+DOVECOT_MASTER_PASS=
+
EOF
mkdir -p data/assets/ssl
diff --git a/update.sh b/update.sh
index 4622801a..3fc107c6 100755
--- a/update.sh
+++ b/update.sh
@@ -215,6 +215,8 @@ CONFIG_ARRAY=(
"SKIP_HTTP_VERIFICATION"
"SOGO_EXPIRE_SESSION"
"REDIS_PORT"
+ "DOVECOT_MASTER_USER"
+ "DOVECOT_MASTER_PASS"
)
sed -i --follow-symlinks '$a\' mailcow.conf
@@ -373,6 +375,21 @@ for option in ${CONFIG_ARRAY[@]}; do
echo "Adding new option \"${option}\" to mailcow.conf"
echo "REDIS_PORT=127.0.0.1:7654" >> mailcow.conf
fi
+ elif [[ ${option} == "DOVECOT_MASTER_USER" ]]; then
+ if ! grep -q ${option} mailcow.conf; then
+ echo "Adding new option \"${option}\" to mailcow.conf"
+ echo '# DOVECOT_MASTER_USER and DOVECOT_MASTER_PASS must _both_ be provided. No special chars.' >> mailcow.conf
+ echo '# Empty by default to auto-generate master user and password on start.' >> mailcow.conf
+ echo '# User expands to [email protected]' >> mailcow.conf
+ echo '# LEAVE EMPTY IF UNSURE' >> mailcow.conf
+ echo "DOVECOT_MASTER_USER=" >> mailcow.conf
+ fi
+ elif [[ ${option} == "DOVECOT_MASTER_PASS" ]]; then
+ if ! grep -q ${option} mailcow.conf; then
+ echo "Adding new option \"${option}\" to mailcow.conf"
+ echo '# LEAVE EMPTY IF UNSURE' >> mailcow.conf
+ echo "DOVECOT_MASTER_PASS=" >> mailcow.conf
+ fi
elif ! grep -q ${option} mailcow.conf; then
echo "Adding new option \"${option}\" to mailcow.conf"
echo "${option}=n" >> mailcow.conf