Dovecotで、クォータを超えたユーザーに対してクォータ警告を次のように実装しようとしています。このヒント。私は以下を私のエントリに追加しました/etc/dovecot/conf.d/30-overquota.conf
(おそらく元のすべての修正は/etc/dovecot/dovecot.conf
更新時に削除されます)。
plugin {
quota = dict:user::file:/var/vmail/%d/%n/.quotausage
sieve=/var/vmail/%d/%n/.sieve
quota_warning = storage=50%% quota-warning 50 %u
quota_warning2 = storage=80%% quota-warning 80 %u
quota_warning3 = -storage=100%% quota-warning below %u # user is no longer over quota
}
service quota-warning {
executable = script /opt/extra-script/quota-warning.sh
user = root
unix_listener quota-warning {
user = root
mode = 0600
}
}
それから/opt/extra-script/quota-warning.shを作成し、755にchmodedしました。
#!/bin/sh
PERCENT=$1
USER=$2
cat << EOF | /usr/libexec/dovecot/dovecot-lda -d $USER -o "plugin/quota=maildir:User quota:noenforcing"
From: [email protected]
Subject: Mailbox piena
La tua casella è piena al $PERCENT%. Cancellare i messaggi vecchi.
EOF
残念ながら、これは95%がいっぱいの1MBテストメールボックスにメッセージを受信しないために機能しません(そして30-overquota.confの制限は5行から50%に設定されています)。
このサービスを正しく設定するのに役立つ人はいますか?以下は、dovecot -n
私が知っている限り、追加の構成が実行中のサービスに含まれていることを確認する出力です(ただし、期待される効果はありません)。
root@centos1670:~# dovecot -n
# 2.2.18: /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.8 (0c4ae064f307+)
# OS: Linux 2.6.32-642.15.1.el6.x86_64 x86_64 CentOS release 6.8 (Final) ext3
auth_mechanisms = plain login digest-md5 cram-md5 apop
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890&.-_@'
disable_plaintext_auth = no
first_valid_uid = 30
imap_client_workarounds = delay-newmail
imap_logout_format = rcvd=%i, sent=%o
mail_home = /var/qmail/mailnames/%Ld/%Ln
mail_location = maildir:/var/qmail/mailnames/%Ld/%Ln/Maildir
mail_log_prefix = "service=%s, user=%u, ip=[%r]. "
mail_plugins = " quota"
managesieve_logout_format = rcvd=%i, sent=%o
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 imapflags notify
namespace inbox {
inbox = yes
location =
prefix = INBOX.
separator = .
}
passdb {
driver = plesk
}
plugin {
quota = dict:user::file:/var/vmail/%d/%n/.quotausage
quota_grace = 0
quota_warning = storage=50%% quota-warning 50 %u
quota_warning2 = storage=80%% quota-warning 80 %u
quota_warning3 = -storage=100%% quota-warning below %u
sieve = ~/.dovecot.sieve
sieve_dir = ~/sieve
sieve_extensions = +notify +imapflags
}
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
pop3_logout_format = rcvd=%i, sent=%o, top=%t/%p, retr=%r/%b, del=%d/%m, size=%s
protocols = imap pop3 sieve
service auth-worker {
group =
user =
}
service auth {
group =
unix_listener auth-userdb {
group = popuser
mode = 0600
user = popuser
}
user =
}
service quota-warning {
executable = script /opt/extra-script/quota-warning.sh
unix_listener quota-warning {
mode = 0600
user = root
}
user = root
}
ssl_cert = </etc/dovecot/private/ssl-cert-and-key.pem
ssl_key = </etc/dovecot/private/ssl-cert-and-key.pem
userdb {
args = uid=popuser gid=popuser
driver = static
}
protocol imap {
mail_plugins = " quota imap_quota"
}
protocol pop3 {
pop3_uidl_format = UID%u-%v
}
protocol lda {
mail_plugins = " quota sieve"
}
編集:Jens Eratの提案に従って、root@centos1670:~# doveadm quota get
実際に次のような出力が生成されます。
Quota name Type Value Limit %
user STORAGE 0 - 0
user MESSAGE 0 - 0
quota_rule = *:storage=1GB
これは、強制クォータの再計算などの機能を追加して修正できる構成の欠陥を示すようです。問題は、私が要求するDovecot設定が、ユーザーごとに異なるメールボックスサイズを設定できるPleskで実行されることです。したがって、quota_rule
値をパラメーター的に定義できる場合は感謝します。
ベストアンサー1
Dovecotは、クォータの再計算を明示的に要求しない限り(大規模なユーザーグループとメールボックスの場合はかなりの時間がかかる場合があります)、ユーザーのクォータの使用に新しい変更のみを追加します。したがって、クォータの再計算を強制しないと、Dovecotはメールボックスがクォータの制限を超えたことを知らないかもしれません。
使用doveadm quota get
現在のクォータデータベースのダンプを取得します。doveadm quota recalc
強制クォータの再計算。