Hi! Can you provide dovecot version? Also output of mail_debug=yes logs would be useful
Aki On 19.09.2018 00:19, Ted wrote: > Hello, > > I'm trying to implement quota enforcement in our mailservers, and it is > all working properly except that the quota warnings are not firing when > the quota levels are passed. the server stops accepting email when the > quota is reached, and you can see tyhe quota usage through the email > client connected through, but as the quota passes the set levels the > /usr/local/bin/quota-warning.sh script is not called. I checked from > the appropriate user and the script executes from the command line with > no problem, but dovecot does not invoke it when the quota levels are > crossed. The relevant configs are below, any ideas about what the > problem may be or how I should approach this? > > /etc/dovecot/dovecot.conf > > ## Dovecot configuration file > > > # Protocols we want to be serving. > protocols = imap pop3 lmtp sieve > > mailbox_list_index = yes > # Avoid spending excessive time waiting for the quota calculation to > finish when > # mails' vsizes aren't already cached. If this many mails are opened, > finish the > # quota calculation on background in indexer-worker process. Mail > deliveries will > # be assumed to succeed, and explicit quota lookups will return internal > error. > # (v2.2.28+) > # mail_vsize_bg_after_count = 100 > > plugin { > quota_grace = 10%% > # 10% is the default > # quota_status_success = DUNNO > # quota_status_nouser = DUNNO > quota_status_overquota = "552 5.2.2 Mailbox is full" > quota_vsizes = yes > } > > service quota-status { > executable = quota-status -p postfix > inet_listener { > port = 10070 > # You can choose any port you want > } > client_limit = 1 > } > > mail_plugins = $mail_plugins quota mail_log notify > > protocol imap { > # Space separated list of plugins to load (default is global > mail_plugins). > mail_plugins = $mail_plugins imap_quota > } > > > # Greeting message for clients. > login_greeting = Welcome to easyMail. > > > # Show more verbose process titles (in ps). Currently shows user name and > # IP address. Useful for seeing who are actually using the IMAP processes > # (eg. shared mailboxes or if same uid is used for multiple accounts). > verbose_proctitle = yes > > # Should all processes be killed when Dovecot master process shuts down. > # Setting this to "no" means that Dovecot can be upgraded without > # forcing existing client connections to close (although that could also be > # a problem if the upgrade is e.g. because of a security fix). > shutdown_clients = yes > > # A config file can also tried to be included without giving an error if > # it's not found: > !include_try local.conf > > service auth { > unix_listener auth-master { > mode = 0600 > user = vmail > } > } > > > /etc/dovecot/dovecot-sql.conf.ext > > # Database driver: mysql, pgsql, sqlite > driver = mysql > > connect = host=redacted dbname=redacted user=redacted > password=reallyredacted > > # Default password scheme. > # > # List of supported schemes is in > # http://wiki2.dovecot.org/Authentication/PasswordSchemes > # > default_pass_scheme = CRYPT > > password_query = select email as user, crypt_password as password, > CONCAT('/',volume,'/',SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1)) > AS home, 5000 AS uid, 5000 AS gid, concat('*:storage=', volume_limit > ,'G') AS quota_rule from easymail_users where email = '%u' and banned = > '0' and active = '1' > > user_query = SELECT > CONCAT('maildir:/',volume,'/',SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/Maildir') > AS mail, > CONCAT('/',volume,'/',SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1)) > AS home, 5000 AS uid, 5000 AS gid, concat('*:storage=', volume_limit > ,'G') AS quota_rule from easymail_users where email = '%u' and banned = > '0' and active = '1' > > > /etc/dovecot/conf.d/90-quota.conf > > ## > ## Quota configuration. > ## > > ## > ## Quota warnings > ## > > # You can execute a given command when user exceeds a specified quota limit. > # Each quota root has separate limits. Only the command for the first > # exceeded limit is excecuted, so put the highest limit first. > # The commands are executed via script service by connecting to the named > # UNIX socket (quota-warning below). > # Note that % needs to be escaped as %%, otherwise "% " expands to empty. > > plugin { > quota_warning = storage=95%% quota-warning 95 %u > quota_warning2 = storage=90%% quota-warning 90 %u > quota_warning3 = storage=80%% quota-warning 80 %u > } > > # Example quota-warning service. The unix listener's permissions should be > # set in a way that mail processes can connect to it. Below example assumes > # that mail processes run as vmail user. If you use mode=0666, all > system users > # can generate quota warnings to anyone. > service quota-warning { > executable = script /usr/local/bin/quota-warning.sh > user = dovecot > unix_listener quota-warning { > user = dovecot > mode = 0666 > } > } > > ## > ## Quota backends > ## > > # Multiple backends are supported: > # dirsize: Find and sum all the files found from mail directory. > # Extremely SLOW with Maildir. It'll eat your CPU and disk I/O. > # dict: Keep quota stored in dictionary (eg. SQL) > # maildir: Maildir++ quota > # fs: Read-only support for filesystem quota > > plugin { > #quota = dirsize:User quota > #quota = maildir:User quota > #quota = dict:User quota::proxy::quota > quota = count:User quota > #quota = fs:User quota > } > > > /usr/local/bin/quota-warning.sh > > #!/bin/sh > # warning email for approaching their quota > > usage=$1 > email=$2 > > /usr/bin/mailx -r "supp...@easydns.com" -s "Quota Usager Notification" > "${email:?}" < /home/vmail/quota"${usage:?}".txt > > echo "$(date) ${usage} : ${email}" >> /var/log/quotatest.log > > Thank you > Ted > easyDNS Technologies