#-- 変数に必要な値を代入
DOMAIN=masdon.life
#-- /etc/dovecot/local.conf に設定を追加する
vi /etc/dovecot/local.conf
#- mail_plugins に acl を追加
mail_plugins = $mail_plugins zlib acl
#- plugin に acl = vfile を追加
plugin {
...
...
acl = vfile
}
#- protocol imap の mail_plugins に imap_acl を追加
protocol imap {
mail_plugins = $mail_plugins imap_acl
...
}
#- namespace の設定を追加
namespace inbox {
type = private
separator = /
prefix =
inbox = yes
}
#- _Public/Test01 と _Public/Test02 を作成する
namespace {
type = public
separator = /
prefix = _Public/
location = maildir:/var/dovecot/public/%Ld
subscriptions = yes
list = yes
mailbox Test01 {
auto = subscribe
}
mailbox Test02 {
auto = subscribe
}
}
#-- dovecot を reload
systemctl reload dovecot
#-- _Public を該当ドメイン全てのユーザで使用できるよう acl を設定
echo "anyone eilprwts" > /var/dovecot/public/${DOMAIN}/dovecot-acl
chown dovecot. /var/dovecot/public/${DOMAIN}/dovecot-acl
chmod 600 /var/dovecot/public/${DOMAIN}/dovecot-acl
#-- 該当ドメインのメールアカウントを設定したメーラーで _Public/Test01と_Public/Test02 フォルダを購読しアクセスすると MBOXが作成される
#-- 作成されたMBOXは、上位フォルダの ACL が設定される
ls -ld /var/dovecot/public/${DOMAIN}/.Test0{1,2}
drwx------ 5 dovecot dovecot 146 2月 17 21:45 /var/dovecot/public/masdon.life/.Test01
drwx------ 5 dovecot dovecot 146 2月 17 21:09 /var/dovecot/public/masdon.life/.Test02
#-- _Public/Test01 を該当ドメイン全てのユーザで使用できるよう acl を設定
echo "anyone eilprwts" > /var/dovecot/public/${DOMAIN}/.Test01/dovecot-acl
chown dovecot. /var/dovecot/public/${DOMAIN}/.Test01/dovecot-acl
chmod 600 /var/dovecot/public/${DOMAIN}/.Test01/dovecot-acl
#-- _Public/Test02 をadminユーザのみで使用できるよう acl を設定
echo "user=admin@${DOMAIN} eilprwts" > /var/dovecot/public/${DOMAIN}/.Test02/dovecot-acl
chown dovecot. /var/dovecot/public/${DOMAIN}/.Test02/dovecot-acl
chmod 600 /var/dovecot/public/${DOMAIN}/.Test02/dovecot-acl
#-- _Public/Test02 にコマンドで acl に特定のユーザの権限を追加
doveadm acl add -u admin@${DOMAIN} _Public/Test02 user=ma3ki@${DOMAIN} expunge insert lookup post read write write-deleted write-seen
#-- _Public/Test02 にコマンドで acl に gr1 というグループの権限を追加
doveadm acl add -u admin@${DOMAIN} _Public/Test02 group=gr1 expunge insert lookup post read write write-deleted write-seen
#-- 権限の確認
doveadm acl get -u admin@${DOMAIN} _Public/Test01
ID Global Rights
anyone expunge insert lookup post read write write-deleted write-seen
doveadm acl get -u admin@${DOMAIN} _Public/Test02
ID Global Rights
user=admin@masdon.life expunge insert lookup post read write write-deleted write-seen
user=ma3ki@masdon.life expunge insert lookup post read write write-deleted write-seen
#-- ACL のフラグの意味 https://doc.dovecot.org/settings/plugin/acl/