diff --git a/core/admin/mailu/internal/nginx.py b/core/admin/mailu/internal/nginx.py index b7e246af..2ee6d9b3 100644 --- a/core/admin/mailu/internal/nginx.py +++ b/core/admin/mailu/internal/nginx.py @@ -94,11 +94,11 @@ def handle_authentication(headers): else: try: user = models.User.query.get(user_email) if '@' in user_email else None - is_valid_user = user is not None except sqlalchemy.exc.StatementError as exc: exc = str(exc).split('\n', 1)[0] app.logger.warn(f'Invalid user {user_email!r}: {exc}') else: + is_valid_user = user is not None ip = urllib.parse.unquote(headers["Client-Ip"]) if check_credentials(user, password, ip, protocol, headers["Auth-Port"]): server, port = get_server(headers["Auth-Protocol"], True) diff --git a/core/admin/mailu/internal/views/auth.py b/core/admin/mailu/internal/views/auth.py index ab259864..426c0c49 100644 --- a/core/admin/mailu/internal/views/auth.py +++ b/core/admin/mailu/internal/views/auth.py @@ -32,7 +32,7 @@ def nginx_authentication(): for key, value in headers.items(): response.headers[key] = str(value) is_valid_user = False - if response.headers.get("Auth-User-Exists"): + if response.headers.get("Auth-User-Exists") == "True": username = response.headers["Auth-User"] if utils.limiter.should_rate_limit_user(username, client_ip): # FIXME could be done before handle_authentication() diff --git a/towncrier/newsfragments/2284.bugfix b/towncrier/newsfragments/2284.bugfix new file mode 100644 index 00000000..d264db89 --- /dev/null +++ b/towncrier/newsfragments/2284.bugfix @@ -0,0 +1 @@ +Fixed AUTH_RATELIMIT_IP not working on imap/pop3/smtp. \ No newline at end of file