X-Git-Url: https://git.cworth.org/git?p=notmuch-wiki;a=blobdiff_plain;f=mutttips.mdwn;fp=mutttips.mdwn;h=f8603e6e3a7e48e3b7c8551a248f4b696fb19c3a;hp=0000000000000000000000000000000000000000;hb=61ba599cb7e5319b5988955788bcdce2c3ee7a56;hpb=db0ad04e394b48a6e65fff7ce71ed8ab06012bd6 diff --git a/mutttips.mdwn b/mutttips.mdwn new file mode 100644 index 0000000..f8603e6 --- /dev/null +++ b/mutttips.mdwn @@ -0,0 +1,151 @@ +[[!img notmuch-logo.png alt="Notmuch logo" class="left"]] + +Notmuch is a great mail indexing tool that can also be used *in conjunction* +with existing Mail User Agents (MUA) instead of replacing them. The advantage of +such mixed solutions is that users can benefit from notmuch features (such as +full-text search and thread reconstruction) without *having to* change MUA. + +A popular geek MUA is [the Mutt e-mail client](http://www.mutt.org); integrating +notmuch with Mutt is not seamless, but fairly straightforward. There are two +principal possibilities, either using a patched mutt that handles internally +notmuch, or use a sets of scripts/handler within mutt to achieve something close. + +[[!toc levels=2]] + +# Using Notmuch with the good old mutt + +There's a page about the [[notmuch-mutt]] scripts that are distributed along +with notmuch, in its contrib directory. + +# Using Notmuch with mutt-kz + +Here is a tip about how to set up [mutt-kz](https://github.com/karelzak/mutt-kz), a fork +of the mutt MUA with support of notmuch integrated. + +## Install: + +You'll need to first have notmuch installed and the notmuch library available to +configure. Otherwise, it is a good old autoconf setup, so here it goes: + + git clone https://github.com/karelzak/mutt-kz.git + cd mutt-kz + ./configure && make && make install + +## Configuration: + +Here is my `.muttrc` I use with `mutt-kz`, explainations as comments: + + # notmuch + set nm_default_uri="notmuch:///PATH/TO/MY/Maildir" # path to the maildir + set virtual_spoolfile=yes # enable virtual folders + set sendmail="/PATH/TO/bin/nm_sendmail" # enables parsing of outgoing mail + virtual-mailboxes \ + "INBOX" "notmuch://?query=tag:INBOX and NOT tag:archive"\ + "Unread" "notmuch://?query=tag:unread"\ + "Starred" "notmuch://?query=tag:*"\ + "Sent" "notmuch://?query=tag:sent" # sets up queries for virtual folders + # notmuch bindings + macro index \\\\ "" # looks up a hand made query + macro index A "+archive -unread -inbox\\n" # tag as Archived + macro index I "-inbox -unread\\n" # removed from inbox + macro index S "-inbox -unread +junk\\n" # tag as Junk mail + macro index + "+*\\n" # tag as starred + macro index - "-*\\n" # tag as unstarred + # sidebar + set sidebar_width = 20 + set sidebar_visible = yes # set to "no" to disable sidebar view at startup + color sidebar_new yellow default + # sidebar bindings + bind index sidebar-prev # got to previous folder in sidebar + bind index sidebar-next # got to next folder in sidebar + bind index sidebar-open # open selected folder from sidebar + # sidebar toggle + macro index ,@) " set sidebar_visible=no; macro index ~ ,@( 'Toggle sidebar'" + macro index ,@( " set sidebar_visible=yes; macro index ~ ,@) 'Toggle sidebar'" + macro index ~ ,@( 'Toggle sidebar' # toggle the sidebar + +There is no major difference with the standard mutt. Just a new concept (and URL) the +virtual folder, that is addressed as `notmuch://`, a few new settings and commands. + +## Using: + +when you open `mutt` you get the INBOX opened. There you can crawl through your +mails, and tag them as appropriate, either manually using the " ` " command, or using +the bindings defined in configuration (such as A/I/S/+/-). + +## Mail tagging on sending + +You may have noticed in `mutt-kz`'s configuration that I set the `sendmail` variable +of mutt to a `nm_sendmail` script. This is for tagging outgoing mail each time I send +a mail. Here is the content of the script (which may be used directly in mutt's +variable, I did not try). + +Source of `nm_sendmail`: + + #!/bin/bash + tee >(notmuch-deliver -t sent -f Sent) | sendmail $* + +## Mail filtering/tagging + +For mail tagging on arrival, I prefer to use a simple procmail delivery along with +notmuch-delivery (which can be compiled in the `contrib/` directory of notmuch's sources). + +Of course, you could use formail or maildrop, instead of procmail, but it is flexible +enough for my needs, and here is an example of configuration that can be useful: + + PATH=/bin:/usr/bin:/usr/local/bin + + # ensure each mail is unique + :0 Wh: msgid.lock + | formail -D 8192 msgid.cache + + # update addressbook with current mail + :0 Wh + | /usr/local/bin/notmuch_abook update + + NOINBOX="-r inbox" + TAGS="" + + # manage dynamic tagging, using the ' + ' token in mail addresses + # e.g.: user+TAG@fqdn.tld will generate the tag TAG + :0:notmuch.lock + * ^TO\/user\+[a-z0-9]+@fqdn\.tld + * MATCH ?? ^user\+\/[a-z0-9]+ + { + TAGS="-t ${MATCH}" + } + + # match all mails from mailing-lists, don't let them go to inbox, but tag them with ml + :0:notmuch.lock + * ^List-[Ii][dD]:.* + { + TAGS="${TAGS} -t ml -r inbox" + } + + # tag all mails coming from mutt-kz mailing list + :0:notmuch.lock + * .*mutt-kz\.lists\.fedoraproject\.org.* + | notmuch-deliver $TAGS -t mutt -t notmuch + + # tag all mails coming from notmuch mailing list + :0:notmuch.lock + * .*notmuch\.notmuchmail\.org.* + | notmuch-deliver $TAGS -t notmuch + + # Mark all spams as junk mail + :0:notmuch.lock + * ^X-Spam-Status: Yes + | notmuch-deliver -t junk + + :0:notmuch.lock + * ^Subject: .*SPAM.* + | notmuch-deliver -t junk + + ### All unmatched mails + :0:notmuch.lock + * .* + | notmuch-deliver -v $TAGS + +there's a line that updates the addressbook with addresses of current mail, and you'll +be able to read more about it on the [[vimtips]] page. +