Назад | Перейти на главную страницу

Как поделиться папками в Dovecot?

Я перехожу с курьера. Миграция пока работает хорошо, я могу получить доступ к своим maildirs с помощью roundcube, с полностью функциональными фильтрами квот и сита. Теперь мне нужно включить общий доступ к maildir, и я не могу понять, как правильно настроить dovecot, поскольку мои настройки немного отличаются.

Сначала установка

Виртуальные пользователи. Почтовые каталоги находятся в /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:~/

Maildir для a.chaouche выглядит так:

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 # 

Вы можете сказать, что я перехожу с курьера, потому что файлы курьера все еще там, в дополнение к dovecot.

.notifs - это папка, содержащая множество подпапок, таких как .notifs.Webradios, .notifs.Kaspersky и т. д.

Затем папка, к которой я хочу получить доступ

поэтому a.chaouche@domain.tld хочет получить доступ к папке, которая принадлежит 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 # 

Вы видите, я поставил голубятня-acl файл, вот его содержимое:

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

Теперь конфигурация

Здесь я включил плагин acl для lmtp и imap

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
}

расположение в порядке? Индекс в порядке (я не знаю, для чего это)

Наконец, вот как настраивается mail_location.

 mail_location = Maildir:~/

Полный файл конфигурации

можно увидеть в этом вставить

Ошибки

Никаких ошибок в журналах, за исключением того, что у меня нет желаемого поведения.

Желаемое поведение:

Вместо этого я получаю следующее:

Вот что я сделал:

$ 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 ++?)

Если вы сделаете это, то a.chaouche@algerian-radio.dz сможет делать все, что захочет, с почтовым ящиком a.chaouche@backup.algerian-radio.dz. Мы этого не хотим. Мы хотим, чтобы он только читал почту, а не удалял ее. Для этого ему нужны два разрешения: чтение курса и листинг, потому что ему нужно перечислить электронные письма, чтобы выбрать, какое из них он хочет прочитать. Если у него нет разрешения на листинг, MUA получит сообщение об ошибке при попытке перечислить все сообщения в папке «Входящие».

Мы делаем это, добавляя файл dovecot-acl в почтовый ящик, которым хотим поделиться:

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

Это говорит о том, что пользователь a.chaouche@algerian-radio.dz имеет право «l» (перечисление) и право «r» (чтение).

Вы можете убедиться, что он настроен должным образом, с помощью инструмента acl:

root@messagerie[10.10.10.20] ~ # doveadm acl get  -u a.chaouche@algerian-radio.dz INBOX.shared.a_chaouche@backup_algerian-radio_dz
ID                                Global Rights
user=a.chaouche@algerian-radio.dz        lookup read
root@messagerie[10.10.10.20] ~ #
  1. Нет необходимости в таблицах SQL
  2. Нет необходимости в сопоставлениях словарей
  3. Команды doveadm acl не нужны

Вы можете прочитать больше на моя страница вики