Problem! Dovecot 2.2.9 does not send the information on ending the quota to user
Serge Spinoza
fedonin at gmail.com
Fri Dec 18 07:03:00 UTC 2015
Hi.
I have Dovecot + Postfix + MySQL.
Version of Postix: postfix_2.11.3-1ubuntu1_amd64
Version of Dovecot: 2.2.9
Operations system is: Ubuntu 15.04 x64
Postfix have patched (patch VDA - http://vda.sourceforge.net) for using
with quota, it means that file "maildirsize" in mail directory already
exists and changed when add/delete mail.
Quota for virtual box take in MySQL db.
##########################
Problem:
Dovecot does not send the information on ending the quota to user.
##########################
# dovecot -n
# 2.2.9: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-042stab112.15 x86_64 Ubuntu 15.04 ext4
auth_debug = yes
auth_default_realm = mydomain.ru
auth_mechanisms = plain login
auth_realms = znak-corp.ru
debug_log_path = /var/log/dovecot-debug.log
info_log_path = /var/log/dovecot.log
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
log_path = /var/log/dovecot.log
login_greeting = Welcome to OOO "Corporation ZNAK"
mail_gid = 1000
mail_location = maildir:/var/vmail/%n@%d
mail_plugins = " quota"
mail_uid = 1000
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 ihave
passdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
plugin {
autocreate = INBOX
autosubscribe = INBOX
quota = maildir:User quota
quota_rule = *:storage=10M #(this derective takes from mysql, but i wrote
it just in case)
quota_warning = storage=90%% quota-warning 90 %u
quota_warning2 = storage=80%% quota-warning 80 %u
}
protocols = pop3 imap
quota_full_tempfail = yes
service auth {
unix_listener /var/spool/postfix/private/dovecot-smtp-auth {
group = postfix
mode = 0666
user = postfix
}
unix_listener auth-userdb {
group = vmail
mode = 0600
user = vmail
}
}
service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
port = 993
ssl = yes
}
}
service pop3-login {
inet_listener pop3 {
port = 110
}
inet_listener pop3s {
port = 995
ssl = yes
}
}
service quota-status {
client_limit = 1
executable = /usr/lib/dovecot/quota-status -p postfix
inet_listener {
port = 12340
}
}
service quota-warning {
executable = script /usr/local/bin/quota-warning.sh
unix_listener quota-warning {
user = vmail
}
user = vmail
}
ssl_cert = </etc/ssl/mydomain.ru.crt
ssl_key = </etc/ssl/mydomain.ru.key
userdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
protocol imap {
mail_plugins = " quota imap_quota autocreate"
}
protocol pop3 {
mail_plugins = quota
}
protocol lda {
mail_plugins = " quota autocreate"
}
#####
quota-warning.sh
#####
#!/bin/sh
PERCENT=$1
USER=$2
cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o
"plugin/quota=maildir:User quota:noenforcing"
From: aaa at mydomain.ru
Subject: Quota warning $PERCENT%
Your mailbox is now $PERCENT% full.
Please remove unnecessary emails to avoid new mail loosing.
EOF
#####
Script has chmod 777
#####
root at mx:~# ls -la /usr/local/bin/quota-warning.sh
-rwxrwxrwx 1 vmail vmail 285 Dec 17 11:09 /usr/local/bin/quota-warning.sh
Check the script this command is successful:
# /usr/local/bin/quota-warning.sh 82 rrr at mydomain.ru
(a letter is sent to rrr at mydomain.ru that box is filled to 82%)
#####
dovecot-sql.conf.ext
#####
driver = mysql
connect = host=localhost dbname=postfix user=postfix password=xxxxxxx
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/var/vmail/%n@%d' as home, 'maildir:/var/vmail/%n@%d'as
mail, 1000 AS uid, 1000 AS gid, concat('*:bytes=', quota) AS quota_rule
FROM mailbox WHERE username = '%u' AND active = '1'
password_query = SELECT username as user, password, '/var/vmail/%n@%d' as
userdb_home, 'maildir:/var/vmail/%n@%d' as userdb_mail, 1000 as userdb_uid,
1000 as userdb_gid, concat('*:bytes=', quota) AS userdb_quota_rule FROM
mailbox WHERE username = '%u' AND active = '1'
#####
Check that the socket has a quota-warning:
# lsof |grep quota-warning
dovecot 17277 root 57u unix 0xffff8802d7845b80
0t0 62354154 /var/run/dovecot/quota-warning
#####
Verify that the plugin quota is running I doing like this:
# doveadm -D -v quota get -u rrr at mydomain.ru
Conclusion:
doveadm(root): Debug: Loading modules from directory:
/usr/lib/dovecot/modules
doveadm(root): Debug: Module loaded:
/usr/lib/dovecot/modules/lib10_quota_plugin.so
doveadm(root): Debug: Loading modules from directory:
/usr/lib/dovecot/modules/doveadm
doveadm(root): Debug: Skipping module doveadm_acl_plugin, because dlopen()
failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_acl_plugin.so:
undefined symbol: acl_user_module (this is usually intentional, so just
ignore this message)
doveadm(root): Debug: Skipping module doveadm_expire_plugin, because
dlopen() failed:
/usr/lib/dovecot/modules/doveadm/lib10_doveadm_expire_plugin.so: undefined
symbol: expire_set_deinit (this is usually intentional, so just ignore this
message)
doveadm(root): Debug: Module loaded:
/usr/lib/dovecot/modules/doveadm/lib10_doveadm_quota_plugin.so
doveadm(root): Debug: Module loaded:
/usr/lib/dovecot/modules/doveadm/lib10_doveadm_sieve_plugin.so
doveadm(root): Debug: Skipping module doveadm_fts_plugin, because dlopen()
failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_plugin.so:
undefined symbol: fts_backend_rescan (this is usually intentional, so just
ignore this message)
doveadm(rrr at mydomain.ru): Debug: Added userdb setting:
mail=maildir:/var/vmail/rrr at mydomain.ru
doveadm(rrr at mydomain.ru): Debug: Added userdb setting:
plugin/quota_rule=*:bytes=10240000
doveadm(rrr at mydomain.ru): Debug: Effective uid=1000, gid=1000,
home=/var/vmail/rrr at mydomain.ru
doveadm(rrr at mydomain.ru): Debug: Quota root: name=User quota
backend=maildir args=
doveadm(rrr at mydomain.ru): Debug: Quota rule: root=User quota mailbox=*
bytes=10240000 messages=0
doveadm(rrr at mydomain.ru): Debug: Quota rule: root=User quota mailbox=Trash
bytes=+104857600 messages=0
doveadm(rrr at mydomain.ru): Debug: Quota rule: root=User quota mailbox=SPAM
ignored
doveadm(rrr at mydomain.ru): Debug: Quota warning: bytes=9216000 (90%)
messages=0 reverse=no command=quota-warning 90 rrr at mydomain.ru
doveadm(rrr at mydomain.ru): Debug: Quota warning: bytes=8192000 (80%)
messages=0 reverse=no command=quota-warning 80 rrr at mydomain.ru
doveadm(rrr at mydomain.ru): Debug: Quota grace: root=User quota bytes=1024000
(10%)
doveadm(rrr at mydomain.ru): Debug: maildir++: root=/var/vmail/rrr at mydomain.ru,
index=, indexpvt=, control=, inbox=/var/vmail/rrr at mydomain.ru, alt=
Quota name Type Value Limit
%
User quota STORAGE 9008 10000
90
User quota MESSAGE 6 -
0
#####
Those plugin is successfully loaded and checked. When removing/receiving
emails percent of employment, respectively changes.
I read in dovecot manual, that the notification send only when the quota
border crossing - then I tested like this: Clears the box up to 60% and
then send letters, which occupy about 5% more of allocated quota. And so
the lead up to 95%. But reports of ending the quota not be sent.
In what may be another problem?
Thanks.
------------------
Serge
More information about the dovecot
mailing list