10G mails use 90G on disk

Aki Tuomi aki.tuomi at open-xchange.com
Fri Jan 29 12:46:00 EET 2021


> 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


More information about the dovecot mailing list