1 Return-Path: <anthony.j.towns@gmail.com>
\r
2 X-Original-To: notmuch@notmuchmail.org
\r
3 Delivered-To: notmuch@notmuchmail.org
\r
4 Received: from localhost (localhost [127.0.0.1])
\r
5 by olra.theworths.org (Postfix) with ESMTP id 49BAB4196F0
\r
6 for <notmuch@notmuchmail.org>; Thu, 1 Apr 2010 01:01:18 -0700 (PDT)
\r
7 X-Virus-Scanned: Debian amavisd-new at olra.theworths.org
\r
11 X-Spam-Status: No, score=0.801 tagged_above=-999 required=5
\r
12 tests=[BAYES_50=0.8, DKIM_SIGNED=0.1, DKIM_VALID=-0.1,
\r
13 FREEMAIL_FROM=0.001] autolearn=ham
\r
14 Received: from olra.theworths.org ([127.0.0.1])
\r
15 by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)
\r
16 with ESMTP id mB4VH5nbUlvb for <notmuch@notmuchmail.org>;
\r
17 Thu, 1 Apr 2010 01:01:17 -0700 (PDT)
\r
18 Received: from mail-gy0-f181.google.com (mail-gy0-f181.google.com
\r
20 by olra.theworths.org (Postfix) with ESMTP id 40D24431FC1
\r
21 for <notmuch@notmuchmail.org>; Thu, 1 Apr 2010 01:01:17 -0700 (PDT)
\r
22 Received: by gyg8 with SMTP id 8so324354gyg.26
\r
23 for <notmuch@notmuchmail.org>; Thu, 01 Apr 2010 01:01:16 -0700 (PDT)
\r
24 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
\r
25 h=domainkey-signature:mime-version:sender:received:date
\r
26 :x-google-sender-auth:received:message-id:subject:from:to
\r
27 :content-type; bh=XdYNNm71eBHiJAbnxngWRb57VopaER5kkDYNTUvZi9w=;
\r
28 b=rOjZfFj/mZCL1pjzxLJ6NOUT1O+vxYXOGMKcekoT2E4irvzJbs/bXvRDx7rk84ozkz
\r
29 ICxGDsuF8T4KsqNHC3PpX49nOUrzAv5HMftFbfxUh0m9xA5kjtKBJlGkghrsOQyYs8jH
\r
30 62HMmrAPinE05RaV3UvLg0uVIpsiYRsWukUUM=
\r
31 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma;
\r
32 h=mime-version:sender:date:x-google-sender-auth:message-id:subject
\r
33 :from:to:content-type;
\r
34 b=ERE/7GLG72oxNv774ta4srDNfV/hDILhekT71whsnJd3Ledxv7IjLvqrvnSgigGzPS
\r
35 X5WRM5LHbP/7zW2wae61R4HVqbKGoSEtKFev78lBYIfMienPVzyGtvaQNGDunZbOUtlb
\r
36 UPMSFJESyUqugWxkvDUTysb9DT0AUCilPuIh8=
\r
38 Sender: anthony.j.towns@gmail.com
\r
39 Received: by 10.90.32.14 with HTTP; Thu, 1 Apr 2010 01:01:16 -0700 (PDT)
\r
40 Date: Thu, 1 Apr 2010 18:01:16 +1000
\r
41 X-Google-Sender-Auth: 42ed67876eae44a5
\r
42 Received: by 10.91.55.25 with SMTP id h25mr1522371agk.61.1270108876405; Thu,
\r
43 01 Apr 2010 01:01:16 -0700 (PDT)
\r
44 Message-ID: <i2w87b3a4191004010101gfe3ec39ez5243d60e3edf3fc8@mail.gmail.com>
\r
45 From: Anthony Towns <aj@erisian.com.au>
\r
46 To: notmuch@notmuchmail.org
\r
47 Content-Type: multipart/mixed; boundary=0016e641dace67919304832844ba
\r
48 Subject: [notmuch] notmuch vs gmail filters
\r
49 X-BeenThere: notmuch@notmuchmail.org
\r
50 X-Mailman-Version: 2.1.13
\r
52 List-Id: "Use and development of the notmuch mail system."
\r
53 <notmuch.notmuchmail.org>
\r
54 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
\r
55 <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
\r
56 List-Archive: <http://notmuchmail.org/pipermail/notmuch>
\r
57 List-Post: <mailto:notmuch@notmuchmail.org>
\r
58 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
\r
59 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
\r
60 <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
\r
61 X-List-Received-Date: Thu, 01 Apr 2010 08:01:18 -0000
\r
63 --0016e641dace67919304832844ba
\r
64 Content-Type: text/plain; charset=ISO-8859-1
\r
68 I'm currently using gmail for my mail and trying to port its behaviour
\r
69 to notmuch. I had a go at writing a python script to convert my gmails
\r
70 to notmuch tag commands along the lines of Carl's post [0]. It uses
\r
71 the Gmail labs feature to export filters (to an XML file), and then
\r
72 goes from XML stanzas like:
\r
75 <category term='filter'></category>
\r
76 <title>Mail Filter</title>
\r
77 <id>tag:mail.google.com,2008:filter:1270085835242</id>
\r
78 <updated>2010-04-01T05:33:40Z</updated>
\r
80 <apps:property name='from' value='updates@linkedin.com'/>
\r
81 <apps:property name='label' value='flyers'/>
\r
82 <apps:property name='shouldArchive' value='true'/>
\r
85 (which says to tag messages from updates@linked.com with "flyers" and
\r
86 skip the inbox) into a notmuch command like:
\r
88 notmuch tag -inbox +flyers -- from:updates@linkedin.com '(' not
\r
89 tag:flyers or tag:inbox ')'
\r
91 The bit in brackets makes sure it doesn't tag messages that already
\r
92 have exactly the right tags -- this coule probably be implied in any
\r
93 invocation of notmuch tag really...
\r
95 Anyway, attached. It converts gmail's list: match to a notmuch to:
\r
96 match, and just gives up on deliveredto: matches. But maybe someone
\r
97 else finds it useful/interesting too :)
\r
102 [0] id:87r5o8stbj.fsf@yoom.home.cworth.org
\r
105 Anthony Towns <aj@erisian.com.au>
\r
107 --0016e641dace67919304832844ba
\r
108 Content-Type: text/x-python; charset=US-ASCII; name="gmail2notmuch.py"
\r
109 Content-Disposition: attachment; filename="gmail2notmuch.py"
\r
110 Content-Transfer-Encoding: base64
\r
111 X-Attachment-Id: f_g7ha0m5v0
\r
113 IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCgojIENvcHlyaWdodCAyMDEwIEFudGhvbnkgVG93bnMgPGFq
\r
114 QGVyaXNpYW4uY29tLmF1PgojIEdQTHYyKwoKZnJvbSB4bWwuZG9tIGltcG9ydCBtaW5pZG9tCmlt
\r
115 cG9ydCBwaXBlcwoKbWYgPSBtaW5pZG9tLnBhcnNlKG9wZW4oIm1haWxGaWx0ZXJzLnhtbCIpKQoK
\r
116 ZGVmIGdvb2cybm90bXVjaCh0ZXJtLCB2YWx1ZSk6CiAgICBpZiB0ZXJtID09ICJsaXN0IjoKCWlm
\r
117 IHZhbHVlWzBdK3ZhbHVlWy0xXSBpbiBbJygpJywgJyIiJ106CgkgICAgdmFsdWUgPSB2YWx1ZVsx
\r
118 Oi0xXQogICAgICAgIHJldHVybiAidG86IiArIHZhbHVlCiAgICByZXR1cm4gInRhZzpvbWctaS1n
\r
119 b3QtY29uZnVzZWQiCgpmb3IgZSBpbiBtZi5jaGlsZE5vZGVzWzBdLmdldEVsZW1lbnRzQnlUYWdO
\r
120 YW1lKCJlbnRyeSIpOgogICAgYWRkdGFncyA9IFtdCiAgICBkZWx0YWdzID0gW10KICAgIHNlYXJj
\r
121 aCA9IFtdCiAgICBmb3IgYSBpbiBlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhcHBzOnByb3BlcnR5
\r
122 Iik6CiAgICAgICAgbix2ID0gYS5nZXRBdHRyaWJ1dGUoIm5hbWUiKSwgYS5nZXRBdHRyaWJ1dGUo
\r
123 InZhbHVlIikKICAgICAgICBpZiBuID09ICJsYWJlbCI6CiAgICAgICAgICAgIGFkZHRhZ3MuYXBw
\r
124 ZW5kKHYpCiAgICAgICAgZWxpZiBuID09ICJzaG91bGRBcmNoaXZlIiBhbmQgdiA9PSAidHJ1ZSI6
\r
125 CiAgICAgICAgICAgIGRlbHRhZ3MuYXBwZW5kKCJpbmJveCIpCiAgICAgICAgZWxpZiBuID09ICJz
\r
126 aG91bGRUcmFzaCIgYW5kIHYgPT0gInRydWUiOgogICAgICAgICAgICBhZGR0YWdzLmFwcGVuZCgi
\r
127 ZGVsZXRlZCIpCiAgICAgICAgZWxpZiBuID09ICJzaG91bGRNYXJrQXNSZWFkIiBhbmQgdiA9PSAi
\r
128 dHJ1ZSI6CiAgICAgICAgICAgIGRlbHRhZ3MuYXBwZW5kKCJ1bnJlYWQiKQogICAgICAgIGVsaWYg
\r
129 biA9PSAiZnJvbSI6CiAgICAgICAgICAgIHNlYXJjaC5hcHBlbmQoImZyb206JXMiICUgdikKICAg
\r
130 ICAgICBlbGlmIG4gPT0gInN1YmplY3QiOgogICAgICAgICAgICBzZWFyY2guYXBwZW5kKCJzdWJq
\r
131 ZWN0OiVzIiAlIHYpCiAgICAgICAgZWxpZiBuID09ICJkb2VzTm90SGF2ZVRoZVdvcmQiIGFuZCAn
\r
132 OicgaW4gdjoKICAgICAgICAgICAgc2VhcmNoLmFwcGVuZCgibm90IikKCSAgICBzZWFyY2guYXBw
\r
133 ZW5kKGdvb2cybm90bXVjaCgqdi5zcGxpdCgnOicsMSkpKQogICAgICAgIGVsaWYgbiA9PSAiaGFz
\r
134 VGhlV29yZCIgYW5kICc6JyBpbiB2OgoJICAgIHNlYXJjaC5hcHBlbmQoZ29vZzJub3RtdWNoKCp2
\r
135 LnNwbGl0KCc6JywxKSkpCiAgICAgICAgZWxpZiBuID09ICJoYXNUaGVXb3JkIjoKICAgICAgICAg
\r
136 ICAgc2VhcmNoLmFwcGVuZCh2KQogICAgICAgIGVsaWYgbiA9PSAiZG9lc05vdEhhdmVUaGVXb3Jk
\r
137 IjoKICAgICAgICAgICAgc2VhcmNoLmFwcGVuZCgibm90IikKICAgICAgICAgICAgc2VhcmNoLmFw
\r
138 cGVuZCh2KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHByaW50ICJYWFggJXMgOiAlcyIgJSAo
\r
139 bix2KQogICAgdGFncyA9IFsiLSIreCBmb3IgeCBpbiBkZWx0YWdzXSArIFsiKyIreCBmb3IgeCBp
\r
140 biBhZGR0YWdzXQogICAgaWYgdGFncyA9PSBbXToKCXByaW50ICJXVEY/PyBOTyBUQUdTIgoJY29u
\r
141 dGludWUKICAgIHRhZ3NlYXJjaCA9IHN1bShbIFsibm90IiwgInRhZzoiK3gsICJvciJdIGZvciB4
\r
142 IGluIGFkZHRhZ3MgXSwgW10pCiAgICB0YWdzZWFyY2ggKz0gc3VtKFsgWyJ0YWc6Iit4LCAib3Ii
\r
143 XSBmb3IgeCBpbiBkZWx0YWdzIF0sIFtdKQogICAgdGFnc2VhcmNoID0gdGFnc2VhcmNoWzotMV0K
\r
144 ICAgIGlmIGxlbih0YWdzKSA+IDE6CiAgICAgICAgdGFnc2VhcmNoID0gWyIoIl0gKyB0YWdzZWFy
\r
145 Y2ggKyBbIikiXQogICAgc2VhcmNoICs9IHRhZ3NlYXJjaAogICAgcHJpbnQgIm5vdG11Y2ggdGFn
\r
146 ICVzIC0tICVzIiAlICgKCSIgIi5qb2luKHBpcGVzLnF1b3RlKHgpIGZvciB4IGluIHRhZ3MpLAoJ
\r
147 IiAiLmpvaW4ocGlwZXMucXVvdGUoeCkgZm9yIHggaW4gc2VhcmNoKSkKCg==
\r
148 --0016e641dace67919304832844ba--
\r