[notmuch] notmuch vs gmail filters
authorAnthony Towns <aj@erisian.com.au>
Thu, 1 Apr 2010 08:01:16 +0000 (18:01 +1000)
committerW. Trevor King <wking@tremily.us>
Fri, 7 Nov 2014 17:36:27 +0000 (09:36 -0800)
48/fbd633a2d7582a809f50a3168d2a38fc82160f [new file with mode: 0644]

diff --git a/48/fbd633a2d7582a809f50a3168d2a38fc82160f b/48/fbd633a2d7582a809f50a3168d2a38fc82160f
new file mode 100644 (file)
index 0000000..bb141b4
--- /dev/null
@@ -0,0 +1,148 @@
+Return-Path: <anthony.j.towns@gmail.com>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+       by olra.theworths.org (Postfix) with ESMTP id 49BAB4196F0\r
+       for <notmuch@notmuchmail.org>; Thu,  1 Apr 2010 01:01:18 -0700 (PDT)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: 0.801\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=0.801 tagged_above=-999 required=5\r
+       tests=[BAYES_50=0.8, DKIM_SIGNED=0.1, DKIM_VALID=-0.1,\r
+       FREEMAIL_FROM=0.001] autolearn=ham\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+       with ESMTP id mB4VH5nbUlvb for <notmuch@notmuchmail.org>;\r
+       Thu,  1 Apr 2010 01:01:17 -0700 (PDT)\r
+Received: from mail-gy0-f181.google.com (mail-gy0-f181.google.com\r
+       [209.85.160.181])\r
+       by olra.theworths.org (Postfix) with ESMTP id 40D24431FC1\r
+       for <notmuch@notmuchmail.org>; Thu,  1 Apr 2010 01:01:17 -0700 (PDT)\r
+Received: by gyg8 with SMTP id 8so324354gyg.26\r
+       for <notmuch@notmuchmail.org>; Thu, 01 Apr 2010 01:01:16 -0700 (PDT)\r
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;\r
+       h=domainkey-signature:mime-version:sender:received:date\r
+       :x-google-sender-auth:received:message-id:subject:from:to\r
+       :content-type; bh=XdYNNm71eBHiJAbnxngWRb57VopaER5kkDYNTUvZi9w=;\r
+       b=rOjZfFj/mZCL1pjzxLJ6NOUT1O+vxYXOGMKcekoT2E4irvzJbs/bXvRDx7rk84ozkz\r
+       ICxGDsuF8T4KsqNHC3PpX49nOUrzAv5HMftFbfxUh0m9xA5kjtKBJlGkghrsOQyYs8jH\r
+       62HMmrAPinE05RaV3UvLg0uVIpsiYRsWukUUM=\r
+DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma;\r
+       h=mime-version:sender:date:x-google-sender-auth:message-id:subject\r
+       :from:to:content-type;\r
+       b=ERE/7GLG72oxNv774ta4srDNfV/hDILhekT71whsnJd3Ledxv7IjLvqrvnSgigGzPS\r
+       X5WRM5LHbP/7zW2wae61R4HVqbKGoSEtKFev78lBYIfMienPVzyGtvaQNGDunZbOUtlb\r
+       UPMSFJESyUqugWxkvDUTysb9DT0AUCilPuIh8=\r
+MIME-Version: 1.0\r
+Sender: anthony.j.towns@gmail.com\r
+Received: by 10.90.32.14 with HTTP; Thu, 1 Apr 2010 01:01:16 -0700 (PDT)\r
+Date: Thu, 1 Apr 2010 18:01:16 +1000\r
+X-Google-Sender-Auth: 42ed67876eae44a5\r
+Received: by 10.91.55.25 with SMTP id h25mr1522371agk.61.1270108876405; Thu, \r
+       01 Apr 2010 01:01:16 -0700 (PDT)\r
+Message-ID: <i2w87b3a4191004010101gfe3ec39ez5243d60e3edf3fc8@mail.gmail.com>\r
+From: Anthony Towns <aj@erisian.com.au>\r
+To: notmuch@notmuchmail.org\r
+Content-Type: multipart/mixed; boundary=0016e641dace67919304832844ba\r
+Subject: [notmuch] notmuch vs gmail filters\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+       <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Thu, 01 Apr 2010 08:01:18 -0000\r
+\r
+--0016e641dace67919304832844ba\r
+Content-Type: text/plain; charset=ISO-8859-1\r
+\r
+Hey *,\r
+\r
+I'm currently using gmail for my mail and trying to port its behaviour\r
+to notmuch. I had a go at writing a python script to convert my gmails\r
+to notmuch tag commands along the lines of Carl's post [0]. It uses\r
+the Gmail labs feature to export filters (to an XML file), and then\r
+goes from XML stanzas like:\r
+\r
+        <entry>\r
+                <category term='filter'></category>\r
+                <title>Mail Filter</title>\r
+                <id>tag:mail.google.com,2008:filter:1270085835242</id>\r
+                <updated>2010-04-01T05:33:40Z</updated>\r
+                <content></content>\r
+                <apps:property name='from' value='updates@linkedin.com'/>\r
+                <apps:property name='label' value='flyers'/>\r
+                <apps:property name='shouldArchive' value='true'/>\r
+        </entry>\r
+\r
+(which says to tag messages from updates@linked.com with "flyers" and\r
+skip the inbox) into a notmuch command like:\r
+\r
+    notmuch tag -inbox +flyers -- from:updates@linkedin.com '(' not\r
+tag:flyers or tag:inbox ')'\r
+\r
+The bit in brackets makes sure it doesn't tag messages that already\r
+have exactly the right tags -- this coule probably be implied in any\r
+invocation of notmuch tag really...\r
+\r
+Anyway, attached. It converts gmail's list: match to a notmuch to:\r
+match, and just gives up on deliveredto: matches. But maybe someone\r
+else finds it useful/interesting too :)\r
+\r
+Cheers,\r
+aj\r
+\r
+[0] id:87r5o8stbj.fsf@yoom.home.cworth.org\r
+\r
+-- \r
+Anthony Towns <aj@erisian.com.au>\r
+\r
+--0016e641dace67919304832844ba\r
+Content-Type: text/x-python; charset=US-ASCII; name="gmail2notmuch.py"\r
+Content-Disposition: attachment; filename="gmail2notmuch.py"\r
+Content-Transfer-Encoding: base64\r
+X-Attachment-Id: f_g7ha0m5v0\r
+\r
+IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCgojIENvcHlyaWdodCAyMDEwIEFudGhvbnkgVG93bnMgPGFq\r
+QGVyaXNpYW4uY29tLmF1PgojIEdQTHYyKwoKZnJvbSB4bWwuZG9tIGltcG9ydCBtaW5pZG9tCmlt\r
+cG9ydCBwaXBlcwoKbWYgPSBtaW5pZG9tLnBhcnNlKG9wZW4oIm1haWxGaWx0ZXJzLnhtbCIpKQoK\r
+ZGVmIGdvb2cybm90bXVjaCh0ZXJtLCB2YWx1ZSk6CiAgICBpZiB0ZXJtID09ICJsaXN0IjoKCWlm\r
+IHZhbHVlWzBdK3ZhbHVlWy0xXSBpbiBbJygpJywgJyIiJ106CgkgICAgdmFsdWUgPSB2YWx1ZVsx\r
+Oi0xXQogICAgICAgIHJldHVybiAidG86IiArIHZhbHVlCiAgICByZXR1cm4gInRhZzpvbWctaS1n\r
+b3QtY29uZnVzZWQiCgpmb3IgZSBpbiBtZi5jaGlsZE5vZGVzWzBdLmdldEVsZW1lbnRzQnlUYWdO\r
+YW1lKCJlbnRyeSIpOgogICAgYWRkdGFncyA9IFtdCiAgICBkZWx0YWdzID0gW10KICAgIHNlYXJj\r
+aCA9IFtdCiAgICBmb3IgYSBpbiBlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhcHBzOnByb3BlcnR5\r
+Iik6CiAgICAgICAgbix2ID0gYS5nZXRBdHRyaWJ1dGUoIm5hbWUiKSwgYS5nZXRBdHRyaWJ1dGUo\r
+InZhbHVlIikKICAgICAgICBpZiBuID09ICJsYWJlbCI6CiAgICAgICAgICAgIGFkZHRhZ3MuYXBw\r
+ZW5kKHYpCiAgICAgICAgZWxpZiBuID09ICJzaG91bGRBcmNoaXZlIiBhbmQgdiA9PSAidHJ1ZSI6\r
+CiAgICAgICAgICAgIGRlbHRhZ3MuYXBwZW5kKCJpbmJveCIpCiAgICAgICAgZWxpZiBuID09ICJz\r
+aG91bGRUcmFzaCIgYW5kIHYgPT0gInRydWUiOgogICAgICAgICAgICBhZGR0YWdzLmFwcGVuZCgi\r
+ZGVsZXRlZCIpCiAgICAgICAgZWxpZiBuID09ICJzaG91bGRNYXJrQXNSZWFkIiBhbmQgdiA9PSAi\r
+dHJ1ZSI6CiAgICAgICAgICAgIGRlbHRhZ3MuYXBwZW5kKCJ1bnJlYWQiKQogICAgICAgIGVsaWYg\r
+biA9PSAiZnJvbSI6CiAgICAgICAgICAgIHNlYXJjaC5hcHBlbmQoImZyb206JXMiICUgdikKICAg\r
+ICAgICBlbGlmIG4gPT0gInN1YmplY3QiOgogICAgICAgICAgICBzZWFyY2guYXBwZW5kKCJzdWJq\r
+ZWN0OiVzIiAlIHYpCiAgICAgICAgZWxpZiBuID09ICJkb2VzTm90SGF2ZVRoZVdvcmQiIGFuZCAn\r
+OicgaW4gdjoKICAgICAgICAgICAgc2VhcmNoLmFwcGVuZCgibm90IikKCSAgICBzZWFyY2guYXBw\r
+ZW5kKGdvb2cybm90bXVjaCgqdi5zcGxpdCgnOicsMSkpKQogICAgICAgIGVsaWYgbiA9PSAiaGFz\r
+VGhlV29yZCIgYW5kICc6JyBpbiB2OgoJICAgIHNlYXJjaC5hcHBlbmQoZ29vZzJub3RtdWNoKCp2\r
+LnNwbGl0KCc6JywxKSkpCiAgICAgICAgZWxpZiBuID09ICJoYXNUaGVXb3JkIjoKICAgICAgICAg\r
+ICAgc2VhcmNoLmFwcGVuZCh2KQogICAgICAgIGVsaWYgbiA9PSAiZG9lc05vdEhhdmVUaGVXb3Jk\r
+IjoKICAgICAgICAgICAgc2VhcmNoLmFwcGVuZCgibm90IikKICAgICAgICAgICAgc2VhcmNoLmFw\r
+cGVuZCh2KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHByaW50ICJYWFggJXMgOiAlcyIgJSAo\r
+bix2KQogICAgdGFncyA9IFsiLSIreCBmb3IgeCBpbiBkZWx0YWdzXSArIFsiKyIreCBmb3IgeCBp\r
+biBhZGR0YWdzXQogICAgaWYgdGFncyA9PSBbXToKCXByaW50ICJXVEY/PyBOTyBUQUdTIgoJY29u\r
+dGludWUKICAgIHRhZ3NlYXJjaCA9IHN1bShbIFsibm90IiwgInRhZzoiK3gsICJvciJdIGZvciB4\r
+IGluIGFkZHRhZ3MgXSwgW10pCiAgICB0YWdzZWFyY2ggKz0gc3VtKFsgWyJ0YWc6Iit4LCAib3Ii\r
+XSBmb3IgeCBpbiBkZWx0YWdzIF0sIFtdKQogICAgdGFnc2VhcmNoID0gdGFnc2VhcmNoWzotMV0K\r
+ICAgIGlmIGxlbih0YWdzKSA+IDE6CiAgICAgICAgdGFnc2VhcmNoID0gWyIoIl0gKyB0YWdzZWFy\r
+Y2ggKyBbIikiXQogICAgc2VhcmNoICs9IHRhZ3NlYXJjaAogICAgcHJpbnQgIm5vdG11Y2ggdGFn\r
+ICVzIC0tICVzIiAlICgKCSIgIi5qb2luKHBpcGVzLnF1b3RlKHgpIGZvciB4IGluIHRhZ3MpLAoJ\r
+IiAiLmpvaW4ocGlwZXMucXVvdGUoeCkgZm9yIHggaW4gc2VhcmNoKSkKCg==\r
+--0016e641dace67919304832844ba--\r