Andreas Ntaflos
2007-Jul-28  02:11 UTC
[Dovecot] Shared mailboxes (maildir, symlinks) and permissions
Hello list, I am trying to set up a public mailbox for users to put spam in so that sa-learn can do its job at night. Only I can't seem to fully understand how and which permissions should be set. I've read [1] and am using Dovecot 1.0.1. First some background information: I do not host or care (at the moment) about virtual users or virtual mail hosting. All users have Unix system accounts and shell access. I'd like to have a Spam folder, say /var/mail/public/.Spam that is a maildir where users can put Spam that got through the server-side filter. Spamassassin's sa-learn runs nightly and learns from the contents of the Spam folder. After reading [1] I think I should have under /var/mail/public a file called dovecot-shared that belongs to root:mail and has permissions 0660 (with user dovecot being a member of group mail) so that it looks like this: root at host:/var/mail/public# ls drwxr-sr-x 2 root mail 4096 2007-07-28 03:29 . drwxrwsr-x 3 root mail 4096 2007-07-28 02:19 .. -rw-rw---- 1 root mail 0 2007-07-28 02:46 dovecot-shared root at host:/var/mail/public# The first question arises: should Dovecot have write access to /var/mail/public itself? Now I should create the Spam folder called /var/mail/public/.Spam. Should this directory be in maildir format, i.e. should it already contain the subdirectories cur, tmp and new? What of the permissions of this directory? I am pretty sure Dovecot needs write access to it, so it should look like this: root at host:/var/mail/public# ls drwxr-sr-x 3 root mail 4096 2007-07-28 03:44 . drwxrwsr-x 3 root mail 4096 2007-07-28 02:19 .. -rw-rw---- 1 root mail 0 2007-07-28 02:46 dovecot-shared drwxrwsr-x 2 root mail 4096 2007-07-28 03:44 .Spam root at host:/var/mail/public# The .Spam directory here is completely empty. Now in a user's Maildir (/home/user1/Maildir) there are the user's private folders; a symlink to /var/mail/public/.Spam should be added: root at host:/home/user1/Maildir# ln -s /var/mail/public/.Spam . root at host:/home/user1/Maildir# ls ... drwx------ 5 user1 user1 4096 2007-07-19 16:14 .INBOX.foo drwx------ 5 user1 user1 4096 2007-07-06 23:01 .INBOX.bar ... lrwxrwxrwx 1 user1 user1 22 2007-07-28 03:51 .Spam -> /var/mail/public/.Spam ... root at host:/home/user1/Maildir# Is that all I have to do? Probably not, because I keep getting errors like the following when connecting (after subscribing of course): Jul 28 03:52:35 host dovecot: IMAP(user1): mkdir(/home/user1/Maildir/.Spam/cur) failed: Permission denied Should I have created the cur, tmp and new subdirectories manually and set their permissions like /var/mail/public/.Spam? But that still wouldn't give user1 write access. If I gave the users (or "others": chmod o+w) write permissions then Dovecot's index files would be owned by the first user that connects to the server and uses that folder. Apparently also not a solution. I also don't think I should have to make my users members of the mail group, but I could be wrong here. So I am not sure what I am missing, or if what I want to do is at all possible (without taking out the sledgehammer and setting all permissions to 0777). I also apologise for this lengthy post with many details and little interesting questions. It's getting late and I fear I've reached a dead end. I'd really appreciate it if someone knowledgeable could point me in the right direction here. Thanks in advance! Andreas [1] http://wiki.dovecot.org/SharedMailboxes -- Andreas "daff" Ntaflos Vienna, Austria GPG Fingerprint: 6234 2E8E 5C81 C6CB E5EC 7E65 397C E2A8 090C A9B4 -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 189 bytes Desc: This is a digitally signed message part. URL: <http://dovecot.org/pipermail/dovecot/attachments/20070728/b8dbd0d4/attachment-0002.bin>
Sergey A. Kobzar
2007-Jul-28  08:48 UTC
[Dovecot] Shared mailboxes (maildir, symlinks) and permissions
Hi Andreas,
Check mailing list archives. I asked same questions last week.
My Configuration:
mail_location = maildir:/home/mail/%d/%n
mail_extra_groups = mail
namespace public {
  separator = /
  prefix = Public/
  location = maildir:/home/mail/public
}
namespace private {
  separator = /
  prefix   inbox = yes
}
/home/mail/public/:
total 4
drwx------ 7 mail mail 208 Jul 24 10:25 .
drwx------ 4 mail root 104 Jul 24 10:18 ..
drwx------ 5 mail mail 296 Jul 24 10:52 .Non-Spam
drwx------ 5 mail mail 296 Jul 24 10:33 .Spam
drwx------ 2 mail mail  48 Jul 24 10:18 cur
drwx------ 2 mail mail  48 Jul 24 10:18 new
-rw------- 1 mail mail  14 Jul 24 10:25 subscriptions
drwx------ 2 mail mail  48 Jul 24 10:18 tmp
/home/mail/public/.Non-Spam:
total 28
drwx------ 5 mail mail   296 Jul 24 10:52 .
drwx------ 7 mail mail   208 Jul 24 10:25 ..
drwx------ 2 mail mail    48 Jul 24 10:52 cur
-rw------- 1 mail mail     0 Jul 24 10:13 dovecot-shared
-rw------- 1 mail mail    69 Jul 24 10:25 dovecot-uidlist
-rw------- 1 mail mail   144 Jul 24 10:52 dovecot.index
-rw------- 1 mail mail 16384 Jul 24 10:52 dovecot.index.cache
-rw------- 1 mail mail   460 Jul 24 10:52 dovecot.index.log
drwx------ 2 mail mail    48 Jul 24 10:25 new
drwx------ 2 mail mail    48 Jul 24 10:25 tmp
/home/mail/public/.Spam:
total 32
drwx------ 5 mail mail   296 Jul 24 10:33 .
drwx------ 7 mail mail   208 Jul 24 10:25 ..
drwx------ 2 mail mail    48 Jul 24 10:29 cur
-rw------- 1 mail mail     0 Jul 24 10:14 dovecot-shared
-rw------- 1 mail mail    62 Jul 24 10:25 dovecot-uidlist
-rw------- 1 mail mail   144 Jul 24 10:29 dovecot.index
-rw------- 1 mail mail 17408 Jul 24 10:29 dovecot.index.cache
-rw------- 1 mail mail   460 Jul 24 10:33 dovecot.index.log
drwx------ 2 mail mail    48 Jul 24 10:18 new
drwx------ 2 mail mail    48 Jul 24 10:25 tmp
Everything works nice.
BTW /home/mail/public/ is not a mailbox and must not contain cur new
and tmp folders. As Timo said this bug was fixed in 1.1.
Saturday, July 28, 2007, 5:11:05 AM, you wrote:
> Hello list, 
> I am trying to set up a public mailbox for users to put spam in so that
> sa-learn can do its job at night. Only I can't seem to fully understand
how
> and which permissions should be set. I've read [1] and am using Dovecot
> 1.0.1.
> First some background information: I do not host or care (at the moment)
about
> virtual users or virtual mail hosting. All users have Unix system accounts
> and shell access. I'd like to have a Spam folder, say
/var/mail/public/.Spam
> that is a maildir where users can put Spam that got through the server-side
> filter. Spamassassin's sa-learn runs nightly and learns from the
contents of
> the Spam folder.
> After reading [1] I think I should have under /var/mail/public a file
called
> dovecot-shared that belongs to root:mail and has permissions 0660 (with
user
> dovecot being a member of group mail) so that it looks like this:
> root at host:/var/mail/public# ls
> drwxr-sr-x 2 root mail 4096 2007-07-28 03:29 .
> drwxrwsr-x 3 root mail 4096 2007-07-28 02:19 ..
> -rw-rw---- 1 root mail    0 2007-07-28 02:46 dovecot-shared
> root at host:/var/mail/public#
> The first question arises: should Dovecot have write access 
> to /var/mail/public itself?
> Now I should create the Spam folder called /var/mail/public/.Spam. Should
this
> directory be in maildir format, i.e. should it already contain the 
> subdirectories cur, tmp and new? What of the permissions of this directory?
I
> am pretty sure Dovecot needs write access to it, so it should look like
this:
> root at host:/var/mail/public# ls
> drwxr-sr-x 3 root mail 4096 2007-07-28 03:44 .
> drwxrwsr-x 3 root mail 4096 2007-07-28 02:19 ..
> -rw-rw---- 1 root mail    0 2007-07-28 02:46 dovecot-shared
> drwxrwsr-x 2 root mail 4096 2007-07-28 03:44 .Spam
> root at host:/var/mail/public#
> The .Spam directory here is completely empty.
> Now in a user's Maildir (/home/user1/Maildir) there are the user's
private
> folders; a symlink to /var/mail/public/.Spam should be added:
> root at host:/home/user1/Maildir# ln -s /var/mail/public/.Spam .
> root at host:/home/user1/Maildir# ls
> ...
> drwx------  5 user1 user1 4096 2007-07-19 16:14 .INBOX.foo
> drwx------  5 user1 user1 4096 2007-07-06 23:01 .INBOX.bar
> ...
> lrwxrwxrwx  1 user1 user1  22 2007-07-28 03:51 .Spam ->
/var/mail/public/.Spam
> ...
> root at host:/home/user1/Maildir#
> Is that all I have to do? Probably not, because I keep getting errors like
the
> following when connecting (after subscribing of course):
> Jul 28 03:52:35 host dovecot: IMAP(user1): 
> mkdir(/home/user1/Maildir/.Spam/cur) failed: Permission denied
> Should I have created the cur, tmp and new subdirectories manually and set
> their permissions like /var/mail/public/.Spam? But that still wouldn't
give
> user1 write access. If I gave the users (or "others": chmod o+w)
write
> permissions then Dovecot's index files would be owned by the first user
that
> connects to the server and uses that folder. Apparently also not a
solution.
> I also don't think I should have to make my users members of the mail
group,
> but I could be wrong here.
> So I am not sure what I am missing, or if what I want to do is at all
possible
> (without taking out the sledgehammer and setting all permissions to 0777).
I
> also apologise for this lengthy post with many details and little
interesting
> questions. It's getting late and I fear I've reached a dead end.
> I'd really appreciate it if someone knowledgeable could point me in the
right
> direction here.
> Thanks in advance!
> Andreas
> [1] http://wiki.dovecot.org/SharedMailboxes
-- 
Sergey
On Jul 28, 2007, at 3:47 PM, Sergey A. Kobzar wrote:> > BTW /home/mail/public/ is not a mailbox and must not contain cur new > and tmp folders. As Timo said this bug was fixed in 1.1. >Just for the record, and I realize it's not scheduled to be fixed until v1.1, this is still "broken" in v 1.0.3. Dovecot still creates cur, tmp, and new in /home/mail/public (or applicable, as configured). Doesn't hurt anything but just wanted to make the point.> http://wiki.dovecot.org/SharedMailboxesB. Bodger