I noticed that using:
imap_setacl ($conn, $mbox, $userid, "")
will act like:
"deleteaclmailbox $mbox $userid" (remove the ACL on mailbox for userid).
(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)
imap_setacl — Установка ACL для заданного почтового ящика
Устанавливает ACL для заданного почтового ящика.
imap
Экземпляр IMAP\Connection.
mailbox
Имя почтового ящика, более подробно смотрите в описании imap_open()
Если imap.enable_insecure_rsh не отключён, то передача в этот параметр не проверенных данных не безопасна.
user_id
Идентификатор пользователя, которому выдаются права.
rights
Права для выдачи. Передача пустой строки означает удаление всех прав.
Возвращает true
в случае успешного выполнения или false
в случае возникновения ошибки.
Версия | Описание |
---|---|
8.1.0 |
Параметр imap теперь ожидает экземпляр IMAP\Connection; ранее ожидался ресурс (resource) imap .
|
В данный момент эта функция поддерживается только при использовании библиотеки c-client2000 или более новой версии.
I noticed that using:
imap_setacl ($conn, $mbox, $userid, "")
will act like:
"deleteaclmailbox $mbox $userid" (remove the ACL on mailbox for userid).
After getting the ACL's from imap_getacl you want to set them for a user on any mailbox folder like this:
foreach ( $Folders as $key => $Maildir ) {
imap_setacl($domains , "user/john.doe/".$Maildir , $userid, "lrswipkxte");
}
You can use a form that translates the ACLs like the following (thanks to cyradm manual):
switch ($right) {
case "read" : $aclstring = "lrs";
break;
case "post" : $aclstring = "lrsp";
break;
case "append" : $aclstring = "lrsip";
break;
case "write" : $aclstring = "lrswipkxte";
break;
case "delete" : $aclstring = "lrxte";
break;
case "all" : $aclstring = "lrswipkxte";
break;
case "admin" : $aclstring = "lrswipkxtea";
break;
case "none" : $aclstring = "";
break;
}