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] return PASSDB_RESULT_PASSWORD_MISMATCH instead of PASSDB_RESULT_INTERNAL_FAILURE
401b7448
data/conf/dovecot/auth/passwd-verify.lua | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
Diff
diff --git a/data/conf/dovecot/auth/passwd-verify.lua b/data/conf/dovecot/auth/passwd-verify.lua
index b8843c99..ea847932 100644
--- a/data/conf/dovecot/auth/passwd-verify.lua
+++ b/data/conf/dovecot/auth/passwd-verify.lua
@@ -29,9 +29,12 @@ function auth_password_verify(request, password)
insecure = true
}
+ -- Returning PASSDB_RESULT_PASSWORD_MISMATCH will reset the user's auth cache entry.
+ -- Returning PASSDB_RESULT_INTERNAL_FAILURE keeps the existing cache entry,
+ -- even if the TTL has expired. Useful to avoid cache eviction during backend issues.
if c ~= 200 and c ~= 401 then
dovecot.i_info("HTTP request failed with " .. c .. " for user " .. request.user)
- return dovecot.auth.PASSDB_RESULT_INTERNAL_FAILURE, "Upstream error"
+ return dovecot.auth.PASSDB_RESULT_PASSWORD_MISMATCH, "Upstream error"
end
local response_str = table.concat(res)
@@ -39,7 +42,7 @@ function auth_password_verify(request, password)
if not is_response_valid then
dovecot.i_info("Invalid JSON received: " .. response_str)
- return dovecot.auth.PASSDB_RESULT_INTERNAL_FAILURE, "Invalid response format"
+ return dovecot.auth.PASSDB_RESULT_PASSWORD_MISMATCH, "Invalid response format"
end
if response_json.success == true then