quota warnings not sent out anymore

mj lists at merit.unu.edu
Mon Dec 6 11:10:06 UTC 2021


Hi,

We suddenly realised that our maildir quota warnings are no longer sent 
out. We don't understand why not.

This is dovecot 2.3.4.1 on debian 10.11. We use a script to send out the 
notification, adapted from the dovecot wiki here: 
(https://doc.dovecot.org/configuration_manual/quota/)

Our quota notification script is:

> #!/bin/sh
> PERCENT=$1
> USER=$2
> cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=maildir::noenforcing"
> From: noreply at domain.com
> Subject: quota warning
> 
> Your mailbox is now $PERCENT% full.
> 
> Please delete or archive items to decrease your mailbox size.

Our complete doveconf -n output is at the end of this email.

When calling the script manually as user root, it works perfectly. But 
as user vmail or dovecot, no notifications are sent at all.

I guess this is relevant:

> root at dovecot:/etc/dovecot# ls -l /var/run/dovecot/
> total 8
> srw------- 1 root    root      0 Dec  6 00:00 anvil
> srw------- 1 root    root      0 Dec  6 00:00 anvil-auth-penalty
> srw------- 1 dovecot root      0 Dec  6 11:34 auth-client
> srw------- 1 dovecot root      0 Dec  6 11:34 auth-login
> srw------- 1 root    root      0 Dec  6 11:34 auth-master
> -rw------- 1 root    root     32 Jul 19 17:39 auth-token-secret.dat
> srw-rw-rw- 1 vmail   vmail     0 Dec  6 11:34 auth-userdb
> srw------- 1 dovecot root      0 Dec  6 11:34 auth-worker
> srw------- 1 root    root      0 Dec  6 11:34 config
> srw-rw---- 1 root    dovecot   0 Dec  6 11:34 dict
> srw-rw---- 1 root    dovecot   0 Dec  6 11:34 dict-async
> srw------- 1 root    root      0 Dec  6 11:34 director-admin
> srw-rw-rw- 1 root    root      0 Dec  6 11:34 dns-client
> srw------- 1 root    root      0 Dec  6 11:34 doveadm-server
> lrwxrwxrwx 1 root    root     25 Dec  6 00:00 dovecot.conf -> /etc/dovecot/dovecot.conf
> drwxr-xr-x 2 root    root     40 Jul 19 17:39 empty
> srw-rw---- 1 root    dovecot   0 Dec  6 11:34 imap-hibernate
> srw------- 1 root    root      0 Dec  6 11:34 imap-master
> srw-rw-rw- 1 root    root      0 Dec  6 11:34 imap-urlauth
> srw------- 1 dovecot root      0 Dec  6 11:34 imap-urlauth-worker
> srw-rw-rw- 1 root    root      0 Dec  6 11:34 indexer
> srw------- 1 dovecot root      0 Dec  6 11:34 indexer-worker
> srw------- 1 dovecot root      0 Dec  6 11:34 ipc
> srw-rw-rw- 1 root    root      0 Dec  6 11:34 lmtp
> srw------- 1 root    root      0 Dec  6 11:34 log-errors
> drwxr-x--- 2 root    nogroup 120 Dec  6 11:34 login
> srw------- 1 root    root      0 Dec  6 11:34 master
> -rw------- 1 root    root      6 Dec  6 00:00 master.pid
> srw------- 1 root    root      0 Dec  6 11:34 old-stats
> prw------- 1 root    root      0 Dec  6 11:34 old-stats-mail
> prw------- 1 root    root      0 Dec  6 11:34 old-stats-user
> srw------- 1 vmail   root      0 Dec  6 11:34 quota-warning
> srw------- 1 root    root      0 Dec  6 11:34 replication-notify
> prw------- 1 root    root      0 Dec  6 11:34 replication-notify-fifo
> srw------- 1 dovecot root      0 Dec  6 11:34 replicator
> srw-rw---- 1 vmail   vmail     0 Dec  6 11:34 stats-reader
> srw-rw---- 1 vmail   vmail     0 Dec  6 11:34 stats-writer
> drwxr-x--- 2 root    nogroup  80 Dec  6 11:34 token-login

Can anyone help, and explain what is going on here?

Thank you very much in advance for a reply!

MJ

The doveconf -n output:

> root at imap:/etc/dovecot# doveconf -n
> # 2.3.4.1 (f79e8e7e4): /etc/dovecot/dovecot.conf
> # Pigeonhole version 0.5.4 ()
> # OS: Linux 4.19.0-17-amd64 x86_64 Debian 10.11 xfs
> # Hostname: mail.company.com
> auth_debug = yes
> auth_failure_delay = 10 secs
> auth_master_user_separator = *
> auth_mechanisms = plain login
> auth_username_format = %Ln
> auth_verbose = yes
> auth_verbose_passwords = sha1
> default_vsz_limit = 512 M
> deliver_log_format = %f | %s | msgid=%m: %$
> lda_mailbox_autocreate = yes
> lda_mailbox_autosubscribe = yes
> login_greeting = Dovecot ready.
> login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c lport=%a
> mail_gid = vmail
> mail_location = maildir:/var/vmail/%Ln/Maildir:LAYOUT=fs:DIRNAME=mAildir
> mail_plugins = acl lazy_expunge zlib quota mail_log notify
> mail_shared_explicit_inbox = yes
> mail_uid = vmail
> 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
> namespace {
>   list = children
>   location = maildir:/var/vmail/%%u/Maildir:LAYOUT=fs:DIRNAME=mAildir:INDEX=/var/vmail/%u/shared/%%u
>   prefix = shared/%%n/
>   separator = /
>   subscriptions = no
>   type = shared
> }
> namespace inbox {
>   inbox = yes
>   location = 
>   mailbox "Deleted items" {
>     special_use = \Trash
>   }
>   mailbox Drafts {
>     special_use = \Drafts
>   }
>   mailbox Junk {
>     special_use = \Junk
>   }
>   mailbox Sent {
>     special_use = \Sent
>   }
>   mailbox "Sent items" {
>     special_use = \Sent
>   }
>   mailbox Trash {
>     special_use = \Trash
>   }
>   mailbox inbox {
>     auto = subscribe
>   }
>   prefix = 
>   separator = /
>   type = private
> }
> passdb {
>   args = /etc/dovecot/deny.imap
>   deny = yes
>   driver = passwd-file
> }
> passdb {
>   args = /etc/dovecot/master-users
>   driver = passwd-file
>   master = yes
> }
> passdb {
>   args = /etc/dovecot/dovecot-ldap.conf.ext
>   driver = ldap
>   result_failure = return-fail
> }
> plugin {
>   acl = vfile
>   acl_shared_dict = file:/var/lib/dovecot/db/shared-mailboxes.db
>   mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename append
>   mail_log_fields = uid box msgid from subject
>   quota = maildir
>   quota_rule = ?:storage=5G
>   quota_rule2 = Trash:storage=+100M
>   quota_warning = storage=97%% quota-warning 97 %u
>   quota_warning2 = storage=95%% quota-warning 95 %u
>   quota_warning3 = storage=90%% quota-warning 90 %u
>   quota_warning4 = storage=85%% quota-warning 85 %u
>   quota_warning5 = storage=80%% quota-warning 80 %u
>   quota_warning6 = -storage=100%% quota-warning below %u
>   sieve = ~/.dovecot.sieve
>   sieve_default = /var/lib/dovecot/default.sieve
>   sieve_dir = ~/sieve
> }
> protocols = imap lmtp sieve
> service auth {
>   unix_listener /var/spool/postfix/private/auth {
>     mode = 0666
>   }
>   unix_listener auth-userdb {
>     group = vmail
>     mode = 0666
>     user = vmail
>   }
> }
> service imap-login {
>   process_limit = 500
>   process_min_avail = 2
> }
> service quota-warning {
>   executable = script /usr/local/bin/quota-warning.sh
>   unix_listener quota-warning {
>     user = vmail
>   }
>   user = dovecot
> }
> service stats {
>   unix_listener stats-reader {
>     group = vmail
>     mode = 0660
>     user = vmail
>   }
>   unix_listener stats-writer {
>     group = vmail
>     mode = 0660
>     user = vmail
>   }
> }
> shutdown_clients = no
> ssl = required
> ssl_cert = </etc/ssl/letsencrypt/fullchain.pem
> ssl_cipher_list = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
> ssl_dh = # hidden, use -P to show it
> ssl_key = # hidden, use -P to show it
> ssl_min_protocol = TLSv1.2
> userdb {
>   args = uid=vmail gid=vmail home=/var/vmail/%n allow_all_users=yes
>   driver = static
> }
> userdb {
>   args = /etc/dovecot/dovecot-ldap.conf.ext
>   driver = ldap
> }
> verbose_proctitle = yes
> protocol lda {
>   mail_plugins = acl lazy_expunge zlib quota mail_log notify sieve quota
> }
> protocol imap {
>   imap_max_line_length = 2 M
>   mail_max_userip_connections = 40
>   mail_plugins = acl lazy_expunge zlib quota mail_log notify imap_quota imap_acl
> }



More information about the dovecot mailing list