Disk Quota

  1. 顯示收件夾目錄及郵件儲存目錄的使用量,必須在 dovecot 設定,可以同時設定多個硬碟空間 quota 檢查,以下設定為檢查掛載 /var/spool/mail 及 /home 的檔案系統。
    [root@mail roundcubemail]# vim /etc/dovecot/conf.d/90-quota.conf 
    .......
    mail_plugins = $mail_plugins quota
    protocol lda {
      mail_plugins = quota
    }
    protocol imap {
      mail_plugins = $mail_plugins imap_quota
    }
    plugin {
      #quota = dirsize:User quota
      #quota = maildir:User quota
      #quota = dict:User quota::proxy::quota
      #quota = dict:User quota::file:%h/Mail/dovecot-quota
      #quota_rule = *:storage=250M:messages=1000
      quota = fs:INBOX:mount=/var/spool/mail
      quota2 = fs:Home:mount=/home
    
  2. 重新啟動 Dovecot。
    [root@mail roundcubemail]# /etc/init.d/dovecot restart
    
  3. 登入 roundcubemail 沒有顯示硬碟的使用量,檢查紀錄檔發現以下訊息,此為 SELinux 管制問題,請參考自訂 SELinux 政策處理。
    [root@mail dovecot]# grep quota /var/log/maillog
    Aug 31 18:37:44 localhost dovecot: imap(userxxxx): Error: quotactl(Q_GETQUOTA, 
    /dev/xxxxx) failed: Permission denied
    
  4. 將自訂 SELinux 政策模組加入。
    [root@mail ~]# semodule -i /etc/dovecot/dovecotquota.pp
    
  5. doveadm 查詢用戶使用硬碟狀況。
    [root@mail ~]# doveadm quota get -u dywang
    Quota name                      Type      Value   Limit  %
    INBOX                           STORAGE   37864  250000 15
    home                            STORAGE 4241310 7340032 57
    
  6. /home 目錄為 NFS,Dovecot 目前不支援。
    [root@mail dovecot]# grep quota /var/log/maillog
    Aug 31 18:17:57 localhost dovecot: imap(userxxxx): Error: quotactl(Q_GETQUOTA,
     xxx.xxx.xxx.xxx:/home) failed: No such file or directory