Hi

I'm finally getting round to taking up Aki's suggestion here to look into lua. The original requirement was to check the ip reputation giving an OK or KO before proceeding to the login. I'd be interested in any feedback on the dovecot.conf settings and lua script. Also I've encountered a strange caching issue.

https://dovecot.org/mailman3/archives/list/[email protected]/thread/E5FLX3FBYWALWF4UBG7JIHJU3VK4YJL2/

To do this I've added a new passdb before the existing sql passdb. I am assuming that I will need to reverse the defaults (in 2.3.21.1) for result_success and result_failure.

passdb {
        driver = lua
        args = file=/etc/dovecot/passdb.lua blocking=yes
        result_success = continue
        result_failure = return-fail
}

This is my lua test script.

function auth_passdb_lookup(req)
    dovecot.i_info("login request from " .. req.remote_ip .. " user=" .. req.user)
    if (req.user == "[email protected]") then
        dovecot.i_info("deny login")
        return dovecot.auth.PASSDB_RESULT_USER_UNKNOWN, ""
    end
    return dovecot.auth.PASSDB_RESULT_NEXT, ""
end

I am trying to get this working with this very simple logic before developing the real logic. But basically I am considering two responses from the lua script, one which is OK (returning dovecot.auth.PASSDB_RESULT_NEXT) in which case the next passdb should be consulted for the real password lookup. The other case is a KO (returning dovecot.auth.PASSDB_RESULT_USER_UNKNOWN) where this should be taken as an immediate failure without proceeding to password lookup in the next passd.I have passdb caching disabled.

While testing the KO case which seems to be working, if I modify the script changing the [email protected] so it no longer matches, the script still outputs "deny login".  It's not a passdb caching issue since it is going through the "deny login" code despite the user not matching. Could it be that lua scripts are being cached by dovecot?

John


_______________________________________________
dovecot mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to