将 ACL 应用于 Dovecot 公共命名空间

lar*_*sks 6 email imap dovecot access-control-list namespaces

我想通过 Dovecot 中的一组公共只读邮箱提供对某些邮件列表的访问。我的 dovecot (dovecot-2.0.9) 配置中有一个公共命名空间定义,如下所示:

namespace {
  type = public
  separator = .
  prefix = news.
  location = maildir:/var/spool/news
  subscriptions = no  
}
Run Code Online (Sandbox Code Playgroud)

我想将此命名空间中的所有邮箱设为只读。我有 ACL 插件的以下配置:

plugin {
  acl = vfile:/etc/dovecot/acls:cache_secs=300
}
Run Code Online (Sandbox Code Playgroud)

仔细阅读文档后,我似乎有一个/var/spool/news/.foo.bar可以将以下内容放入 的邮件文件夹 /var/spool/news/.foo.bar/dovecot-acl

anyone rl
Run Code Online (Sandbox Code Playgroud)

但这没有任何影响。我也尝试创建一个/usr/local/etc/dovecot/acls/news.foo.bar具有相同内容的文件 ,但这也没有任何作用。我打开了邮件调试:

mail_debug = yes
Run Code Online (Sandbox Code Playgroud)

但日志不会产生任何与 ACL 处理相关的内容。我很想知道是否有人让它正常工作,如果是这样,您是否可以提供一些配置示例。

此外,如果有任何不涉及每个邮箱配置的方法(例如,将 ACL 应用于news.*或其他内容的能力),那就太棒了。获取默认 ACL 工作的记录行为将是朝着正确方向迈出的一步。

Mar*_*rty 2

我看到这是一篇旧帖子,所以我想您现在已经弄清楚了。否则,我希望以下内容对您有所帮助。

确保除了公共命名空间之外,您还定义了私有命名空间。大致如下:

namespace {
  type = private
  separator = . # don't mix separators
  prefix =
  #location defaults to mail_location.
  inbox = yes
}
Run Code Online (Sandbox Code Playgroud)

此时mail_location是必填参数,给它一个适合你环境的值,即:

mail_location = maildir:~/Maildir
Run Code Online (Sandbox Code Playgroud)

dovecot.conf启用 acl 插件(或 etc/conf.d 中的附加配置之一)还需要以下内容:

mail_plugins = acl
protocol imap {
  mail_plugins = $mail_plugins imap_acl
} 
Run Code Online (Sandbox Code Playgroud)

如果您从源代码安装了 dovecot,默认前缀为/usr/local- 似乎就是这种情况 - 那么我预计以下内容更适合配置全局 ACL:

plugin {
  acl = vfile:/usr/local/etc/dovecot/acls:cache_secs=300
}
Run Code Online (Sandbox Code Playgroud)

重新启动 dovecot,你应该就可以开始了。

您可能还会发现以下文档很有用:

  1. http://wiki2.dovecot.org/SharedMailboxes/Public
  2. http://wiki2.dovecot.org/ACL

祝你好运!