|
@@ -128,52 +128,6 @@ 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 <<EOF > /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"
|
|
|
- end
|
|
|
-
|
|
|
- json = require "json"
|
|
|
- ltn12 = require "ltn12"
|
|
|
- https = require "ssl.https"
|
|
|
- https.TIMEOUT = 5
|
|
|
-
|
|
|
- local req = {
|
|
|
- username = request.user,
|
|
|
- password = password,
|
|
|
- real_rip = request.real_rip,
|
|
|
- protocol = {}
|
|
|
- }
|
|
|
- req.protocol[request.service] = true
|
|
|
- local req_json = json.encode(req)
|
|
|
- local res = {}
|
|
|
-
|
|
|
- local b, c = https.request {
|
|
|
- method = "POST",
|
|
|
- url = "https://nginx:9082",
|
|
|
- source = ltn12.source.string(req_json),
|
|
|
- headers = {
|
|
|
- ["content-type"] = "application/json",
|
|
|
- ["content-length"] = tostring(#req_json)
|
|
|
- },
|
|
|
- sink = ltn12.sink.table(res),
|
|
|
- insecure = true
|
|
|
- }
|
|
|
- local api_response = json.decode(table.concat(res))
|
|
|
- if api_response.success == true then
|
|
|
- return dovecot.auth.PASSDB_RESULT_OK, ""
|
|
|
- end
|
|
|
-
|
|
|
- return dovecot.auth.PASSDB_RESULT_PASSWORD_MISMATCH, "Failed to authenticate"
|
|
|
-end
|
|
|
-
|
|
|
-function auth_passdb_lookup(req)
|
|
|
- return dovecot.auth.PASSDB_RESULT_USER_UNKNOWN, ""
|
|
|
-end
|
|
|
-EOF
|
|
|
-
|
|
|
-
|
|
|
# Migrate old sieve_after file
|
|
|
[[ -f /etc/dovecot/sieve_after ]] && mv /etc/dovecot/sieve_after /etc/dovecot/global_sieve_after
|
|
|
# Create global sieve scripts
|