[PATCH] Syncing gmail labels for gmail accounts

Rainer M Krug R.M.Krug at gmail.com
Mon Nov 26 12:20:55 GMT 2012


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 25/10/12 20:33, Abdó Roig-Maranges wrote:
> 
> Hi,
> 
> I've been trying to find a good way to sync gmail labels (and use them in the email client) for
> some time now. My system up until now involved syncing labels into an external file, and using
> a lot of glue scripts to keep them in sync, update notmuch tags, etc. Very messy.
> 
> I've now decided to try a different approach, which seems pretty close to the right one. I've
> added support in offlineimap to sync gmail labels, and store them inside the messages, under
> the header X-Keywords. This way, the labels "move with the messages" (even if I copy the
> maildir to an other machine, etc etc).
> 
> There are some MUA that even recognize to some degree the X-Keywords header or a close
> relative, X-Label [2]. It seems mutt supports X-Label [3] and mu supports both [4].
> 
> I've been happily using this approach, with mu/mu4e as my MUA / indexer, for a week now. So
> here I attach a couple of patches (against current master) which do the following (see the
> individual commits for more details).

This sounds really interesting. Is there a chance that this will be inclded in the nest release of
offlineimap, as I think this would be a very useful feature.

Thanks a lot,

Rainer


> 
> bugfixes.patch :
> 
> 1. fixes a couple of easy bugs I found. It must be applied first, and is independent of the
> rest.
> 
> 
> gmail-labels.patch:
> 
> 2. When a message goes out of gmail, adds a header X-Keywords with a comma separated list of
> labels.
> 
> 3. Updates the LocalStatus Sqlite table to include columns for labels and local mtimes. For
> non-gmail repositories these columns are ignored.
> 
> 4. When labels change on the gmail side, syncs them the same way as flags get synced (comparing
> with LocalStatus etc)
> 
> 5. Adds a GmailMaildir folder type, which keeps track of individual message modification times
> (the POSIX mtime), and uses it to spot messages which have been modified locally. Then, only
> for those modified messages (typically very few), reads the labels and syncs them back to
> gmail, the same way as flags.
> 
> 6. Adds an option to filter out certain headers when uploading messages to gmail. One may want
> to remove X-Keywords before sending a message back to gmail.
> 
> 7. Adds an option to ignore certain labels, like \Draft, for which flags serve the same
> purpose. Gmail internally keeps the D flag in sync with the \Draft label, or the F flag with
> the \Starred label.
> 
> 
> Some comments:
> 
> 1. These changes (which are quite a few) should interfere minimally with non-gmail users. The
> only exception is the update on LocalStatus sqlite table, which I hope will cause little
> trouble.
> 
> 2. There are some issues with the SQLite backend. Right now, it commits to the database too
> frequently IMHO (after every message copy). This produces a lot of disk activity. I may look
> into it... my approach would be storing the status in memory during the message copying and
> commit to database once, at the end. Any thoughts? I don't think there is danger of losing
> data, on crashes. The LocalStatus will be updated correctly on the next run.
> 
> 3. The slower part is folder.Gmail.cachemessagelist, that downloads the uids and labels for all
> messages. It takes about 17 seconds with about 25k moderately labelled messages. I have done
> some experiments with multiple threads without improvement. My guess is that on the gmail side
> there is some sort of bandwith throttling. Not even compressing the connection improves
> matters.
> 
> Well, that's it. I send this patch hoping some developer here may take the time to look at it.
> Being able to use and sync labels with the web interface or mobile would be a very nice
> addition for which, as far as I know, there is no alternative solution out there.
> 
> 
> [1] http://comments.gmane.org/gmane.mail.imap.offlineimap.general/5916 [2]
> http://does-not-exist.org/mail-archives/mutt-dev/msg08249.html [3]
> http://blitiri.com.ar/p/other/mutt-labels/ [4] https://github.com/djcb/mu/issues/40
> 
> Abdó.
> 
> 
> 
> _______________________________________________ OfflineIMAP-project mailing list 
> OfflineIMAP-project at lists.alioth.debian.org 
> http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/offlineimap-project
> 
> OfflineIMAP homepage: http://software.complete.org/offlineimap
> 

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://www.enigmail.net/

iEYEARECAAYFAlCzXqYACgkQoYgNqgF2egox3QCdHQkKsRU5aTaTW78bvncQI3h8
dYUAnR7j/Cmv0l7fHn1ZmdAKEP2zUhqC
=rNM7
-----END PGP SIGNATURE-----





More information about the OfflineIMAP-project mailing list