Closed
Bug 303125
Opened 20 years ago
Closed 17 years ago
Thunderbird mangles IMAP server directory path string
Categories
(Thunderbird :: General, defect)
Tracking
(Not tracked)
RESOLVED
INCOMPLETE
People
(Reporter: MySpammyMail, Assigned: mscott)
Details
(Whiteboard: closeme 2008-08-21)
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.2
Build Identifier: Thunderbird 1.0.2 (20050317)
We are running uw-imap server. By convention, users' mail folders are stored on
the server in "~/Mail/". This is set in the Thunderbird mail account property
named "Imap server directory" (via the dialog box at:
Account Settings->Server->Settings->Advanced Account Settings->IMAP(tab)),
either using the absolute path "~/Mail/" or the relative path "Mail" (Either way
should work). Thunderbird sometimes mangles the path string, converting slash
characters (/) into pipe characters (|). For example, ~/Mail/Sent becomes
~|Mail|Sent, or Mail/Trash becomes Mail|Trash.
I have examined the problem using Thuderbird 1.0.2 on Windows XP in a simple and
reproducible test scenario. However, we have encountered many variations of
this problem in a variety of real-life scenarios, involving various versions of
Thuderbird clients and Mozilla mail clients, in combination with various
versions of uw-imapd, in various configurations.
Reproducible: Always
Steps to Reproduce:
1. Create a new user acount on a mail server running uw-imapd. The new account
skeleton has an empty "~/Mail/" directory. Initially, .mailboxlist does not exist.
2. Create a new imap user account in Thuderbird, with the following properties:
Imap server directory: ~/Mail/ (or, alternatively, just "Mail")
Show only subscribed folder: CHECKED
Server supports folders that contain subfolders and messages: UNCHECKED
Use idle commnad if server supports it: CHECKED
Allow server to override the name spaces: UNCHECKED
3. Connect to server and attempt to create or access folders on the server.
Actual Results:
Upon initial connection, TB attempts to create a Trash folder on server. Upon
sending a message, TB attempts to create a Sent folder on server. But the path
sent in the IMAP CREATE command is mangled. Therefore, the server either fails
to create folder or else creates folder with incorrect path/name.
More specifically, TB translates slashes (/) into pipes (|), and so attempts to
create folder names like "~|Mail|Sent" (if using tilde path) or "Mail|Sent" (if
using relative path).
Expected Results:
TB should have created the directories in their proper paths, ie. ~/Mail/Trash, etc.
Here is the exchange which follows the initial authentication (from tcpdump):
UW-IMAPD -> Thunderbird IMAP Response: 2 OK [CAPABILITY IMAP4REV1 IDLE
NAMESPACE MAILBOX-REFERRALS BINARY UNSELECT SCAN SORT THREAD=REFERENCES
THREAD=ORDEREDSUBJECT MULTIAPPEND] User testuser authenticated
Thunderbird -> UW-IMAPD IMAP Request: 3 lsub "" "~/Mail/*"
UW-IMAPD -> Thunderbird IMAP Response: 3 OK LSUB completed
Thunderbird -> UW-IMAPD IMAP Request: 4 list "" "INBOX"
UW-IMAPD -> Thunderbird IMAP Response: * LIST (\NoInferiors) NIL INBOX
Thunderbird -> UW-IMAPD IMAP Request: 5 list "" "~|Mail|Trash"
UW-IMAPD -> Thunderbird IMAP Response: 5 OK LIST completed
Thunderbird -> UW-IMAPD IMAP Request: 6 create "~|Mail|Trash"
UW-IMAPD -> Thunderbird IMAP Response: 6 NO CREATE failed: Can't create
~|Mail|Trash: invalid name
My explanation of the above: Thunderbird initially queries subscription list
(lsub) using the correct server path "~/Mail/*". This being a newly created
account, the server correctly returns nothing (i.e., ~/Mail/* is empty).
Thunderbird apparently doesn't like this response, and so Thunderbird mangles
the the server path string to ~|Mail|, and continues to use this mangled path
string for all subsequent communications with server, causing subsequent
commands to fail.
For comparison, I created another test case, the only differnce being that I
manually edited the uw-imap subscription list file, .mailboxlist, adding the
fake entry "~/Mail/nonexistentfolder". The ~/Mail/ directory is still empty, as
before. Compare:
UW-IMAPD -> Thunderbird IMAP Response: 1 OK [CAPABILITY IMAP4REV1 IDLE
NAMESPACE MAILBOX-REFERRALS BINARY UNSELECT SCAN SORT THREAD=REFERENCES
THREAD=ORDEREDSUBJECT MULTIAPPEND] User testuser authenticated
Thunderbird -> UW-IMAPD IMAP Request: 2 lsub "" "~/Mail/*"
UW-IMAPD -> Thunderbird IMAP Response: * LSUB () "/" ~/Mail/nonexistentfolder
Thunderbird -> UW-IMAPD IMAP Request: 3 list "" "INBOX"
UW-IMAPD -> Thunderbird IMAP Response: * LIST (\NoInferiors) NIL INBOX
Thunderbird -> UW-IMAPD IMAP Request: 4 list "" "~/Mail/Trash"
UW-IMAPD -> Thunderbird IMAP Response: 4 OK LIST completed
Thunderbird -> UW-IMAPD IMAP Request: 5 create "~/Mail/Trash"
UW-IMAPD -> Thunderbird IMAP Response: 5 OK CREATE completed
Thunderbird -> UW-IMAPD IMAP Request: 6 subscribe "~/Mail/Trash"
UW-IMAPD -> Thunderbird IMAP Response: 6 OK SUBSCRIBE completed
Thunderbird -> UW-IMAPD IMAP Request: 7 list "" "~/Mail/Trash"
UW-IMAPD -> Thunderbird IMAP Response: * LIST (\NoInferiors \UnMarked) "/"
~/Mail/Trash
This time the server responds to the initial lsub query, returning the fake
folder name. Thunderbird is happy and goes on to create the Trash folder in the
proper (~/Mail/) directory.
So these test cases show clearly the nature of the problem in a simple,
reproducible scenario involving a newly created user account, but the problem,
unfortunately, is more pervasive. (If the problem were only in creating new
user accounts, the above findings suggest a simple work-around.) We also
encounter the same path-mangling in other common situations: (1) When migrating
a user to a new desktop PC and reconnecting to his existing imap server account
(2) in deployment testing of a new, upgraded mail server, when we migrate users
mail accounts to the new mail server and connect from existing clients. In
these cases, when the user attempts to access an existing mailbox, he gets a
message like:
"The current command did not succeed. The mail server responded: SELECT failed:
Can't open mailbox ~|Mail|Sent: no such mailbox."
So the common thread here is that the server path has been mangled, and so the
folder (in this case a real, existing folder) cannot be accessed. I have not
yet had the opportunity to analyze these cases in depth, but from what I know
now, I am guessing it might also have something to do with the contents of the
server subscription file, or more precisely, Thunderbird's pathological response
to what is being returned by the lsub command.
It would seem that Thunderbird's refresh function (i.e., the "refresh" button
from Thunderbird's "Subscribe" dialog box) ought to be able to sort out any
discrepancies between the subscription list and what actually exists in the
server directory path, but I have observed that, when refreshing, Thunderbird
also queries the server using the mangled path, so nothing is found, and so the
"refresh" function is quite useless.
So in summary, I have experienced a variety of problems resulting from TB
mangling the server directory path string by translating slash (/) characters to
pipe (|) characters, and I have described a detailed test scenario for observing
this bug in one of its various manifestations.
Richard Ketcham
Mail Administrator
U.W. Dept. of Chemistry
Related to Suite bug 215909?
Updated•18 years ago
|
QA Contact: general
Comment 2•17 years ago
|
||
Reporter, does the issue still exist in the latest supported 2.0.0.x / Shredder trunk nightlies?
(1.5.0.x is now end-of-life and the latest 2.0.0.x is version 2.0.0.16)
Whiteboard: closeme 2008-08-21
Comment 3•17 years ago
|
||
RESO INCO per lack of response to previous comment. If you feel this change was made in error, please respond to the bug with your reasons why.
Status: UNCONFIRMED → RESOLVED
Closed: 17 years ago
Resolution: --- → INCOMPLETE
You need to log in
before you can comment on or make changes to this bug.
Description
•