I noticed that using:
imap_setacl ($conn, $mbox, $userid, "")
will act like:
"deleteaclmailbox $mbox $userid" (remove the ACL on mailbox for userid).
PHP - Manual: imap_setacl
2024-12-22
(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)
imap_setacl — Sets the ACL for a given mailbox
$imap
,$mailbox
,$user_id
,$rights
Sets the ACL for a giving mailbox.
imap
IMAP\Connection 实例。
mailbox
The mailbox name, see imap_open() for more information
Passing untrusted data to this parameter is insecure, unless imap.enable_insecure_rsh is disabled.
user_id
The user to give the rights to.
rights
The rights to give to the user. Passing an empty string will delete acl.
成功时返回 true
, 或者在失败时返回 false
。
版本 | 说明 |
---|---|
8.1.0 |
现在 imap 参数接受 IMAP\Connection
实例,之前接受 资源(resource)。
|
This function is currently only available to users of the c-client2000 or greater library.
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;
}