114 lines
4.5 KiB
Markdown
114 lines
4.5 KiB
Markdown
+++
|
|
date = "2009-05-25T18:05:00-07:00"
|
|
title = "Search your email!"
|
|
categories = ["cli","software","email","search"]
|
|
+++
|
|
|
|
Search your email!
|
|
==================
|
|
|
|
One of the features that most of the pretty GUI mailers offer you is the
|
|
ability to search your email. While this is not a feature I use
|
|
regularly, it is one which when you need it, you really need it. I have
|
|
used [grepmail](http://grepmail.sf.net) in the past, but it slow for me
|
|
(it scans the mail files every time) and the big thing for me is that is
|
|
only supports [mbox](http://en.wikipedia.org/wiki/Mbox) files, and I use
|
|
[maildir](http://en.wikipedia.org/wiki/Maildir) since I use
|
|
[offlineimap](http://software.complete.org/software/projects/show/offlineimap).
|
|
|
|
I recently found [mairix](http://www.rpcurnow.force9.co.uk/mairix/).
|
|
While I have not been using it long, so far I am very impressed with it.
|
|
It uses an index to speed up the search process, and it smartly adds
|
|
only new or changed files to the index. The first indexing run was only
|
|
a few seconds on my archive of almost 15,000 mail messages. I have it
|
|
scheduled to update the index every 15 minutes, and I never notice the
|
|
load this will put on the system.
|
|
|
|
To integrated mairix with mutt, I wrote a quick little script to search
|
|
from within (or without) mutt:
|
|
|
|
#!/bin/bash
|
|
#===============================================================================
|
|
#
|
|
# FILE: mailsearch.sh
|
|
#
|
|
# USAGE: ./mailsearch.sh
|
|
#
|
|
# DESCRIPTION: search mail stuff
|
|
#
|
|
# OPTIONS: ---
|
|
# REQUIREMENTS: ---
|
|
# BUGS: ---
|
|
# NOTES: ---
|
|
# AUTHOR: Don Harper (), duck@duckland.org
|
|
# COMPANY: Don Harper
|
|
# VERSION: 1.0
|
|
# CREATED: 05/25/2009 07:03:30 PM CST
|
|
# REVISION: ---
|
|
#===============================================================================
|
|
|
|
rm -rf $HOME/Maildir/mfolder
|
|
echo " t::word
|
|
Match word in the To: header.
|
|
c::word
|
|
Match word in the Cc: header.
|
|
f::word
|
|
Match word in the From: header.
|
|
s::word
|
|
Match word in the Subject: header.
|
|
m::word
|
|
Match word in the Message-ID: header.
|
|
b::word
|
|
Match word in the message body.
|
|
d::[start-datespec]--[end-datespec]
|
|
Match messages with Date: headers lying in the specific range.
|
|
z::[low-size]--[high-size]
|
|
Match messages whose size lies in the specified range.
|
|
n::word
|
|
Match word occurring as the name of an attachment in the mes-
|
|
sage. Since attachment names are usually long, this option
|
|
F::flags
|
|
Match messages with particular flag settings.
|
|
s meaning seen,
|
|
r meaning replied
|
|
f meaning flags
|
|
prefixed by a - to negate its sense.
|
|
|
|
The a:: search pattern is an abbreviation for tcf:
|
|
|
|
Match words
|
|
The word argument to the search strings can take various forms.
|
|
~word
|
|
Match messages not containing the word.
|
|
word1,word2
|
|
This matches if both the words are matched in the specified message part.
|
|
word1/word2
|
|
This matches if either of the words are matched in the specified message part.
|
|
substring=
|
|
Match any word containing substring as a substring
|
|
substring=N
|
|
Match any word containing substring, allowing up to N errors in
|
|
the match. For example, if N is 1, a single error is allowed,
|
|
where an error can be
|
|
* a missing letter
|
|
* an extra letter
|
|
* a different letter.
|
|
^substring=
|
|
Match any word containing substring as a substring, with the
|
|
requirement that substring occurs at the beginning of the
|
|
matched word.
|
|
d::start-end
|
|
Specify both start and end explicitly
|
|
"
|
|
echo -n "Enter your search string: "
|
|
read string
|
|
mairix $string
|
|
mutt -f=mfolder
|
|
rm -rf $HOME/Maildir/mfolder
|
|
|
|
Then, I bound this to "S\'' from within mutt:
|
|
|
|
macro index,pager S "!mailsearch\n"
|
|
|
|
This will give me a reminder of the search command, run the search, and
|
|
then give me the search results in a new mutt session.
|