From 694e122ce0e3e43a4adb82a3eb72ac6a96167d9b Mon Sep 17 00:00:00 2001 From: FreddleSpl0it Date: Tue, 16 May 2023 09:56:23 +0200 Subject: [PATCH] [Dovecot] group auth files --- data/Dockerfiles/dovecot/docker-entrypoint.sh | 24 +++++++++---------- data/conf/dovecot/auth/mailcowauth.php | 2 +- data/conf/dovecot/dovecot.conf | 4 ++-- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/data/Dockerfiles/dovecot/docker-entrypoint.sh b/data/Dockerfiles/dovecot/docker-entrypoint.sh index e2ccff35..ab827ed8 100755 --- a/data/Dockerfiles/dovecot/docker-entrypoint.sh +++ b/data/Dockerfiles/dovecot/docker-entrypoint.sh @@ -28,7 +28,7 @@ ${REDIS_CMDLINE} SET DOVECOT_REPL_HEALTH 1 > /dev/null # Create missing directories [[ ! -d /etc/dovecot/sql/ ]] && mkdir -p /etc/dovecot/sql/ -[[ ! -d /etc/dovecot/lua/ ]] && mkdir -p /etc/dovecot/lua/ +[[ ! -d /etc/dovecot/auth/ ]] && mkdir -p /etc/dovecot/auth/ [[ ! -d /var/vmail/_garbage ]] && mkdir -p /var/vmail/_garbage [[ ! -d /var/vmail/sieve ]] && mkdir -p /var/vmail/sieve [[ ! -d /etc/sogo ]] && mkdir -p /etc/sogo @@ -128,7 +128,7 @@ user_query = SELECT CONCAT(JSON_UNQUOTE(JSON_VALUE(attributes, '$.mailbox_format iterate_query = SELECT username FROM mailbox WHERE active = '1' OR active = '2'; EOF -cat < /etc/dovecot/lua/passwd-verify.lua +cat < /etc/dovecot/auth/passwd-verify.lua function auth_password_verify(request, password) if request.domain == nil then return dovecot.auth.PASSDB_RESULT_USER_UNKNOWN, "No such user" @@ -173,10 +173,10 @@ function auth_password_verify(request, password) -- check against app passwds for imap and smtp -- app passwords are only available for imap, smtp, sieve and pop3 when using sasl if request.service == "smtp" or request.service == "imap" or request.service == "sieve" or request.service == "pop3" then - skip_sasl_log = true + skip_sasl_log = false req.protocol = {} if tostring(req.real_rip) ~= "__IPV4_SOGO__" then - skip_sasl_log = false + skip_sasl_log = true req.protocol[request.service] = true end req_json = json.encode(req) @@ -194,7 +194,7 @@ function auth_password_verify(request, password) } local api_response = json.decode(table.concat(res)) if api_response.role == 'user' then - if skip_sasl_log == true then + if skip_sasl_log == false then con:execute(string.format([[REPLACE INTO sasl_log (service, app_password, username, real_rip) VALUES ("%s", %d, "%s", "%s")]], con:escape(req.service), row.id, con:escape(req.user), con:escape(req.real_rip))) end @@ -213,10 +213,10 @@ end EOF # Replace patterns in app-passdb.lua -sed -i "s/__DBUSER__/${DBUSER}/g" /etc/dovecot/lua/passwd-verify.lua -sed -i "s/__DBPASS__/${DBPASS}/g" /etc/dovecot/lua/passwd-verify.lua -sed -i "s/__DBNAME__/${DBNAME}/g" /etc/dovecot/lua/passwd-verify.lua -sed -i "s/__IPV4_SOGO__/${IPV4_NETWORK}.248/g" /etc/dovecot/lua/passwd-verify.lua +sed -i "s/__DBUSER__/${DBUSER}/g" /etc/dovecot/auth/passwd-verify.lua +sed -i "s/__DBPASS__/${DBPASS}/g" /etc/dovecot/auth/passwd-verify.lua +sed -i "s/__DBNAME__/${DBNAME}/g" /etc/dovecot/auth/passwd-verify.lua +sed -i "s/__IPV4_SOGO__/${IPV4_NETWORK}.248/g" /etc/dovecot/auth/passwd-verify.lua # Migrate old sieve_after file @@ -333,8 +333,8 @@ done # Fix permissions chown root:root /etc/dovecot/sql/*.conf -chown root:dovecot /etc/dovecot/sql/dovecot-dict-sql-sieve* /etc/dovecot/sql/dovecot-dict-sql-quota* /etc/dovecot/lua/passwd-verify.lua -chmod 640 /etc/dovecot/sql/*.conf /etc/dovecot/lua/passwd-verify.lua +chown root:dovecot /etc/dovecot/sql/dovecot-dict-sql-sieve* /etc/dovecot/sql/dovecot-dict-sql-quota* /etc/dovecot/auth/passwd-verify.lua +chmod 640 /etc/dovecot/sql/*.conf /etc/dovecot/auth/passwd-verify.lua chown -R vmail:vmail /var/vmail/sieve chown -R vmail:vmail /var/volatile chown -R vmail:vmail /var/vmail_index @@ -403,6 +403,6 @@ done # For some strange, unknown and stupid reason, Dovecot may run into a race condition, when this file is not touched before it is read by dovecot/auth # May be related to something inside Docker, I seriously don't know -touch /etc/dovecot/lua/passwd-verify.lua +touch /etc/dovecot/auth/passwd-verify.lua exec "$@" diff --git a/data/conf/dovecot/auth/mailcowauth.php b/data/conf/dovecot/auth/mailcowauth.php index 57dffdb5..fa505d70 100644 --- a/data/conf/dovecot/auth/mailcowauth.php +++ b/data/conf/dovecot/auth/mailcowauth.php @@ -42,7 +42,7 @@ require_once 'functions.inc.php'; require_once 'functions.auth.inc.php'; require_once 'sessions.inc.php'; -// Init Keycloak Provider +// Init provider $iam_provider = identity_provider('init'); $result = check_login($post['username'], $post['password'], $post['protocol'], true); diff --git a/data/conf/dovecot/dovecot.conf b/data/conf/dovecot/dovecot.conf index b7aca757..93e79112 100644 --- a/data/conf/dovecot/dovecot.conf +++ b/data/conf/dovecot/dovecot.conf @@ -47,7 +47,7 @@ mail_shared_explicit_inbox = yes mail_prefetch_count = 30 passdb { driver = lua - args = file=/etc/dovecot/lua/passwd-verify.lua blocking=yes + args = file=/etc/dovecot/auth/passwd-verify.lua blocking=yes result_success = return-ok result_failure = continue result_internalfail = continue @@ -63,7 +63,7 @@ passdb { # a return of the following passdb is mandatory passdb { driver = lua - args = file=/etc/dovecot/lua/passwd-verify.lua blocking=yes + args = file=/etc/dovecot/auth/passwd-verify.lua blocking=yes } # Set doveadm_password=your-secret-password in data/conf/dovecot/extra.conf (create if missing) service doveadm {