> On 29/01/2021 12:41 Markus Sch?nhaber <dovecot at
list-post.mks-mail.de> wrote:
>
>
> Hello,
>
> on a system I administer the disk where Dovecot's mailstore (mdbox)
> resides got filled up to the brim although the combined quotas for the
> users are much smaller than the disk's capacity.
>
> For one user I see the following:
>
> doveadm quota get -u <USER>@<DOMAIN>
> Username Quota name Type Value Limit
> %
> <USER>@<DOMAIN> User quota STORAGE 10231248 20971520
> 48
> <USER>@<DOMAIN> User quota MESSAGE 11176 -
> 0
>
> So this user has used ~10G of his 20G quota. But looking at the space
> used on disk:
>
> # du -hs /var/spool/vmail/mail/<DOMAIN>/<USER>/storage/
> 90G /var/spool/vmail/mail/<DOMAIN>/<USER>/storage/
>
> What might be the reason that mail size and disk space used differ so much?
> And most of all: how can I prevent that from happening?
>
> Regards
> mks
>
>
> # doveconf -n
> # 2.3.13 (89f716dc2): /etc/dovecot/dovecot.conf
> # Pigeonhole version 0.5.13 (cdd19fe3)
> # OS: Linux 4.19.0-13-amd64 x86_64 Debian 10.7 ext4
> # Hostname: ?
> auth_mechanisms = plain login
> dict {
> quota = pgsql:/etc/dovecot/dovecot-dict-sql.conf.ext
> }
> imap_id_log = *
> login_log_format_elements = user=<%u> method=%m rip=%r lip=%l
lport=%a
> mpid=%e %c
> mail_home = /var/spool/vmail/home/%d/%n
> mail_location = mdbox:/var/spool/vmail/mail/%d/%n
> mail_plugins = " quota acl"
> 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 mime foreverypart
extracttext
> namespace inbox {
> inbox = yes
> location > mailbox Drafts {
> special_use = \Drafts
> }
> mailbox Entw?rfe {
> special_use = \Drafts
> }
> mailbox Entw&APw-rfe {
> special_use = \Drafts
> }
> mailbox "Gel?schte Objekte" {
> special_use = \Trash
> }
> mailbox "Gel&APY-schte Objekte" {
> special_use = \Trash
> }
> mailbox "Gesendete Objekte" {
> special_use = \Sent
> }
> mailbox Junk {
> special_use = \Junk
> }
> mailbox Sent {
> special_use = \Sent
> }
> mailbox "Sent Messages" {
> special_use = \Sent
> }
> mailbox Trash {
> special_use = \Trash
> }
> prefix > separator = /
> }
> passdb {
> args = /etc/dovecot/dovecot-sql.conf.ext
> driver = sql
> }
> plugin {
> acl = vfile
> mail_log_events = delete undelete expunge copy mailbox_delete
> mailbox_rename
> mail_log_fields = uid box msgid size
> quota = dict:User quota::proxy::quota
> recipient_delimiter = +
> sieve = file:~/sieve;active=~/.dovecot.sieve
> sieve_redirect_envelope_from = orig_recipient
> }
> protocols = " imap lmtp sieve"
> service auth-worker {
> user = $default_internal_user
> }
> service auth {
> inet_listener {
> port = 12345
> }
> unix_listener /var/spool/postfix/private/auth {
> group = postfix
> mode = 0666
> user = postfix
> }
> }
> service dict {
> unix_listener dict {
> group = vmail
> mode = 0600
> user = vmail
> }
> }
> service lmtp {
> unix_listener /var/spool/postfix/private/dovecot-lmtp {
> group = postfix
> mode = 0600
> user = postfix
> }
> }
> service stats {
> client_limit = 10000
> unix_listener stats-writer {
> group = vmail
> user = vmail
> }
> }
> ssl_cert = </etc/letsencrypt/live/<DOMAIN>/fullchain.pem
> ssl_dh = # hidden, use -P to show it
> ssl_key = # hidden, use -P to show it
> userdb {
> args = /etc/dovecot/dovecot-sql.conf.ext
> driver = sql
> }
> verbose_proctitle = yes
> protocol lmtp {
> mail_plugins = " quota acl quota sieve"
> }
> protocol lda {
> mail_plugins = " quota acl sieve"
> }
> protocol imap {
> mail_plugins = " quota acl imap_quota acl"
> }
> remote 192.168.1.0/24 {
> protocol imap {
> disable_plaintext_auth = no
> }
> }
mdbox format requires you to periodically run
doveadm purge -u user
to cleanup deleted mails from the mdbox storage. mdbox has feature that you can
use mail_location mdbox_deleted to access any deleted emails if you need to
recover them, but it also requires you to purge the storage now and then.
Aki