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).