On Tue, 20 Oct 2009 17:57:35 +0200 Andreas Ntaflos daff@dword.org 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.
MySQL, since at least 5.x knows about case. You can Google for the information if you want.
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'
should do the trick? I shall test this on my test server, just for fun.
Andreas
Jerry |::::======= gesbbb@yahoo.com |::::======= |=========== |=========== |
Woolsey-Swanson Rule:
People would rather live with a problem they cannot solve rather than accept a solution they cannot understand.