Implementing shared folders and bulletin boards ala O'Reilly's "Managing IMAP"

Kevin cyrus at gnosys.biz
Thu Nov 3 09:08:00 EST 2005


Hi List-

I feel like I should know the answer to this/these questions after
having read as much documentation as I now have, but I don't.  I've also
carefully searched the mailing list archives for answers to these
questions but don't see them there either.  I have checked the
documentation included with my cyrus package, but it's not specific
enough to help me past this point.

I'm using cyrus imap 2.2.12 on a gentoo system for virtual domains and
everything works fine.  I'd like to implement some shared folders and
bulletin boards (using the meanings of those concepts from O'Reilly's
Managing IMAP book which I realize is out of date but seems to be the
most complete documentation available for IMAP in general if not the
most accurate because of its age).

As I said, everything works fine for individual private mail boxes for
me in multiple hosted domains.

Specific questions:

1) Is it possible to make a bulletin board folder (with a per-user seen
state) that is accessible to only those users with accounts in the same
virtual domain as the bulletin board?

2) Is it possible to make a bulletin board folder (with a per-user seen
state) that is accessible to only a subset of those users?

3) If yes, exactly how does one go about doing so?

I've read about the postuser setting in imapd.conf.  I'm thinking that
I'll leave this at the default empty string value.  I've read about how
to post messages to such a bulletin board in list archives, but not how
to create the bulletin board in the first place.

O'Reilly's book explains the difference between "Shared Folders" and
"Bulletin Boards" as follows:

from page 167:
"Shared folders and bulletin boards are ordinary Cyrus mailboxes with
ACLs that allow more than one user access to the mailbox.  There is
really not much difference between shared folders and bulletin boards:
they are both Cyrus mailboxes, and both allow users other than the
mailbox owner to access the mailbox with the permissions defined in the
mailbox's ACL."

But...

Shared Folders: "...owned by an individual user who wants to allow other
users access to the mailbox.  An additional feature of a shared folder
is that, other than the "read" flag, it does not retain message state
information that is unique per user.  Message information like deleted
and important is global to all users.  That feature could be useful if
it is desirable to preserve state information across accesses by
different users.  If you use a shared folder for a group of users, such
as a Helpdesk, chances are you will want to preserve the seen and
answered states across sessions, to provide a sort of work flow for the
Helpdesk employees."

Bulletin Boards: "A Cyrus mailbox that is owned by the system, rather
than by an individual user.  Bulletin boards are generally used when it
is desirable to maintain a per-user seen state.  Good uses for bulletin
boards are forums such as Usenet groups and Internet mailing lists."

I'd like to experiment with both of these concepts and I think I know
how to do so with shared folders (create a "user.joesharedfolder" type
top-level mailbox, then create any desired sub-folders under it like
"user.joesharedfolder.public" and then adjust folder ACLs accordingly)
but I have no clue for how to do so with bulletin boards.

O'Reilly's book spends about a page and a half describing how to
implement shared folders and it seems clear enough.  However, it devotes
only a third of a page to implementing bulletin boards and there is
nothing specific in that section at all about creating the mailbox.

I've seen hints in the list archives about creating a mailbox called
"bb.bulletinboard".  Is this "user.X" and "bb.X" syntax important to
Cyrus imapd?  I've always created mailboxes with "user." as the prefix
to any user's inbox and whatever follows the dot is the username and
email address (without the @domain.com of course).  Never tried anything
else because I've never seen that described in any other way.

Can someone give me some specific detailed information on creating a
bulletin board (rather than a shared folder as defined herein)?  Maybe
even including cyradm commands?  Along the same lines, could folks share
examples of how they are using these two different concepts in their
organizations?

I want to make a public folder (or several; either shared folders or
bulletin boards) for a number of different uses, and I may want per-user
state information or I may not want per-user state information depending
on which use I have in mind, but the implications of that distinction
seem at least a little bit subtle to me.  When O'Reilly says that
"shared folders" have message states (like deleted or important) that
are global to all users, I wonder what else is global.  Is it only the
"seen" message state that is different for each user with shared folders
or some other states as well?  I realize that specific answer is
addressed by the book (and included above) but that's also five years
old now.  I can't help but wonder if these concepts have changed a
little bit in that time in the imapd implementation.  And if it is only
the "seen" state that is per-user unique, how are people using that?  In
a Helpdesk group as the book writes about?  Other uses too?  I have the
same questions about bulletin boards.  Exactly which message states are
global and which are unique per user?  Is every message state unique per
user with bulletin boards?  That seems to be what O'Reilly is saying but
again, that's very old information.  And how are people using bulletin
boards?

Also, do I need to make sure my imapd.conf has some specific parameters
present in it for this to work or is simply creating the mailboxes and
adjusting ACLs enough?

And then, just to make sure I understand, what are all of the ways that
one can get a message into such a folder?  Is copying and/or moving a
message from one mailbox (in a MUA) to this public folder going to work?
(I would expect that it would using the IMAP command set)?  Can one also
do so using a MTA such as sendmail or postfix?  If so, what address
should be in the "To: " field for this to work?  Say the mailbox created
was: "bb.MyBulletinBoard"  What address would I use to post to that
using an MTA like postfix?

Sorry for the length.

Many thanks in advance for any replies.

-Kevin





More information about the Info-cyrus mailing list