Using GNOME Evolution with a huge IMAP mailbox

Update: The latest development snapshot of Opera 9.5 has full support for virtual folder with powerful filter which supports a regular expression. Let’s give it a try! Adding GPG signing and better multiple identity support would be an icing on the cake.

I’ve been struggling with various mail clients to deal with my huge IMAP mailbox which contains about 200k messages. I didn’t want to split it into more than one. It’s not my job but an e-mail client’s job; see what GMail does!

Although Opera Mail does a great job on dealing with such a big IMAP mailbox, it lacks a couple critical features which make me have a difficulty in organizing my messages. I have missed Evolution virtual folders especially.

However, all other GUI/Web-based e-mail clients than Opera Mail are very poor at dealing with a huge IMAP mailbox. It seems like IMAP support is not a high priority task for most e-mail clients in the world. The latest alpha version of RoundCube seems to be very efficient but it lacks too many features at this moment.

Before I give up again and stick to Opera Mail, I decided to give a try to various IMAP-to-Maildir synchronization tools – isync and OfflineIMAP. Long time agao, I had a bad experience with OfflineIMAP and it seems like it doesn’t work with my account yet. By contrast, isync was indeed a great tool which does its job without any problem.

One problem with isync is that its configuration file format is somewhat undocumented, so I’d like to share my settings:

# ~/.mbsyncrc
MaildirStore Local
Path ~/.maildir
Inbox ~/.maildir

IMAPStore Remote
Host <hostname>
User <username>
Pass <password>
CertificateFile ~/.mbsync.crt

Channel Local-Remote
Master :Remote:
Slave :Local:
Create Slave
Sync All

You also need to set up your crontab to run mbsync periodically because Evolution doesn’t provide an option to execute a command before refreshing the local Maildir. Here’s my crontab:

*/5 * * * * pgrep -f "^(/usr/bin/)?evolution" > /dev/null && mbsync -a -q

Please note that I used pgrep to make sure mbsync runs only when Evolution is running.

Finally, I succeeded to make Evolution run pretty fast with my IMAP mailbox, although it’s a kind of workaround. However, I don’t think this is a ugly hack. Considering that Opera Mail stores my all messages in its local storage, what Evolution does for the local Maildir is very similar to what Opera Mail does. It creates a full text index for all messages and maintains the index for every message operation. What’s missing is immediate mailbox synchronization based on IMAP notification, and it shouldn’t be difficult to be integrated into Evolution codebase IMHO.

PS: I had a difficulty searching for isync because Apple has a product with the same name. The actual executable of isync is mbsync, so try this google search.

12 Comments Using GNOME Evolution with a huge IMAP mailbox

  1. c.m.

    imho, Opera was one of the first mail clients supporting that thing you call “virtual folders”. It’s called “filters” (in the Email menu) and does what the evolution virtual folders page describes (back since Opera 7.5 i think).
    Haven’t you seen this or is there anything else wrong with it so you can’t use it?

  2. Trustin Lee

    I’m not sure about the earlier versions of Opera, but the filters in Opera 9.5 was not really a virtual folder.

    You can move any messages which doesn’t meet the filter condition to a filter folder. Also, changing filter condition doesn’t change the previous content of the filter folder. I think Opera maintains a filter folder just like a traditional folder is maintained.

    Also, it has limited filter expression. It’s better than that of Thunderbird IIRC, but it’s not comparable to that of Evolution which allows a user to specify a complicated LISP-like expression.

  3. c.m.

    yes, you can move messages to a filter without the message matching that filter, but why doing it if you don’t like it? I consider this as a very useful feature.
    It’s true that if you change the filter, it doesn’t get re-applied automatically, but you can do so by selecting all messages and “remove from filter” and then choosing “filter existing messages” from the filter properties (do you really change your filters often?).

    What do you consider “limited” in Operas filter expressions? It fully supports regular expressions as filter which enables you to filter for anything you want – with less parentheses 😉

  4. Trustin Lee

    @c.m: Yes, there’s advantage of using a filter folder certainly. I think they are complementary to each other IMO. I prefer a virtual folder whenever possible though. 🙂

    The biggest difference between a filter and a virtual folder is that a message appears in more than one folder and marking it as read makes all same messages in other folders marked as read as well. Opera’s filter folder is somewhere between them. It allows me to see messages in more than one folders, but marking one of them as read doesn’t change the status of other copies. Virtual folder doesn’t have such a problem because it’s fully virtual. I reported this as a bug to Opera team, but I’m not sure it has been fixed. Please let me know if you had a different experience.

    BTW, thanks for correcting me about the power of Opera’s regex support. I didn’t use Opera filters for too long time!

  5. Trustin Lee

    @c.m: I’ve just installed the latest development snapshot of Opera 9.5 (LINUX 2084) and found the behavior of a filtered folder has been changed. It’s fully virtual now! I had to double-check before I switch.

    Sorry about all the confusion!

  6. fwiffo

    Have you tried Balsa?

    I personally use sylpheed, though me needs are nothing compared to yours 😉

  7. c.m.

    i’ve been using M2 since it came out with Opera 7.x and i never experienced that a message displayed in a filter was “decoupled” from its real location – e.g. when i marked a message as read, it was marked as read in all views/folders/whatever. I.e. in my opinion it was always what you described as “fully virtual” – in fact this feature was called “views” in previous versions. May it been that you used a beta version of Opera for your first tests?

    I don’t use filters as much as I used to since i found out about the “contacts” sidebar which displays filter for every person you were in contact with – since this list is filterable as well, you can find conversions pretty fast.

  8. Trustin Lee

    @c.m: Yes, I tried Opera 9.5 from its early stage of development because I wanted 64-bit binary. Maybe they have fixed the problem since someone or I reported that issue.

    Thanks for the heads up!

  9. Mahmoud Parsian

    Hi Trustin,

    I saw that you have been involved with MINA and Netty.

    1) Are the solving the same problem?

    2) which one is better?

    3) Is Mina 2.0.0-M3 stable for production?

    Many thanks in advance.


  10. Trustin Lee

    @Mahmoud Parsian: Hi Mahmoud!

    1) Yes. I don’t work on MINA anymore for some personal reason.
    2) Netty is better.
    3) MINA 2 API is unstable and will be refactored in the near future. Netty has stable API.


Comments are closed.