![将 ACL 应用于 Dovecot 公共命名空间](https://linux22.com/image/540334/%E5%B0%86%20ACL%20%E5%BA%94%E7%94%A8%E4%BA%8E%20Dovecot%20%E5%85%AC%E5%85%B1%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4.png)
我想通过 Dovecot 中的一组公共、只读邮箱提供对某些邮件列表的访问。我的 dovecot (dovecot-2.0.9) 配置中定义了一个公共命名空间,如下所示:
namespace {
type = public
separator = .
prefix = news.
location = maildir:/var/spool/news
subscriptions = no
}
我想将此命名空间中的所有邮箱设为只读。我对 ACL 插件进行了以下配置:
plugin {
acl = vfile:/etc/dovecot/acls:cache_secs=300
}
仔细阅读文档后,似乎我有一个邮件文件夹
/var/spool/news/.foo.bar
,可以将以下内容放入其中
/var/spool/news/.foo.bar/dovecot-acl
:
anyone rl
但这没有任何影响。我也尝试创建一个
/usr/local/etc/dovecot/acls/news.foo.bar
具有相同内容的文件,但也没有做任何事情。我已打开邮件调试:
mail_debug = yes
但日志并未产生任何与 ACL 处理相关的内容。我很好奇是否有人让这个功能正常工作,如果是的话,您是否可以提供一些配置示例。
此外,如果有任何方法可以做到这一点而不涉及每个邮箱的配置(例如,能够应用 ACLnews.*
或其他东西),那就太棒了。让记录的默认 ACL 行为发挥作用将是朝着正确方向迈出的一步。
答案1
我看到这是一篇旧帖子,所以我想你现在已经明白了。否则,我希望你觉得下面的内容有帮助。
确保你已经定义了私人的命名空间,除了公共命名空间之外。类似以下内容:
namespace {
type = private
separator = . # don't mix separators
prefix =
#location defaults to mail_location.
inbox = yes
}
此时mail_location
是一个必需参数,请为其赋予适合您环境的值,即:
mail_location = maildir:~/Maildir
还需要以下内容dovecot.conf
(或 etc/conf.d 中的附加配置之一)来启用 acl 插件:
mail_plugins = acl
protocol imap {
mail_plugins = $mail_plugins imap_acl
}
如果您从源代码安装了 dovecot,并且使用了默认前缀/usr/local
-- 看起来似乎是这样 -- 那么我预计以下内容更适合配置全局 ACL:
plugin {
acl = vfile:/usr/local/etc/dovecot/acls:cache_secs=300
}
重新启动 dovecot 就可以了。
您可能还会发现以下文档很有用:
祝你好运!