如何在 dovecot 中共享文件夹?

如何在 dovecot 中共享文件夹?

我正在从 courier 迁移。到目前为止,迁移工作进展顺利,我可以使用 roundcube 访问我的邮件目录,配额和筛选过滤器功能齐全。现在我需要启用邮件目录共享,但无法弄清楚如何正确配置 dovecot,因为我的设置略有不同。

首先设置

虚拟用户。Maildirs 位于 /var/vmail/domain.tld/username/ 中。没有 Maildir 子目录,Maildir 直接位于主目录中。所以我们有:home = maildir。在配置中它被翻译为:

userdb {
 args = uid=vmail gid=vmail home=/var/vmail/%d/%n/
 driver = static
}
mail_location = Maildir:~/

a.chaouche 的 Maildir 如下所示:

root@messagerie[10.10.10.20] /var/vmail/domain.tld/a.chaouche # lsa
total 1.9M
drwx------ 26 vmail vmail 4.0K May  8 11:33 .
drwxr-xr-x  5 vmail vmail 4.0K Apr  7 14:31 ..
drwx------  6 vmail vmail 4.0K Apr 27 10:09 .Coupures Streaming
drwx------  6 vmail vmail 4.0K Apr 27 10:09 .Coupures Streaming.JILFM_ZIK_WR
drwxr-xr-x  2 vmail vmail 4.0K Jun 15  2015 courierimaphieracl
drwx------  2 vmail vmail 4.0K Mar 24 16:05 courierimapkeywords
-rw-r--r--  1 vmail vmail  342 Apr 25 17:43 courierimapsubscribed
-rw-r--r--  1 vmail vmail 460K Apr 25 17:47 courierimapuiddb
drwx------  2 vmail vmail 728K Apr 27 18:24 cur
-rw-------  1 vmail vmail    0 May  8 11:33 dovecot-acl-list
-rw-------  1 vmail vmail  73K Apr 27 14:57 dovecot.index
-rw-------  1 vmail vmail  32K May  8 10:52 dovecot.index.cache
-rw-------  1 vmail vmail 8.5K May  4 10:21 dovecot.index.log
-rw-------  1 vmail vmail   31 Apr 27 15:12 dovecot-keywords
-rw-------  1 vmail vmail   96 Apr 27 10:06 dovecot.mailbox.log
lrwxrwxrwx  1 vmail vmail   21 Apr 27 16:19 .dovecot.sieve -> sieve/roundcube.sieve
-rw-------  1 vmail vmail  197 Apr 27 18:23 .dovecot.svbin
-rw-------  1 vmail vmail 466K Apr 27 18:24 dovecot-uidlist
drwx------  6 vmail vmail 4.0K Apr 27 10:10 .Drafts
drwx------  6 vmail vmail 4.0K Apr 27 10:09 .Flux audio
-rw-rw----  1 vmail vmail  136 Mar 27 14:32 ispconfig_mailsize
drwx------  6 vmail vmail 4.0K Apr 27 10:09 .Je dois repondre
drwx------  6 vmail vmail 4.0K Apr 27 15:17 .Junk
-rw-------  1 vmail vmail   27 May  5 14:16 maildirsize
drwx------  2 vmail vmail 4.0K Apr 27 18:24 new
drwx------  6 vmail vmail 4.0K Apr 27 10:09 .notifs
drwx------  6 vmail vmail 4.0K Apr 27 10:09 .notifs.Imrpimantes
drwx------  6 vmail vmail 4.0K Apr 27 10:09 .notifs.Kaspersky
drwx------  6 vmail vmail 4.0K Apr 27 10:09 .notifs.Netia
drwx------  6 vmail vmail 4.0K Apr 27 10:09 .notifs.R&AOk-seau
drwx------  6 vmail vmail 4.0K Apr 27 10:09 .notifs.Streaming
drwx------  6 vmail vmail 4.0K Apr 27 10:09 .notifs.SYSTEM
drwx------  6 vmail vmail 4.0K Apr 27 10:09 .notifs.Webradios
drwx------  6 vmail vmail 4.0K Apr 27 18:24 .PRTG
drwx------  6 vmail vmail 4.0K Apr 27 15:17 .Sent
drwx------  3 vmail vmail 4.0K Apr 27 18:22 sieve
-rw-------  1 vmail vmail  234 Apr 27 10:08 subscriptions
drwx------  6 vmail vmail 4.0K Apr 27 18:24 .TEST
-rw-r--r--  1 vmail vmail    0 Apr  5 15:29 testfile
drwx------  2 vmail vmail 4.0K May  4 10:21 tmp
drwx------  6 vmail vmail 4.0K Apr 27 18:24 .Trash
root@messagerie[10.10.10.20] /var/vmail/algerian-radio.dz/a.chaouche # 

您可以知道我正在从 courier 迁移,因为除了 dovecot 的文件外,courier 的文件仍然在那里。

.notifs 是一个包含许多子文件夹的文件夹,如 .notifs.Webradios、.notifs.Kaspersky 等。

接下来是我想要访问的文件夹

所以[电子邮件保护]想要访问属于 a.chaouche@ 的文件夹备份.domain.tld 给另一个虚拟用户,即在另一个(虚拟)域中(但仍在同一台计算机上)

root@messagerie[10.10.10.20] /var/vmail/backup.algerian-radio.dz/a.chaouche # lsa
total 4.7M
drwx------ 15 root root  4.0K May  8 11:12 .
drwxr-xr-x  3 root root  4.0K May  5 16:16 ..
drwx------  6 root root  4.0K May  5 16:16 .Archive
drwx------  6 root root  4.0K May  5 16:16 .Archive.Coupures Streaming
drwx------  6 root root  4.0K May  5 16:16 .Archive.Flux audio
drwx------  6 root root  4.0K May  5 16:16 .Archive.notifs
drwx------  6 root root  4.0K May  5 16:16 .Archive.PRTG
-rw-r--r--  1 root root    80 May  5 16:16 courierimapacl
drwx------  2 root root  4.0K May  5 16:16 courierimapkeywords
-rw-r--r--  1 root root 1015K May  5 16:16 courierimapuiddb
drwx------  2 root root  1.6M May  5 16:17 cur
-rw-r--r--  1 root root    37 May  8 11:12 dovecot-acl
-rw-r--r--  1 root root    36 May  8 11:12 dovecot-acl~
drwx------  5 root root  4.0K May  5 16:16 .Drafts
-rw-r-----  1 root root   254 May  5 16:16 ispconfig_mailsize
drwx------  5 root root  4.0K May  5 16:16 .Junk
-rw-r-----  1 root root  1.9K May  5 16:16 maildirsize
drwx------  2 root root  2.1M May  5 16:17 new
drwx------  6 root root  4.0K May  5 16:16 .Sent
drwx------  2 root root  4.0K May  5 16:17 tmp
drwx------  5 root root  4.0K May  5 16:16 .Trash
root@messagerie[10.10.10.20] /var/vmail/backup.algerian-radio.dz/a.chaouche # 

你可以看到我已经放了一个dovecot-acl文件在那里,这里是它的内容:

root@messagerie[10.10.10.20] /var/vmail/backup.algerian-radio.dz/a.chaouche # cat dovecot-acl
[email protected] lr
root@messagerie[10.10.10.20] /var/vmail/backup.algerian-radio.dz/a.chaouche # 

现在配置

这里我启用了 lmtp 和 imap 的 acl 插件

mail_plugins = " quota acl"

protocol lmtp {
  mail_plugins = " quota acl sieve quota"
}
protocol lda {
  mail_plugins = " quota acl sieve"
}
protocol imap {
  mail_plugins = " quota acl imap_quota imap_acl"
}

以下是我的用户数据库的配置方式

userdb {
  args = uid=vmail gid=vmail home=/var/vmail/%d/%n/
  driver = static
}

这里我指定 acl 应该通过 vfile (dovecot-acl 文件) 来强制执行

plugin {
  acl = vfile
  [...]
}

在这里我尝试了一个名为帕塔格我不确定我在这里做的是否正确

namespace partage {
  location = maildir:%%h:INDEX=~/%%u
  prefix = shared.%%u.
  separator = .
  type = shared
}

位置还好吗? INDEX 还好吗(我不知道那是干什么用的)

最后,以下是 mail_location 的配置方法。

 mail_location = Maildir:~/

完整配置文件

可以看出粘贴

错误

日志中没有错误,只是我没有想要的行为。

期望的行为是:

在此处输入图片描述

我得到的行为却是:

在此处输入图片描述

答案1

这是我所做的:

$ cd /var/vmail/algerian-radio.dz/a.chaouche/
$ ln -s /var/vmail/backup.algerian-radio.dz/a.chaouche/ .shared.a_chaouche@backup_algerian-radio_dz  <---- change "." to "_"

如果我不改变点,它们将作为 dovecot 的子文件夹分隔符出现(Maildir++ 规格?)

如果你这样做[电子邮件保护]可以做任何他想做的事[电子邮件保护]邮箱。我们不希望这样。我们希望他只阅读邮件,而不是删除它。为此,他需要两个权限:阅读和列表,因为他需要列出电子邮件以选择他想要阅读的邮件。如果他没有列表权限,那么 MUA 在尝试列出收件箱中的所有消息时会出错。

我们通过在想要共享的邮箱中添加 dovecot-acl 文件来实现此目的:

root@messagerie[10.10.10.20] /var/vmail/backup.algerian-radio.dz/a.chaouche # cat dovecot-acl
[email protected] lr
root@messagerie[10.10.10.20] /var/vmail/backup.algerian-radio.dz/a.chaouche #

这说明用户[电子邮件保护]有“l”右边(列表)和“r”右边(阅读)。

您可以使用 acl 工具确保其设置符合预期:

root@messagerie[10.10.10.20] ~ # doveadm acl get  -u [email protected] INBOX.shared.a_chaouche@backup_algerian-radio_dz
ID                                Global Rights
[email protected]        lookup read
root@messagerie[10.10.10.20] ~ #
  1. 无需 SQL 表
  2. 不需要字典映射
  3. 不需要 doveadm acl 命令

您可以阅读更多内容我的维基页面

相关内容