[Dovecot] Dovecot 2.0, mysql and quota
Claudio Prono
claudio.prono at atpss.net
Wed Jun 29 19:02:44 EEST 2011
Hello all,
I have some troubles to make the quota_check working with dovecot 2.0.
My config is the following: postfix, dovecot as lda, mysql as virtual
mailuser backend, and postfixadmin for the mailuser administration.
Previously i have a working setup with dovecot 1.x, now with the 2.0
something is wrong about the quota, but i don't know what...
Here is my config:
# 2.0.13: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.37.6-0.5-desktop x86_64 openSUSE 11.4 (x86_64) ext3
auth_mechanisms = plain login
first_valid_gid = 51
first_valid_uid = 51
info_log_path = /var/log/dovecot-inf.log
last_valid_gid = 51
last_valid_uid = 51
log_path = /var/log/dovecot-err.log
mail_home = /var/mail/virtual/%d/%u/
mail_location = maildir:/var/mail/virtual/%d/%u
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope
encoded-character vacation subaddress comparator-i;ascii-numeric
relational regex imap4flags copy include variables body enotify
environment mailbox date
namespace {
hidden = no
inbox = yes
list = yes
location =
prefix = INBOX.
subscriptions = yes
type = private
}
passdb {
args = /etc/dovecot/dovecot-mysql.conf
driver = sql
}
plugin {
quota = maildir:User quota
quota_warning = storage=80%% /usr/bin/quota_warning.sh 80
quota_warning2 = storage=90%% /usr/bin/quota_warning.sh 90
quota_warning3 = storage=99%% /usr/bin/quota_warning.sh 90
sieve = /var/mail/virtual/%d/%u/.dovecot.sieve
sieve_storage = /var/mail/virtual/%d/%u/sieve
}
protocols = imap pop3 sieve
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
unix_listener auth-master {
mode = 0600
}
unix_listener auth-userdb {
group = nobody
mode = 0660
user = postfix
}
}
service imap-login {
inet_listener imap {
address = 127.0.0.1
port = 143
}
}
service managesieve-login {
executable = /usr/lib/dovecot/managesieve-login
}
service managesieve {
executable = /usr/lib/dovecot/managesieve
}
service quota-warning {
executable = script /usr/bin/quota_warning.sh
user = postfix
}
ssl = no
userdb {
driver = passwd
}
userdb {
args = /etc/dovecot/dovecot-mysql.conf
driver = sql
}
protocol imap {
imap_client_workarounds =
mail_plugins = quota imap_quota
}
protocol sieve {
managesieve_max_line_length = 65536
plugin {
sieve = /var/mail/virtual/%d/%u/.dovecot.sieve
sieve_storage = /var/mail/virtual/%d/%u/sieve
}
}
protocol pop3 {
mail_plugins = quota
pop3_uidl_format = UID%u-%v
}
protocol lda {
auth_socket_path = /var/run/dovecot/auth-master
log_path = /var/log/dovecot-lda.log
mail_debug = yes
mail_plugins = quota sieve
postmaster_address = postmaster at mediaservice.net
}
My user query for mysql is the following:
user_query = SELECT maildir, 51 AS uid, 51 AS gid, CONCAT('*:bytes=',
mailbox.quota ) AS quota_rule FROM mailbox WHERE username = '%u' AND
active = '1'
I have made some test, with a test mailbox, with the quota setted to 1
Mb, in fact the maildirsize file contains:
1024000S
When i write a mail, something strange is happening: with the debug mail
of dovecot active i see this:
Jun 29 17:42:19 lda: Debug: Loading modules from directory:
/usr/lib64/dovecot/modules
Jun 29 17:42:19 lda: Debug: Module loaded:
/usr/lib64/dovecot/modules/lib10_quota_plugin.so
Jun 29 17:42:19 lda: Debug: Module loaded:
/usr/lib64/dovecot/modules/lib90_sieve_plugin.so
Jun 29 17:42:19 auth: Info: mysql(127.0.0.1): Connected to database postfix
Jun 29 17:42:19 lda: Debug: auth input: testquota at mediaservice.pri
maildir=mediaservice.pri/testquota/ uid=51 gid=51 quota_rule=*:bytes=1024000
Jun 29 17:42:19 lda: Debug: Added userdb setting:
plugin/maildir=mediaservice.pri/testquota/
Jun 29 17:42:19 lda: Debug: Added userdb setting:
plugin/quota_rule=*:bytes=1024000
Jun 29 17:42:19 lda(testquota at mediaservice.pri): Debug: Effective
uid=51, gid=51,
home=/var/mail/virtual/mediaservice.pri/testquota at mediaservice.pri/
Jun 29 17:42:19 lda(testquota at mediaservice.pri): Debug: Quota root:
name=User quota backend=maildir args=
Jun 29 17:42:19 lda(testquota at mediaservice.pri): Debug: Quota rule:
root=User quota mailbox=* bytes=1024000 messages=0
Jun 29 17:42:19 lda(testquota at mediaservice.pri): Debug: Quota warning:
bytes=819200 (80%) messages=0 reverse=no
command=/usr/bin/quota_warning.sh 80
Jun 29 17:42:19 lda(testquota at mediaservice.pri): Debug: Quota warning:
bytes=921600 (90%) messages=0 reverse=no
command=/usr/bin/quota_warning.sh 90
Jun 29 17:42:19 lda(testquota at mediaservice.pri): Debug: Quota warning:
bytes=1013760 (99%) messages=0 reverse=no
command=/usr/bin/quota_warning.sh 90
Jun 29 17:42:19 lda(testquota at mediaservice.pri): Debug: Namespace :
type=private, prefix=INBOX., sep=, inbox=yes, hidden=no, list=yes,
subscriptions=yes
location=maildir:/var/mail/virtual/mediaservice.pri/testquota at mediaservice.pri
Jun 29 17:42:19 lda(testquota at mediaservice.pri): Debug: maildir++:
root=/var/mail/virtual/mediaservice.pri/testquota at mediaservice.pri,
index=, control=,
inbox=/var/mail/virtual/mediaservice.pri/testquota at mediaservice.pri
Jun 29 17:42:19 lda(testquota at mediaservice.pri): Debug: Quota root:
name=User quota backend=maildir args=
Jun 29 17:42:19 lda(testquota at mediaservice.pri): Debug: Quota warning:
bytes=0 (80%) messages=0 reverse=no command=/usr/bin/quota_warning.sh 80
Jun 29 17:42:19 lda(testquota at mediaservice.pri): Debug: Quota warning:
bytes=0 (90%) messages=0 reverse=no command=/usr/bin/quota_warning.sh 90
Jun 29 17:42:19 lda(testquota at mediaservice.pri): Debug: Quota warning:
bytes=0 (99%) messages=0 reverse=no command=/usr/bin/quota_warning.sh 90
Jun 29 17:42:19 lda(testquota at mediaservice.pri): Debug: none: root=,
index=, control=, inbox=
Jun 29 17:42:19 lda(testquota at mediaservice.pri): Debug: Destination
address: testquota at mediaservice.pri (source: user at hostname)
Jun 29 17:42:19 lda(testquota at mediaservice.pri): Debug: sieve: user's
script path
/var/mail/virtual/mediaservice.pri/testquota at mediaservice.pri/.dovecot.sieve
doesn't exist (using global script path in stead)
Jun 29 17:42:19 lda(testquota at mediaservice.pri): Debug: sieve: user has
no valid personal script
Jun 29 17:42:19 lda(testquota at mediaservice.pri): Debug: sieve: no
scripts to execute: reverting to default delivery.
Jun 29 17:42:19 lda(testquota at mediaservice.pri): Info:
msgid=<4E0B47DA.9030607 at atpss.net>: saved mail to INBOX
First question: why i see two times the quota warning check?
Anyway, if the 80% or 90% of the quota is fullfilled, no warning pops
out....
I have also checked the query it does to mysql, is the following
SELECT maildir, 51 AS uid, 51 AS gid, CONCAT('*:bytes=', mailbox.quota
) AS quota_rule FROM mailbox WHERE username =
'testquota at mediaservice.pri' AND active = '1'
And the result, is the following:
+-----------------------------+-----+-----+-----------------+
| maildir | uid | gid | quota_rule |
+-----------------------------+-----+-----+-----------------+
| mediaservice.pri/testquota/ | 51 | 51 | *:bytes=1024000 |
+-----------------------------+-----+-----+-----------------+
Seems right to me...but it is not working.... why?
Ah, this is the content of the quota_warning.sh:
#!/bin/sh
PERCENT=$1
USER=$2
cat << EOF | /usr/local/libexec/dovecot/dovecot-lda -d $USER -o
"plugin/quota=maildir:User quota:noenforcing"
From: postmaster at mediaservice.pri
Subject: quota warning
Your mailbox is now $PERCENT% full.
EOF
Any hint about what is not working?
Thanks,
Claudio Prono.
--
--------------------------------------------------------------------------------
Claudio Prono OPST
System Developer
Gsm: +39-349-54.33.258
@PSS Srl Tel: +39-011-32.72.100
Via San Bernardino, 17 Fax: +39-011-32.46.497
10141 Torino - ITALY http://atpss.net/disclaimer
--------------------------------------------------------------------------------
PGP Key - http://keys.atpss.net/c_prono.asc
More information about the dovecot
mailing list