ISPmail (8): Quotas

Quota là hạn mức dung lượng đĩa cho người dùng, để người dùng không lãng phí dung lượng ổ đĩa vô hạn mà buộc phải dọn sạch các email cũ mỗi giờ.
Cài đặt ở hai nơi. Postfix cần từ chối các email mới nếu hộp thư của người dùng vượt quá dung lượng. Và Dovecot cần theo dõi hạn ngạch và số lượng người dùng đã sử dụng hết.

## Dovecot quota policy service ##
sed '/plugin /{
:x; N; /\}/ ! bx
s/\(plugin {\).*\(}\)/\1\n  quota = maildir:User quota\n  quota_status_success = DUNNO\n  quota_status_nouser = DUNNO\n  quota_status_overquota = "452 4.2.2 Mailbox is full and cannot receive any more emails"\n\2/}' /etc/dovecot/conf.d/90-quota.conf
cat >> /etc/dovecot/conf.d/90-quota.conf <<EOT
service quota-status {
  executable = /usr/lib/dovecot/quota-status -p postfix
  unix_listener /var/spool/postfix/private/quota-status {
    user = postfix
  }
}
EOT
## Postfix recipient restrictions ##
postconf "smtpd_recipient_restrictions = \
     reject_unauth_destination \
     check_policy_service unix:private/quota-status"
## Automatic warning emails ##
cat >> /etc/dovecot/conf.d/90-quota.conf <<EOT
plugin {
  quota_warning = storage=95%% quota-warning 95 %u
  quota_warning2 = storage=80%% quota-warning 80 %u
  quota_warning3 = -storage=100%% quota-warning below %u
}
service quota-warning {
  executable = script /usr/local/bin/quota-warning.sh
  unix_listener quota-warning {
    group = dovecot
    mode = 0660
  }
}
EOT
domain=${hostname#*.}
cat > /usr/local/bin/quota-warning.sh <<EOT
#!/bin/sh
PERCENT=\$1
USER=\$2
cat <<EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=maildir:User quota:noenforcing"
From: postmaster@$domain
Subject: Quota warning - \$PERCENT% reached

Your mailbox can only store a limited amount of emails.
Currently it is \$PERCENT% full. If you reach 100% then
new emails cannot be stored. Thanks for your understanding.
EOF
EOT
chmod +x /usr/local/bin/quota-warning.sh
systemctl restart dovecot

Comments Off on ISPmail (8): Quotas

Filed under Software

Comments are closed.