Estou tentando implementar o aviso de cota para usuários sobre cotas com a Dovecot, seguindo esta dica . Eu adicionei o seguinte ao meu /etc/dovecot/conf.d/30-overquota.conf
(qualquer modificação no original /etc/dovecot/dovecot.conf
é dita seria removida em caso de atualização).
plugin {
quota = dict:user::file:/var/vmail/%d/%n/.quotausage
sieve=/var/vmail/%d/%n/.sieve
quota_warning = storage=50%% quota-warning 50 %u
quota_warning2 = storage=80%% quota-warning 80 %u
quota_warning3 = -storage=100%% quota-warning below %u # user is no longer over quota
}
service quota-warning {
executable = script /opt/extra-script/quota-warning.sh
user = root
unix_listener quota-warning {
user = root
mode = 0600
}
}
então eu criei o /opt/extra-script/quota-warning.sh, chmodeando-o para 755
#!/bin/sh
PERCENT=$1
USER=$2
cat << EOF | /usr/libexec/dovecot/dovecot-lda -d $USER -o "plugin/quota=maildir:User quota:noenforcing"
From: [email protected]
Subject: Mailbox piena
La tua casella è piena al $PERCENT%. Cancellare i messaggi vecchi.
EOF
Infelizmente, isso não está funcionando como deveria, já que não estou recebendo nenhuma mensagem em uma caixa de correio de teste de 1 MB cheia a 95% (e o limite de 30-overquota.conf foi definido em 50% na linha 5).
Alguém pode me ajudar a configurar corretamente o serviço? aqui segue a saída dovecot -n
que, tanto quanto eu posso entender, confirma que minha configuração extra está incluída no serviço em execução (mas sem nenhum efeito desejado)
root@centos1670:~# dovecot -n
# 2.2.18: /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.8 (0c4ae064f307+)
# OS: Linux 2.6.32-642.15.1.el6.x86_64 x86_64 CentOS release 6.8 (Final) ext3
auth_mechanisms = plain login digest-md5 cram-md5 apop
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890&.-_@'
disable_plaintext_auth = no
first_valid_uid = 30
imap_client_workarounds = delay-newmail
imap_logout_format = rcvd=%i, sent=%o
mail_home = /var/qmail/mailnames/%Ld/%Ln
mail_location = maildir:/var/qmail/mailnames/%Ld/%Ln/Maildir
mail_log_prefix = "service=%s, user=%u, ip=[%r]. "
mail_plugins = " quota"
managesieve_logout_format = rcvd=%i, sent=%o
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 index ihave duplicate imapflags notify
namespace inbox {
inbox = yes
location =
prefix = INBOX.
separator = .
}
passdb {
driver = plesk
}
plugin {
quota = dict:user::file:/var/vmail/%d/%n/.quotausage
quota_grace = 0
quota_warning = storage=50%% quota-warning 50 %u
quota_warning2 = storage=80%% quota-warning 80 %u
quota_warning3 = -storage=100%% quota-warning below %u
sieve = ~/.dovecot.sieve
sieve_dir = ~/sieve
sieve_extensions = +notify +imapflags
}
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
pop3_logout_format = rcvd=%i, sent=%o, top=%t/%p, retr=%r/%b, del=%d/%m, size=%s
protocols = imap pop3 sieve
service auth-worker {
group =
user =
}
service auth {
group =
unix_listener auth-userdb {
group = popuser
mode = 0600
user = popuser
}
user =
}
service quota-warning {
executable = script /opt/extra-script/quota-warning.sh
unix_listener quota-warning {
mode = 0600
user = root
}
user = root
}
ssl_cert = </etc/dovecot/private/ssl-cert-and-key.pem
ssl_key = </etc/dovecot/private/ssl-cert-and-key.pem
userdb {
args = uid=popuser gid=popuser
driver = static
}
protocol imap {
mail_plugins = " quota imap_quota"
}
protocol pop3 {
pop3_uidl_format = UID%u-%v
}
protocol lda {
mail_plugins = " quota sieve"
}
edit: como sugerido por Jens Erat, root@centos1670:~# doveadm quota get
produz a seguinte saída:
Quota name Type Value Limit %
user STORAGE 0 - 0
user MESSAGE 0 - 0
Isso parece denotar uma configuração defeituosa que pode ser corrigida adicionando algo como quota_rule = *:storage=1GB
e impondo o recálculo de cotas. O problema em fazer isso é que a configuração do Dovecot que estou perguntando está rodando sob o Plesk, no qual é possível definir diferentes tamanhos de caixa de correio por usuário, então a possibilidade de definir o valor para quota_rule
de uma forma paramétrica seria apreciada.