Storing my users and quota in MySQL,running Dovecot 1.2.16, and followed the page at http://wiki1.dovecot.org/Quota/Dict I'm burning my eyes trying to find any syntax issues but can't. I'm including output of dovecot -n and the quota2 table schema below.
dovecot.conf:
dict { quotadict = mysql:/usr/local/etc/postfix/dovecot-dict-sql.conf } plugin { quota = dict:emailaccount::proxy::quotadict quota_warning95 = storage=95%% /usr/local/bin/dovecot-quota-warning.sh 95 quota_warning90 = storage=90%% /usr/local/bin/dovecot-quota-warning.sh 90 quota_warning80 = storage=80%% /usr/local/bin/dovecot-quota-warning.sh 80 }
/usr/local/etc/postfix/dovecot-dict-sql.conf:
# v1.2+ only: connect = host=/tmp/mysql.sock dbname=postfix user=postfix password=**** map { pattern = priv/quota/storage table = quota2 username_field = username value_field = bytes } map { pattern = priv/quota/messages table = quota2 username_field = username value_field = messages }
A log of 90% being passed:
# vuserinfo darek@domain.com
Email: darek@domain.com Name: Darek Maildir: domain.com/darek/ Created: 2011-04-11 18:08:05 Modified: 2011-04-25 17:30:26
Quota: 25,000K (24.41M) Used: 21,380.29K (20.88M) Usage: 85.52%
Apr 26 11:57:53 deliver(darek@domain.com): Info: Loading modules from directory: /usr/local/lib/dovecot/lda Apr 26 11:57:53 deliver(darek@domain.com): Info: Module loaded: /usr/local/lib/dovecot/lda/lib10_quota_plugin.so Apr 26 11:57:53 deliver(darek@domain.com): Info: Module loaded: /usr/local/lib/dovecot/lda/lib90_sieve_plugin.so Apr 26 11:57:53 deliver(darek@domain.com): Info: auth input: home=/home/vmail/domain.com/darek/ Apr 26 11:57:53 deliver(darek@domain.com): Info: auth input: mail=maildir:/home/vmail/domain.com/darek/ Apr 26 11:57:53 deliver(darek@domain.com): Info: auth input: uid=5000 Apr 26 11:57:53 deliver(darek@domain.com): Info: auth input: gid=5000 Apr 26 11:57:53 deliver(darek@domain.com): Info: auth input: quota_rule=*:bytes=25600000 Apr 26 11:57:53 deliver(darek@domain.com): Info: Quota root: name=emailaccount backend=dict args=:proxy::quotadict Apr 26 11:57:53 deliver(darek@domain.com): Info: Quota rule: root=emailaccount mailbox=* bytes=25600000 messages=0 Apr 26 11:57:53 deliver(darek@domain.com): Info: dict quota: user=darek@domain.com, uri=proxy::quotadict, noenforcing=0 Apr 26 11:57:53 deliver(darek@domain.com): Info: maildir: data=/home/vmail/domain.com/darek/ Apr 26 11:57:53 deliver(darek@domain.com): Info: maildir++: root=/home/vmail/domain.com/darek, index=, control=, inbox=/home/vmail/domain.com/darek Apr 26 11:57:53 deliver(darek@domain.com): Info: dict quota: user=darek@domain.com, uri=proxy::quotadict, noenforcing=0 Apr 26 11:57:53 deliver(darek@domain.com): Info: sieve: user's script path /home/vmail/domain.com/darek/sieve/darek@domain.com.sieve doesn't exist (using global script path in stead) Apr 26 11:57:53 deliver(darek@domain.com): Info: sieve: user has no valid personal script Apr 26 11:57:53 deliver(darek@domain.com): Info: sieve: no scripts to execute: reverting to default delivery. Apr 26 11:57:53 deliver(darek@domain.com): Info: Namespace : Using permissions from /home/vmail/domain.com/darek: mode=0700 gid=-1 Apr 26 11:57:53 dict: Info: mysql: Connected to /tmp/mysql.sock (postfix) Apr 26 11:57:53 deliver(darek@domain.com): Info: msgid=<4DB6EB69.5010501@server.net>: saved mail to INBOX
# vuserinfo darek@domain.com
Email: darek@domain.com Name: Darek Maildir: domain.com/darek/ Created: 2011-04-11 18:08:05 Modified: 2011-04-25 17:30:26
Quota: 25,000K (24.41M) Used: 23,000.09K (22.46M) Usage: 92.00%
Output of 'dovecot -n':
# 1.2.16: /usr/local/etc/dovecot.conf # OS: FreeBSD 8.2-RELEASE i386 ufs log_path: /var/log/dovecot/dovecot-err.log info_log_path: /var/log/dovecot/dovecot-info.log protocols: imap imaps pop3 pop3s managesieve listen: , [::] ssl_cert_file: /etc/ssl/dovecot/certs/dovecot.pem ssl_key_file: /etc/ssl/dovecot/private/dovecot.pem disable_plaintext_auth: no nfs_check: no version_ignore: yes login_dir: /var/run/dovecot/login login_executable(default): /usr/local/libexec/dovecot/imap-login login_executable(imap): /usr/local/libexec/dovecot/imap-login login_executable(pop3): /usr/local/libexec/dovecot/pop3-login login_executable(managesieve): /usr/local/libexec/dovecot/managesieve-login login_process_per_connection: no login_processes_count: 10 first_valid_uid: 5000 last_valid_uid: 5000 first_valid_gid: 5000 last_valid_gid: 5000 mail_uid: 5000 mail_gid: 5000 mail_location: maildir:/home/vmail/%d/%n mail_debug: yes mail_nfs_storage: yes lock_method: dotlock maildir_very_dirty_syncs: yes mail_executable(default): /usr/local/libexec/dovecot/imap mail_executable(imap): /usr/local/libexec/dovecot/imap mail_executable(pop3): /usr/local/libexec/dovecot/pop3 mail_executable(managesieve): /usr/local/libexec/dovecot/managesieve mail_plugins(default): quota imap_quota mail_plugins(imap): quota imap_quota mail_plugins(pop3): quota mail_plugins(managesieve): mail_plugin_dir(default): /usr/local/lib/dovecot/imap mail_plugin_dir(imap): /usr/local/lib/dovecot/imap mail_plugin_dir(pop3): /usr/local/lib/dovecot/pop3 mail_plugin_dir(managesieve): /usr/local/lib/dovecot/managesieve lda: postmaster_address: supportteam@domain.net hostname: inbox4.domain.net mail_plugins: quota sieve sendmail_path: /usr/sbin/sendmail auth default: mechanisms: plain login apop user: nobody username_translation: %@ passdb: driver: sql args: /usr/local/etc/postfix/dovecot.sql userdb: driver: sql args: /usr/local/etc/postfix/dovecot.sql socket: type: listen client: path: /var/spool/postfix/private/auth mode: 432 user: postfix group: vmail master: path: /var/run/dovecot/auth-master mode: 384 user: vmail group: vmail plugin: quota: dict:emailaccount::proxy::quotadict quota_warning95: storage=95%% /usr/local/bin/dovecot-quota-warning.sh 95 quota_warning90: storage=90%% /usr/local/bin/dovecot-quota-warning.sh 90 quota_warning80: storage=80%% /usr/local/bin/dovecot-quota-warning.sh 80 sieve: /home/vmail/%d/%n/sieve/%n@%d.sieve sieve_dir: /home/vmail/%d/%n/sieve/ dict: quotadict: mysql:/usr/local/etc/postfix/dovecot-dict-sql.conf
Database schema:
# mysql -u root postfix
mysql> describe quota2; +----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ | username | varchar(100) | NO | PRI | NULL | | | bytes | bigint(20) | NO | | 0 | | | messages | int(11) | NO | | 0 | | +----------+--------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)
mysql> select * from quota2 where username='darek@domain.com'; +------------------+----------+----------+ | username | bytes | messages | +------------------+----------+----------+ | darek@domain.com | 23552090 | 7 | +------------------+----------+----------+
-- Darek