クォータを超えた場合、Dovecotを使用してユーザーに警告を送信するにはどうすればよいですか?

クォータを超えた場合、Dovecotを使用してユーザーに警告を送信するにはどうすればよいですか?

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強制クォータの再計算。

おすすめ記事