Nils Vogels wrote:
Bazy wrote on 28-8-2007 23:05:
plugin { # 10 MB + 1000 messages quota limit # quota = maildir:storage=10240:messages=1000
driver = mysql connect = host=/var/lib/mysql/mysql.sock user=mail_admin
password=XXXXXXXX dbname=mail user_query = SELECT CONCAT(('/home/vmail/'), SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/'), CONCAT('5000'), CONCAT('5000'), CONCAT('maildir:storage=', quota) FROM users AS quota WHERE email = '%u'; }
The querry output looks like this:
+----------------------------------------------------------------------------------------------+----------------+----------------+-----------------------------------+ | CONCAT(('/home/vmail/'), SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') | CONCAT('5000') | CONCAT('5000') | CONCAT('maildir:storage=', quota) | +----------------------------------------------------------------------------------------------+----------------+----------------+-----------------------------------+ | /home/vmail/goofy.celuloza.ro/bazy/ | 5000 | 5000 | maildir:storage=102400000 | +----------------------------------------------------------------------------------------------+----------------+----------------+-----------------------------------+
I'm not the expert on the matter, but I think your columns are named wrong. Try changing the latter part of the user_query to 'CONCAT('maildir:storage=', quote) AS quota FROM users WHERE email = '%u';
As an example, I've posted my userdb query:
user_query = SELECT concat('/mail/', maildir) as home, concat('maildir:/mail/', maildir) as mail, 108 AS uid, 116 AS gid, concat('maildir:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
Hope this helps!
Nils.
Thank you Nils,
It's working now. I had some configuration options wrong in my mind, I didn't understand them...
It looks like this now:
auth default { mechanisms = plain login cram-md5 digest-md5
passdb sql {
args = /etc/dovecot-sql.conf
}
# userdb static { # args = uid=5000 gid=5000 home=/home/vmail/%d/%n # }
userdb sql {
args = /etc/dovecot-userdb-sql.conf
}
As you can see, i had a userdb static, now I'm querying mysql for it :) and with your help I fixed my query.
It looks like this now:
SELECT CONCAT(('/home/vmail/'), SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') as home, 5000 as uid, 5000 as gid, CONCAT('maildir:storage=', floor(quota/1024)) as quota FROM users WHERE email = '%u';
Thank you!