imap_setacl()
(PHP 4 >= 4.0.7, PHP 5, PHP 7)
Sets the ACL for a given mailbox
说明
imap_setacl(resource $imap_stream,string $mailbox,string $id,string $rights): bool
Sets the ACL for a giving mailbox.
参数
- $imap_stream
由imap_open()返回的 IMAP 流。
- $mailbox
The mailbox name, see imap_open() for more information
Warning
Passing untrusted data to this parameter isinsecure, unlessimap.enable_insecure_rsh is disabled.
- $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。
注释
This function is currently only available to users of the c-client2000 or greater library.
参见
imap_getacl()Gets the ACL for a given mailbox
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;
}I noticed that using: imap_setacl ($conn, $mbox, $userid, "") will act like: "deleteaclmailbox $mbox $userid" (remove the ACL on mailbox for userid).
