If you ever try to write a email client, you will immediately realize how difficult, if not impossible, to fix all the bugs for a email client. It is a multi-different-protocol-version-async-client-handling-same-database-with-thousands-of-race-condition backwards compatibility nightmare.
Writing a email client with support of just up-to-date protocols and assume it is the single client that will operate that account is trivial, write one that covers all corner cases is a totally different story.
I don't know about the rest, but surely the race conditions are the fault of whoever designed the concurrency part. An email client does not inherently have race conditions.
OK? Sure would be nice to hear why having a second email client talk to the remote server introduces race conditions on the local client (EDIT: that is, race conditions that are the local client's responsibility).
Writing a email client with support of just up-to-date protocols and assume it is the single client that will operate that account is trivial, write one that covers all corner cases is a totally different story.