Known bugs in the Cyrus IMAP Server
imapd and core utilities
- Multiple APPENDs don't always correctly return the EXISTS
response. (can't reproduce?)
- Particularly large quotas can wrap around.
- The RENAME command is not atomic.
- RENAMEing INBOX doesn't work correctly. (important!)
- In general, renaming an mailbox to be a subset of itself should
be checked for and disallowed.
- append.c: doesn't set the \Seen flag if the client requests it.
- MULTIAPPEND: does it do the right thing with an aborted APPEND
(literal length {0})?
- reconstruct doesn't deal with the mailboxes.db file.
- DELETE and deleting user mailboxes.
- we should deal with having to reset UIDs
- the algorithm used for naming stage files is fragile and not
threadsafe.
- during appendstage(), the message is parsed once per delivery,
not once at the beginning.
- master process should accept a SIGHUP and reread
configuration file on the fly.
- master should pay attention to processes that have told
it they are listening, and make sure they don't die abnormally.
likewise, it should be on the lookout for continually forking
services.
- master should probably have a babysitting service
("always keep this process running").
proxyd and Cyrus Murder
- proxyd doesn't support ID.
- proxyd doesn't advertise ACAP=.
- COPY across servers isn't tested and isn't robust.
- RENAME across servers isn't implemented (less severe).
- Tagged lines with literals can cause problems for proxyd.
- acappush doesn't seem to deal with the ACAP server dying
well.
- acappush: should we be avoiding some ACAP round trips?
do we have any concerns speed-wise? what about out-of-memory
situations?
- proxyd should deal with errors more cleanly in
proxy_authenticate() and with backend servers overall.
- target-acap doesn't work on ignoring zero-information
updates. it doesn't deal with the ACAP server dying and in general
should be replaced with something more general.
- is proxyd implementing idle timeouts correctly?
lmtpd, deliver, and sieve
- 8-bit set characters are coerced to 'X', but not before the notify_zephyr
code (if used) has had a chance to send them out.
- Deliver does not handle messages containing NUL properly due to
stdio problems (the characters between the NUL and the LF will be
lost.)
- Deliver doesn't gracefully handle CR CR sequences in messages.
Well, ok, it hangs.
- duplicate.c could be much more efficient than repeatedly
opening and closing databases. (Cache last N databases used?)
- Should duplicate.c use transactions? A single file?
authentication and authorization
- Using AFS groups with ptclient, users with negative rights as part of
groups may be granted access to mailboxes if ptclient has died. We plan
to have this fixed eventually.
- In some failures of the krbck program, the error messages printed out
bear no resemblance to what actually went wrong.
other utilities
- cyradm may need to change authname/username stuff.
Something to check.
- imtest: it would be nice for the authorization name to
default to the authentication name, except when specifically
overridden.
- collectnews's routines in append.c are broken.
either remove collectnews or fix it.
- any utilities doing db operations should catch signals and poll
for them to see if it should exit.
- it would be nice if cyradm had a version command (would
do an ID against the server).
- deliver: should look for AUTH capability instead of just assuming
it. possibly do LMTP over TCP? full SASL authentication?
Things we want to do
- Implement the IMAP VIEW extension.
- Implement the IMAP SORT and THREAD extensions.
- Implement the IMAP ANNOTATE extension.
- Implement some sort of backup/restore system that's more
efficient and easier to use than Amanda on the filesystem.
- Add mailbox version numbers.
- Add mailbox tombstones (gives NEWNAME support).
- Design and implement ALIST, the advanced list command.
- Investigate changing from the prot layer to using sfio.
- Write a test module for lmtp-parse.
Please refer to Sending Feedback if you
would like to submit a bug, feature request or (best of all) patch.
Last update: $Date: 2000/05/30 01:52:13 $
Return to the Cyrus IMAP Server Home Page