10G mails use 90G on disk

Markus Schönhaber dovecot at list-post.mks-mail.de
Fri Jan 29 12:41:32 EET 2021


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
  }
}


More information about the dovecot mailing list