前回の投稿 にクォータを加えて、個人別に容量を制限出来るようにしてみます。
※使用したDovecotのバージョンは2.3.16でした。2.2.19以降であれば恐らく設定をそのまま使えると思います。
まずは、全員共通の設定が出来るようにします。
Dovecot設定
/etc/dovecot/conf.d/10-mail.conf
mail_plugins = $mail_plugins quota
/etc/dovecot/conf.d/20-imap.conf
protocol imap{
mail_plugins = $mail_plugins imap_quota
# ...
}
/etc/dovecot/conf.d/90-quota.conf
plugin {
quota_rule = *:storage=100M
# res postfix
quota_status_success = DUNNO
quota_status_nouser = DUNNO
quota_status_overquota = "552 5.2.2 Mailbox is full"
}
# ...
# backend
plugin{
quota_vsizes = yes
quota = count:User quota
}
# for postfix
service quota-status {
executable = quota-status -p postfix
inet_listener {
port = 12340
# You can choose any port you want
}
client_limit = 1
}
Postfix設定
smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:12340
これでPostfixは送信前にDovecotへお伺いを立てるようになります。
ここまでの設定で、全員が100MBの容量制限を設定されました。
DovecotとPostfixをリロードしてRoundCubeで見ると、確かに100MBの制限が入っています。
次は個人ごとの設定です。
PostgreSQL
psqlコマンドラインでクォータ用カラムを追加します。
取り合えず細かい容量設定は必要無いのでquota_mbとして、MB単位での入力にしておきます。
ALTER TABLE mail_users ADD quota_mb integer DEFAULT 100;
DROP VIEW user_view;
CREATE VIEW user_view AS SELECT *,
name||'@'||domain AS mail,
'/var/mail/vhosts/'||domain||'/'||name AS dovecot_home,
domain||'/'||name||'/Maildir/' AS maildir,
'*:storage='||quota_mb||'M' AS quota_rule
FROM mail_users;
user_viewにquota_ruleを追加する事で、前回のdovecot-sql.conf.extならquota_ruleを個別に適用してくれます。
Dovecotをリロードしてquota_mbの値を10にUPDATEしてみると、RoundCubeも10MBに更新されています(UPDATEするたびに値が変わるので、結構楽しいです)。
doveadm userでも10MBになっている事が確認出来ます。
ここで自分宛に送って10MB容量いっぱいにしてから送信をすると、送信時にエラーメッセージが表示され、送信出来ない事が確認出来ました。
これで全体の100MBでなく、ちゃんと個別の10MBで制限されている事が確認出来ました。
タグ: Dovecot , Postfix , Quota
この投稿は 2023年1月6日 金曜日 16:50 に 未分類 カテゴリーに公開されました。 この投稿へのコメントは RSS 2.0 フィードで購読することができます。
このページの一番下でコメントを残すことができます。トラックバック / ピンバックは現在受け付けていません。