Why Cyrus?

Binarus lists at binarus.de
Thu Jan 18 03:13:14 EST 2018

On 17.01.2018 11:56, Paul van der Vlis wrote:

> A new customer asks me to build a new mailserver environment with
> Dovecot. I normally use Cyrus.
> My question: What's better in Cyrus?

Please note that what I am reporting here has happened some years ago,
so the situation may be different now. Nevertheless, it may show you a
problem which you probably would not have thought of.

Some years ago, there was some sort of Dovecot hype, so we decided to
give Dovecot a try as IMAP server for our small company environment. I
found the setup to be more complicated than Cyrus' (maybe just because I
were used to the latter).

We were using Thunderbird as IMAP client software, and we were using a
large public IMAP structure. So everybody had access to their personal
mailbox with all privileges, and had access to the public namespace with
certain privileges. Most users had only read and "add" access to the
public namespace (i.e. could read and add messages and folders, but
could not delete them), but a few users were allowed to delete as well.

Now there was the following problem:

When you are running Thunderbird in default configuration, and you try
to delete a message, then it technically *moves* that message from the
folder where it currently resides into the *trash folder of the mailbox
of the user who is deleting that message*.

Thus, when deleting a message from the public tree, Thunderbird tries to
move that message from the respective folder in the public namespace to
a user's personal trash folder. In other words, it tries to move that
message from one namespace to another one (i.e. from the public
namespace to the normal user mailbox namespace).

This is a thing Dovecot was not able to do at that point in time. Every
time we wanted to delete a message from the public tree (namespace), we
got an error message saying that it couldn't move messages between
different namespaces (please forgive me that I really can't remember the
exact wording, it *really* happened several years ago).

Given Thunderbird's market share, this was ridiculous. Being able to
smoothly delete messages from the public namespace with *any* email
client is a sine qua non. Therefore, after playing around for some days
and trying to solve that problem, we dumped Dovecot and have never tried
it again since then.

Please note that we of course know that

1) We could Thunderbird have messages delete immediately (i.e. finally)
instead of moving them to trash, and that this would have solved that

However, moving messages and folders to trash instead of immediately
deleting them has its advantages, and it has its reasons that this is
the default behavior for most major email clients.

2) There are other email clients (as far as I can remember, Outlook was
one of them) where deleting messages and folders from the public
namespace and putting them into trash was no problem (such clients
technically do not move the message or folder, but "simulate" moving by
first *copying* the message or folder into trash and then deleting it
*immediately and finally* from its original location).

However, we expect our IMAP server to be compatible with *all*
reasonable clients and all basic IMAP commands, including moving
messages. In fact, we have changed our email client software several
times since then (currently using Thunderbird again) while our IMAP
server software always stayed the same: Cyrus IMAPd.

*Summary / What to learn from that experience:*

Surprisingly, we can definitely confirm that several years ago Dovecot
was seriously misbehaving with one of the most common email clients,
while it worked with other ones. The misbehavior did not concern some
exotic action or software, but a very common action (delete messages and
folders from the public namespace) with a very wide-spread client
software (Thunderbird).

I do not know if this is still the case, but this experience shows that
you should test *every possible client software* you (the customer)
could use with Dovecot, and that you should set up all IMAP features and
test if any actions you will carry out in the future will work.

For example, you should set up some normal user mailboxes, set up a
public tree (namespace) with several nested subfolders, assign different
access rights to them, set up a shared namespace (shared mailboxes - do
not confuse them with public folders), try to move and copy folders and
messages between them, and try to delete messages and folders from any
of them.

Do these tests with as many different email clients as you can.

For us, none of those tests failed when Cyrus IMAPd was the IMAP server.

Just my two cents ...



P.S. The problem described above technically is not limited to deleting
messages; as explained above it will occur every time a message will be
*moved* (in an IMAP sense) between different namespaces, meaning that it
might occur during the most basic actions (like moving a message from
your personal mailbox to the public tree (namespace)). As with deleting,
moving messages will be simulated by "copy-then-delete" by certain IMAP
clients which prevents the problem.

More information about the Info-cyrus mailing list