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: nore...@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@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@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
}