[dev] Anybody else experience this namespace bug?

Michael J Rubinsky mrubinsk at horde.org
Mon Apr 11 14:34:59 UTC 2016


Quoting Quinn Comendant <quinn at strangecode.com>:

> Hello horde-dev,
>
> I have had difficulty setting the IMAP path prefix in horde webmail  
> 5.2 on a CentOS 6 server running Courier-IMAP 4.1.2. When creating  
> folders I was getting the error, "The mailbox 'New folder' was not  
> created. This is what the server said: IMAP error reported by server."
>
> The imp_imap debug log shows that it is trying to create folders
> without the `INBOX.` prefix, which I think is the reason it is failing:
>
> 	S: * OK [CAPABILITY IMAP4rev1] Courier-IMAP ready. Copyright 1998-2005
> 	Double Precision, Inc.  See COPYING for distribution information.
> 	C: 1 LOGIN quinn at example.com [PASSWORD]
> 	S: 1 OK LOGIN Ok.
> 	C: 2 LSUB "" New folder
> 	S: 2 OK LSUB completed
> 	C: 3 LIST "" New folder
> 	S: 3 OK LIST completed
> 	C: 4 CREATE New folder
> 	S: 4 NO Invalid mailbox name.
> 	C: 5 LOGOUT
> 	S: * BYE Courier-IMAP server shutting down
> 	S: 5 OK LOGOUT completed
>
> I *am* able to create a folder if I manually include the IMAP prefix
> to its name, i.e. I go to Folder Actions > Create Mailbox and then use
> a folder name literally as `INBOX.New folder`. The new folder is created
> with that name literally and `INBOX.New folder` is created on the server and
> is displayed in IMP's sidebar. =\
>
> As far as I can tell, this is configured using the 'namespace' option
> in backends.local.php, but I have tried the following variations with
> no success:
>
>      'namespace' => array('INBOX.')
>      'namespace' => array('#INBOX.')
>      'namespace' => array('INBOX/')
>      'namespace' => array('#INBOX/')
>
> I believe the correct method of setting the IMAP path prefix is to  
> define the following in backends.local.php:
>
>     'namespace' => array('INBOX.'),
>
> However, that alone has not solved the problem. I may have found  
> issues with horde/imp or our server configuration. Now, even with  
> the namespace specified thusly, IMP is still sending IMAP commands  
> without the namespace (i.e., `CREATE New folder` instead of `CREATE  
> INBOX.New folder`).
>
> I have read the source code of horde/imp and found the following  
> changes were required for this to work:
>
> ## /var/www/html/horde/imp/lib/Imap.php : 474
>
> The `getNamespace()` function defined here would return null when  
> the specified mailbox was the default, despite  
> `$this->getNamespaces()` returning a valid result. To solve this I  
> added the following at line 474:
>
>     if ($mailbox === self::NS_DEFAULT && $ns->count() == 1) {
>         return end(end($ns));
>     }
>
> ## /usr/share/pear/Horde/Imap/Client/Base.php : 742
>
> Here, the name of the namespace is an array and would result in an  
> array-to-string conversion, with the resulting namespace name  
> `Array` instead of the correct name `INBOX`. I've added a tertiary  
> clause to test if it is an array before assigning the value.  
> Secondly, the namespace name lacking the delimiter would result in  
> the use of folder names such as `INBOXNew folder` instead of  
> `INBOX.New folder` (because in other parts of the code where the  
> namespace is used the namespace is concatenated with the folder name  
> with no delimiter), so I added the delimiter to the name here. The  
> following is a modification of line 742:
>
>     $ob->name = (is_array($val) ? end($val) : $val) . $val['delimiter'];
>
> With these two changes, horde/imp is now successfully creating  
> folders, displaying folders, auto-creating special folders, and  
> moving messages between folders. The IMAP transactions now send the  
> prefix correctly:
>
> 	S: * OK [CAPABILITY IMAP4rev1] Courier-IMAP ready. Copyright  
> 1998-2005 Double Precision, Inc.  See COPYING for distribution  
> information.
> 	C: 1 LOGIN q at asdf.com [PASSWORD]
> 	S: 1 OK LOGIN Ok.
> 	C: 2 LIST "" INBOX.
> 	S: * LIST (\Marked \HasChildren) "." "INBOX"
> 	S: 2 OK LIST completed
> 	C: 3 LSUB "" "INBOX.New folder"
> 	S: 3 OK LSUB completed
> 	C: 4 LIST "" "INBOX.New folder"
> 	S: 4 OK LIST completed
> 	C: 5 CREATE "INBOX.New folder"
> 	S: 5 OK "INBOX.New folder" created.
> 	C: 6 LSUB "" "INBOX.New folder"
> 	S: 6 OK LSUB completed
> 	C: 7 LIST "" "INBOX.New folder"
> 	S: * LIST (\HasNoChildren) "." "INBOX.New folder"
> 	S: 7 OK LIST completed
> 	C: 8 LOGOUT
> 	S: * BYE Courier-IMAP server shutting down
> 	S: 8 OK LOGOUT completed
>
> If I have discovered bugs in horde/imp 5.2, please let me know how  
> best I can contribute these changes (pull request on github?) or if  
> you believe this is a problem with my Courier IMAP configuration, I  
> would appreciate some help identifying if that may be the case.
>
> Attached is IMP's imap log output during a successful folder  
> creation operation (also so you can see imap capabilities, etc).
>
>
> Regards,
>
>
> Quinn
> --
> dev mailing list
> Frequently Asked Questions: http://wiki.horde.org/FAQ
> To unsubscribe, mail: dev-unsubscribe at lists.horde.org

I haven't had time to verify or look at this yet. Please add a ticket  
to bugs.horde.org so it doesn't get lost.



-- 
mike
The Horde Project
http://www.horde.org
https://www.facebook.com/hordeproject
https://www.twitter.com/hordeproject
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5751 bytes
Desc: S/MIME Signature
URL: <http://lists.horde.org/archives/dev/attachments/20160411/27ccef12/attachment.bin>


More information about the dev mailing list