O IMAP4 permite o uso de caixas de correio compartilhadas. Portanto, faz sentido ter algum controle sobre os direitos que um usuário tem em uma caixa de correio. Esses direitos são definidos com listas de controle de acesso (ACL). O Cyrus IMAPd usa ACLs para controlar o acesso a qualquer tipo de caixa de correio, seja privada, compartilhada ou pública.
Toda caixa de correio contém uma ACL, que é uma lista de entradas de controle de acesso. Essas entradas consistem em um ID do usuário e os direitos que o usuário tem na caixa de correio específica.
Os direitos são ( RFC4314 ):
l - lookup (mailbox is visible to LIST/LSUB commands, SUBSCRIBE
mailbox)
r - read (SELECT the mailbox, perform STATUS)
s - keep seen/unseen information across sessions (set or clear
\SEEN flag via STORE, also set \SEEN during APPEND/COPY/
FETCH BODY[...])
w - write (set or clear flags other than \SEEN and \DELETED via
STORE, also set them during APPEND/COPY)
i - insert (perform APPEND, COPY into mailbox)
p - post (send mail to submission address for mailbox,
not enforced by IMAP4 itself)
k - create mailboxes (CREATE new sub-mailboxes in any
implementation-defined hierarchy, parent mailbox for the new
mailbox name in RENAME)
x - delete mailbox (DELETE mailbox, old mailbox name in RENAME)
t - delete messages (set or clear \DELETED flag via STORE, set
\DELETED flag during APPEND/COPY)
e - perform EXPUNGE and expunge as a part of CLOSE
a - administer (perform SETACL/DELETEACL/GETACL/LISTRIGHTS)
"c" e "d" são obsoletos a partir da RFC4314 (seção 2.1.1.).
Para administrar as ACLs no cyrus, você pode usar o cyradm:
setaclmailbox shared.questions jenny lrs
listaclmailbox shared.questions
deleteaclmailbox shared.questions jenny
Algumas otimizações:
- Use nomes de comando mais curtos:
sam
,lam
,dam
- Use curingas para caixas de correio:
sam shared.* jenny lrs
- Use qualquer pessoa para definir direitos para todos os usuários:
sam shared.* anyone lrswipkxtecda
- Use todos para permitir tudo:
sam shared.* anyone all
- O prefixo do nome de usuário com um traço pode ser usado para "remover" os direitos de uma caixa de correio:
sam shared.secret -edgar all