We're dealing with an unusual situation involving dovecot
that perhaps requires an unusual solution.
We recently required all of our POP/IMAP users to change their passwords, and in almost all cases, they dutifully did so. However, one user has several devices and machines which are repeatedly querying for email, and due to circumstances beyond anyone's control, one of his computers cannot be accessed for at least another few weeks, and therefore, the dovecot
password for that user's email access cannot not be changed until that time passes.
Therefore, that computer keeps querying dovecot
for email for that user with the old, now invalid password, and those queries fail.
Furthermore, due to various circumstances which are also beyond our control for the time being, we can't have that one user change his password back to the old value on the other machines and devices that he uses.
What we're wondering is whether there is some way that dovecot
could be set up to recognize and accept both passwords for this one, specific user. In other words, can we somehow set up a secondary password for this email address so that both the old and the new password will allow this user to access his email?
We are using auth sql
by including auth-sql.conf.ext
in 10-auth.conf
. Perhaps the solution to this problem would to restructure the database we are using for SQL authentication and add one or more columns, and then somehow change the SELECT statement that is used in auth-sql.conf.ext
to choose between one of two passwords.
We are willing to attempt this procedure if it's the only option available, but we aren't even sure how it can be done. And in any case, we're hoping that there might be some feature of dovecot
that we are unfamilar with which would allow us to set up this one user's dovecot
email account to allow two different passwords for authentication without any database changes.
Is there any chance that we could do this?
Thank you in advance.
The link supplied by Allan Wind helped me (thank you!), as well as a couple other things I saw in those dovecot
docs which I had overlooked in the past.
It turns out that I can supply a second userdb
and passdb
block in auth-sql.conf.ext
, and they serve as secondary fallbacks if the primary SQL query doesn't return a match. I set up a passwd-file
that is usable by both of these which contains the hash of the user's old password, and now, both passwords are working.
For example, the secondary userdb
block (which should appear right below the original sql-based userdb
block) looks like this:
# Fallback ...
userdb {
driver = passwd-file
args = scheme=md5-crypt username_format=%u /etc/dovecot/extra.userdb
}
The secondary passdb
block is identical, except for it being named passdb
instead of userdb
. It must appear right after the original passdb
statement in that same file.
So, all's well that ends well.
Onward!