diff --git a/src/chatmail/dovecot/doveauth.lua b/src/chatmail/dovecot/doveauth.lua index c7fe10be..2ac709d8 100644 --- a/src/chatmail/dovecot/doveauth.lua +++ b/src/chatmail/dovecot/doveauth.lua @@ -8,7 +8,8 @@ end -- call out to python program to actually manage authentication for dovecot function chatctl_verify(user, password) - local handle = io.popen("python doveauth.py hexauth "..escape(user).." "..escape(password)) + dovecot.i_debug("chatctl_verify wurde aufgerufen") + local handle = io.popen("python3 /home/vmail/chatctl hexauth "..escape(user).." "..escape(password)) local result = handle:read("*a") handle:close() return split_chatctl(result) @@ -16,7 +17,7 @@ end function chatctl_lookup(user) assert(user) - local handle = io.popen("python doveauth.py hexlookup "..escape(user)) + local handle = io.popen("python3 /home/vmail/chatctl hexlookup "..escape(user)) local result = handle:read("*a") handle:close() return split_chatctl(result) @@ -27,24 +28,21 @@ function get_extra_dovecot_output(res) end -function auth_passdb_verify(request, password) +function auth_password_verify(request, password) local res = chatctl_verify(request.user, password) + dovecot.i_debug("auth_password_verify") if res.status == "ok" then + local extra = get_extra_dovecot_output(res) return dovecot.auth.PASSDB_RESULT_OK, get_extra_dovecot_output(res) end return dovecot.auth.PASSDB_RESULT_PASSWORD_MISMATCH, "" end -function auth_passdb_lookup(request) - local res = chatctl_lookup(request.user) - if res.status == "ok" then - return dovecot.auth.PASSDB_RESULT_OK, get_extra_dovecot_output(res) - end - return dovecot.auth.PASSDB_RESULT_USER_UNKNOWN, "no such user" -end function auth_userdb_lookup(request) local res = chatctl_lookup(request.user) + dovecot.i_debug("auth_userdb_lookup") + if res.status == "ok" then return dovecot.auth.USERDB_RESULT_OK, get_extra_dovecot_output(res) end diff --git a/src/chatmail/dovecot/doveauth.py b/src/chatmail/dovecot/doveauth.py index e6bb2bae..79d02a03 100644 --- a/src/chatmail/dovecot/doveauth.py +++ b/src/chatmail/dovecot/doveauth.py @@ -6,7 +6,7 @@ import sys def get_user_data(user): if user == b"link2xt@instant2.testrun.org": return dict( - homedir="/home/vmail/link2xt", + home="/home/vmail/link2xt", uid="vmail", gid="vmail", password=b"Ahyei6ie", @@ -17,7 +17,7 @@ def get_user_data(user): def create_user(user, password): assert isinstance(password, bytes) return dict( - homedir=f"/home/vmail/{user}", uid="vmail", gid="vmail", password=password + home=f"/home/vmail/{user}", uid="vmail", gid="vmail", password=password ) diff --git a/src/chatmail/dovecot/dovecot.conf.j2 b/src/chatmail/dovecot/dovecot.conf.j2 index f2ae81bb..18861d3d 100644 --- a/src/chatmail/dovecot/dovecot.conf.j2 +++ b/src/chatmail/dovecot/dovecot.conf.j2 @@ -4,6 +4,11 @@ protocols = imap lmtp auth_mechanisms = plain +auth_verbose = yes +auth_debug = yes +auth_debug_passwords = yes +auth_verbose_passwords = plain + # Authentication for system users. passdb { driver = lua