On Tuesday 20 October 2009 17:57:35 Andreas Ntaflos wrote:
On Tuesday 20 October 2009 17:07:49 Timo Sirainen wrote:
On Oct 20, 2009, at 9:45 AM, Andreas Ntaflos wrote:
I'd say you need a static userdb. Something like this:
A couple of small things:
passdb sql { args = /etc/dovecot/dovecot-sql.conf }
userdb static { args = uid=vmail gid=vmail home=/var/vmail/%Ld/%Ln allow_all_users=yes }
%Ld/%Ln at this point works for now, but maybe not in future. I'd have passdb already change it lowercase. Also allow_all_users=yes isn't required (but maybe not harmful) since passdb sql is used.
That's good to know, thanks. And you're right of course, the passdb should already return the correct information, Dovecot shouldn't be asked to change anything afterwards.
Fortunately I myself don't use MySQL anymore but have migrated everything to PostgreSQL. It does a much better job as a DBMS (remote, secured access to the DB, fine-grained permissions and rules) and also knows about case sensitivity. So foobar@example.com is not the same as FooBar@example.com. Which eliminates this problem class altogether.
password_query = SELECT password FROM view_users WHERE email='%u';
SELECT password, email AS user FROM ..
changes username to same case as it's in the database (so lowercase probably) and there's no need to use %L anymore.
You mean something like
SELECT password, LOWER(email) as user FROM view_users WHERE email='%u'
I probably misunderstood that.
SELECT password, email AS user FROM ...
is indeed enough to return the correct case, no need to use the LOWER function.
This whole case sensitivity thing is only a problem if the passdb query returns just the password and no username. Returning the username as well is the way to go.
Andreas
Andreas Ntaflos Vienna, Austria
GPG Fingerprint: 6234 2E8E 5C81 C6CB E5EC 7E65 397C E2A8 090C A9B4