[#6052] Shared folders dont show with courier-imap
Summary Shared folders dont show with courier-imap
Queue IMP
Queue Version HEAD
Type Bug
State Duplicate
Priority 1. Low
Owners
Requester rsalmon (at) mbpgroup (dot) com
Created 12/27/2007 (284 days ago)
Due
Updated 12/27/2007 (284 days ago)
Assigned
Resolved 12/27/2007 (284 days ago)
Attachments
Milestone
Patch No

History
12/27/2007 Jan Schneider Comment #2
State ⇒ Duplicate
Reply to this comment
Duplicate of ticket #5988.
12/27/2007 rsalmon (at) mbpgroup (dot) com Comment #1
Queue ⇒ IMP
Summary ⇒ Shared folders dont show with courier-imap
Type ⇒ Bug
Priority ⇒ 1. Low
State ⇒ Unconfirmed
Reply to this comment
I can see/use shared folders just fine with thunderbird but not in IMP.

I login as 'ronan'. The share is made by 'rsalmon' and is 
#shared.rsalmon.test. I was able to create the share from IMP.

I changed the function _getList($path) in imp/lib/IMAP/Tree.php to see 
what's going on :
     function _getList($path)
     {
         $unique = array();

         if (!$this->_showunsub) {
             $this->_initSubscribed();
         }
echo "***begins*** _getList\n";

         $imp_imap = &IMP_IMAP::singleton();
         $newboxes = @imap_getmailboxes($imp_imap->stream(), 
$this->_server, $path);
         if (is_array($newboxes)) {
             foreach ($newboxes as $box) {
                 if ($this->_showunsub ||
                     !isset($this->_subscribed[$box->name])) {
                     /* Strip off server string. */
                     $box = $this->_removeServerString($box);
                     if ($box->name && !isset($unique[$box->name])) {
                         $unique[$box->name] = $box;
                     }
                 }
             }
         }
print_r($unique);
echo "***end*** _getList\n";
         return $unique;
     }



I couldn't see my shares so I change the namespace search in function init() :
        foreach ($this->_namespaces as $key => $val) {
             /* We only need to provide the list of folders in the base
              * personal namespace.  Else, just use the base namespace 
entry. */
             if (($val['type'] == 'personal') || empty($val['name'])) {
                 $query = $val['name'] . '%';
             } else {
                 $query = (empty($val['delimiter'])) ? $val['name'] : 
rtrim($val['name'], $val['delimiter']);
                $query .= '.%';


Now when I login, I get  :
***begins*** _getList
Array
(
     [INBOX.Brouillon] => stdClass Object
         (
             [name] => INBOX.Brouillon
             [attributes] => 64
             [delimiter] => .
             [fullServerPath] => {127.0.0.1:143/imap/notls}INBOX.Brouillon
         )

     [INBOX.Trash] => stdClass Object
         (
             [name] => INBOX.Trash
             [attributes] => 64
             [delimiter] => .
             [fullServerPath] => {127.0.0.1:143/imap/notls}INBOX.Trash
         )

     [INBOX.Spam] => stdClass Object
         (
             [name] => INBOX.Spam
             [attributes] => 64
             [delimiter] => .
             [fullServerPath] => {127.0.0.1:143/imap/notls}INBOX.Spam
         )

     [INBOX.Sent] => stdClass Object
         (
             [name] => INBOX.Sent
             [attributes] => 64
             [delimiter] => .
             [fullServerPath] => {127.0.0.1:143/imap/notls}INBOX.Sent
         )

)
***end*** _getList
***begins*** _getList
Array
(
     [#shared.rsalmon] => stdClass Object
         (
             [name] => #shared.rsalmon
             [attributes] => 34
             [delimiter] => .
             [fullServerPath] => {127.0.0.1:143/imap/notls}#shared.rsalmon
         )

)
***end*** _getList
***begins*** _getList
Array
(
)
***end*** _getList
***begins*** _getList
Array
(
     [INBOX] => stdClass Object
         (
             [name] => INBOX
             [attributes] => 40
             [delimiter] => .
             [fullServerPath] => {127.0.0.1:143/imap/notls}INBOX
         )

)
***end*** _getList
***begins*** _getList
Array
(
     [#shared.rsalmon.test] => stdClass Object
         (
             [name] => #shared.rsalmon.test
             [attributes] => 64
             [delimiter] => .
             [fullServerPath] => {127.0.0.1:143/imap/notls}#shared.rsalmon.test
         )

)
***end*** _getList
***begins*** _getList
Array
(
)
***end*** _getList
<script type="text/javascript" src="/horde/imp/js/popup.js"></script>
<script type="text/javascript" src="/horde/js/prototype.js"></script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"DTD/xhtml1-transitional.dtd">

...


I still can't see shared folders within IMP, but from the debug 
output, I know that IMP is aware of them. This is as far as I can go. 
I really don't know where to look now.


I'm using :
php 5.2.4
courier-imap 4.2.1 (same with 4.3.0)

$servers['imap'] = array(
     'name' => 'IMAP Server',
     'server' => '127.0.0.1',
     'hordeauth' => true,
     'protocol' => 'imap/notls',
     'port' => 143,
     'maildomain' => 'maison.local',
     'smtphost' => '127.0.0.1',
     'smtpport' => 25,
     'realm' => '',
     'preferred' => '',
     'quota' => array(
         'driver' => 'imap',
         'params' => array(),
     ),
     'acl' => array(
         'driver' => 'rfc2086',
     ),
);



Thanks,
Ronan.