.: mairix - email index and search tool :.
:: News ::

22 June 2007
v0.21 released

20 March 2007
v0.20 released

15 July 2006
v0.19 released

13 July 2006
v0.18 and mailing list available at SourceForge

10 March 2006
Version 0.18 released

26 December 2005
Update mairix.html file

16 December 2005
Version 0.17.1 released

14 November 2005
Version 0.17 released

9 November 2005
Development version 0.17pre2 released

19 October 2005
Development version 0.17-pre1 released

19 October 2005
Add section on git repository and remove GNU arch repository information
:: NAVIGATION ::
main page
contact the author

overview

mairix is a program for indexing and searching email messages stored in Maildir (see the documentation section below), MH or mbox folders.
Some features:
  • Indexing is fast. It runs incrementally on new messages - any particular message only gets scanned once in the lifetime of the index file.
  • The search mode populates a "virtual" maildir (or MH) folder with symlinks which point to the real messages. This folder can be opened as usual in your mail program. (Note, if messages are in mbox folders, copies are made. Similarly if the virtual folder has mbox format, it is filled with copies of the matched messages.)
  • The search mode is very fast.
  • Indexing and searching works on the basis of words. The index file tabulates which words occur in which parts (particular headers + body) of which messages.
mairix is licensed under the GPL.

Suggestions, bug reports, experiences, praise, complaints etc to the author, please. See this page for contact details.

mailing list

The mairix-users list is hosted at SourceForge.

To subscribe, visit The subscription page .

stable releases

Version 0.21 22 June 2007
Available as

GPG signature for mairix-0.21.tar.gz

Release notes:

  • Fix make clean target in dfasyn/ (Benj. Mako Hill)
  • Limit number of messages that are examined when an end boundary is missing in an mbox (Chung-chieh Shan)
  • Avoid examining . and .. when traversing MH folder hierarchy (Steven Lumos)
  • Fix various bugs in the name/value parser
  • Add some RFC2231 support to the name/value parser (continuations)
  • Fix indexing when existing database only contains 1 message
Version 0.20 20 March 2007
Available as

GPG signature for mairix-0.20.tar.gz

Release notes:

  • Cache uncompressed mbox data (Chris Mason, further work by me)
  • Fix gaps in date ranges for search
  • Unlock database if mairix is interrupted (Paul Fox)
  • Add fast index option (-F)
  • Fix conditional compilation errors for compressed mbox
  • Reimplement MIME header parsing
  • Add capability to search on names of attachments
  • Add capability to search on state of message flags
  • Create maildir-format mfolder filenames correctly with regard to flags
  • Various bug fixes (Oliver Braun, Matthias Teege)
Version 0.19 15 July 2006
Available as

GPG signature for mairix-0.19.tar.gz

Release notes:

  • mairix.spec fixes (André Costa)
  • bug fix: freeing of message structures (Karsten Petersen)
  • Add new -x (--excerpt-output) option, an alternative mode for searching. This displays the key headers from the matching messages on stdout.
  • Add notes about the mairix-users mailing list and the SourceForge page to README.
  • Fix configuration + compilation to allow building with gzip support but without bzlib support.
  • Rename internal functions like zopen() to avoid name conflicts on MacOS X. (Vincent Lefevre)
  • Remove a spurious ; in bison input file (Vincent Lefevre)
  • Improve output given in various error conditions (based on patch by Karsten Petersen)
Version 0.18 10 March 2006
Available as

GPG signature for mairix-0.18.tar.gz

Release notes:

  • Support bzip2'd mbox folders
  • Fix bugs in parsing mbox folders containing unquoted 'From ' lines inside MIME body parts
  • Fix bug in parsing content-type data containing quotes with whitespace before
  • Clone the message flags (when both the source folder and mfolder are both of maildir type)
  • New manpages mairix.1 and mairixrc.5 are included, and the old texinfo-based documentation is deprecated into the old_docs/ directory.
  • Upgrade scanners to new version of dfasyn
  • Support Mew's MH folder subtype
Version 0.17.1 16 December 2005
Available as

GPG signature for mairix-0.17.1.tar.gz

Release notes:

  • Fix detection of MH folder subtype used by nnml (Gnus)
  • Fix filename format generated in the /cur/ directory for maildir mfolders.
  • Syntax fix in configure script
Version 0.17 14 November 2005
Available as

GPG signature for mairix-0.17.tar.gz

Release notes:

  • Support gzipped mbox folders (any file matched by a mbox= line in the config file is considered as a gzipped mbox if its name ends in .gz)
  • Rework directory traversal for the '...' construct to speed up indexing and the check that mfolder isn't going to overwrite a real folder when searching.
  • Check whether database exists before attempting to do searching.
  • Matched new maildir messages go in /new/ subdirectory of maildir mfolder.
  • Fix lots of compiler warnings generated by gcc4.x
  • Don't create and immediately scrub database entries for empty mbox folders.
  • Fix usage() info for bare word in searching
  • Allow '.' on the ends of numeric filenames in MH folders (to work with Evolution)
  • Update .PHONY target so that 'make install' etc are more reliable.
  • Add --version switch
  • Fix bug with size argument passed to memset
  • Add X-source-folder header to indicate the original folder of a match found in an mbox.
  • Migration to git for revision control.
Version 0.16.1 24 May 2005
Available as

GPG signature for mairix-0.16.1.tar.gz

Release notes:

  • Remove lockfile if the program terminates abnormally.
Version 0.16 19 May 2005
Available as

GPG signature for mairix-0.16.tar.gz

Release notes:

  • Home directory (~) and environment variable ($foo / ${foo}) expansion in the .mairixrc file
  • Add -Q flag to skip database integrity checks during indexing (equivalently the nochecks option in .mairixrc file). This speeds up indexing but loses some robustness.
  • Add ^ word prefix to require substring search to be left-anchored
  • Split 'make clean' into separate clean and clean_docs
  • Improve some error messages
  • Add online help entries for -o and -d
  • Don't write out the database if there are no changes found during indexing.
  • Fix stale information about the 'and' and 'or' delimiters in the online help.
  • Add the capability to omit particular folders from indexing (omit keyword in .mairixrc file.) This allows broad wildcards to be used with selected folders removed from the wildcard which is much more convenient in many set-ups.
  • Avoid writing matches to any folder on the list of folders to be indexed (affects both mfolder option and argument of -o command line switch.) This prevents disasterous loss of messages in the event of trying to overwrite an wanted folder with the matches.
  • Implement dot-locking on the database file to prevent corruption due to concurrent updates. Add --unlock file to forcibly remove a stray lockfile.
  • Display message path in warning messages from rfc822 parsing.
Version 0.15.2 3 February 2005
Available as

GPG signature for mairix-0.15.2.tar.gz

Release notes:

  • Fix segfault if messages are deleted during indexing.
Version 0.15.1 4 December 2004
Available as

GPG signature for mairix-0.15.1.tar.gz

Release notes:

  • Fix bugs in handling Pine's mbox file formats.
  • Fix minor typo in the dump output
Version 0.15 11 August 2004
Available as

GPG signature for mairix-0.15.tar.gz

Release notes:

  • Migrate to GNU Arch for hosting the development archive
  • In mbox parsing, handle return path in 'From ' line only being a local part (reported by several people)
  • Don't output number of matched messages in raw mode (to make output more useful to scripts etc) (Samuel Tardieu)
  • Fix vfolder->mfolder in dotmairixrc.eg (reported by several people)
  • Handle spaces in multipart message boundary strings (Chung-chieh Shan)
  • Be more tolerant of bad multipart message boundary separators (Chung-chieh Shan)
  • Add rudimentary database dump command (-d/--dump)
  • Fix bug in handling of per-database hash key
  • Fix casting between pointers to 8-byte v 4-byte integers on 64-bit platforms
  • Fix calling ctype.h functions with negative arguments
  • Improve standards-compliance of maildir output file names (Jeff King)
  • Remove most compiler warnings
Version 0.14.1 3 February 2004
Available as

GPG signature for mairix-0.14.1.tar.gz

Release notes:

  • Bug fix : splitting of messages in mboxes was too strict regarding whitespace
Version 0.14 11 January 2004
Available as

GPG signature for mairix-0.14.tar.gz

Release notes:

  • Bug fix : using path search (p:) with mbox folders didn't work
  • Update run-time help
Version 0.13 6 January 2004
Available as

GPG signature for mairix-0.13.tar.gz

Release notes:

  • Fixes to support the mbox format used by Mozilla mail
  • When creating mfolder directories for maildir/mh, remove existing non-directory at the same path, if present. When creating mbox mfolder file, complain if there's already a directory at the same path and exit.
  • Switch from the term "virtual folder" to "match folder"
  • Fix bug in path matches (p:) containing upper-case letters - previously they matched on corresponding all lower-case paths.
Version 0.12 4 December 2003
Available as

GPG signature for mairix-0.12.tar.gz

Release notes:

  • Indexing of mbox folders in addition to the existing maildir & MH support
  • Output to mbox format mfolder
  • Return exit status 1 if no messages are matched in search mode, and exit status 2 for all error conditions.
  • Allow wildcards to be used in specifying maildir and mh folder paths.
  • Searching on messages having a particular Message-ID (m:msgid expression in search mode).
  • When indexing whole email addresses, '+' is now considered a valid character.
  • Use ',' instead of '+' in search expressions, and '/' instead of ','. This is to allow '+' to be used inside email addresses that are being searched for. The '/' character is traditionally associated with meaning 'or', so it made more sense to move ',' to mean 'and'. (Unfortunately, there were very few metacharacters left which don't have some special meaning to shells, and I wanted to avoid the need to quote or escape the search expressions.)
  • Bug fix checking return status of mmap.
  • Handle ">From " at the start of the message headers
  • Handle mis-formatted encoding strings "7 bit" and "8 bit"
  • Make every database use a random seed for the token hash function (to prevent denial of service attacks against mairix through carefully crafted messages.)
  • Rename some options in the mairixrc file, to put the folder formats on an equal footing.
  • Properly handle the case where a maildir mfolder exists but one or more of the new,tmp,cur subdirectories is missing.
  • Add configure script (not autoconf-based)
Version 0.11 1 July 2003
Available as Release notes:
  • Detect failed malloc (out of memory) conditions properly and report it.
  • Improved date specification syntax for d: option
  • Allow mfolder to be an absolute path or relative to current directory, instead of just relative to base directory.
Version 0.10 10 January 2003
Available as Release notes:
  • Add 'raw' mode for searching.
  • When purging, only print the pass[12] message in verbose mode
  • Add an ACKNOWLEDGEMENTS file.
  • Hack to handle missing NAME_MAX on various non-Linux systems
  • Improve mairix.spec file for RPM building
  • Change default value for prefix in Makefile to make it more standard.

development releases

WARNING : these releases may be buggy, half-finished, lack documentation for new features etc. Please try, test and report problems. Even better, fix the problems and send me the patches! Also, I might modify or remove features in later releases

Tarball releases

Version 0.17pre2 9 November 2005
Available as

GPG signature for mairix-0.17pre2.tar.gz

Release notes:

  • Fix various bugs handling MH folders
  • Add --version switch
  • Fix bug with size argument passed to memset

Note, the hyphen has been removed from the release name because it apparently caused problems for people producing RPMs from the -pre1 version.

Version 0.17-pre1 19 October 2005
Available as

GPG signature for mairix-0.17-pre1.tar.gz

Release notes:

  • Support gzipped mbox folders (any file matched by a mbox= line in the config file is considered as a gzipped mbox if its name ends in .gz)
  • Rework directory traversal for the '...' construct to speed up indexing and the check that mfolder isn't going to overwrite a real folder when searching.
  • Check whether database exists before attempting to do searching.
  • Matched new maildir messages go in /new/ subdirectory of maildir mfolder.
  • Fix lots of compiler warnings generated by gcc4.x
  • Don't create and immediately scrub database entries for empty mbox folders.
  • Fix usage() info for bare word in searching
  • Allow '.' on the ends of numeric filenames in MH folders (to work with Evolution)
  • Update .PHONY target so that 'make install' etc are more reliable.
Version 0.16-pre3 27 April 2005
Available as

GPG signature for mairix-0.16-pre3.tar.gz

Release notes:

  • Home directory (~) and environment variable ($foo / ${foo}) expansion in the .mairixrc file
  • Add -Q flag to skip database integrity checks during indexing (equivalently the nochecks option in .mairixrc file). This speeds up indexing but loses some robustness.
  • Add ^ word prefix to require substring search to be left-anchored
  • Split 'make clean' into separate clean and clean_docs
  • Improve some error messages
  • Add online help entries for -o and -d
  • Don't write out the database if there are no changes found during indexing.
  • Fix stale information about the 'and' and 'or' delimiters in the online help.
  • Add the capability to omit particular folders from indexing (omit keyword in .mairixrc file.) This allows broad wildcards to be used with selected folders removed from the wildcard which is much more convenient in many set-ups.
  • Avoid writing matches to any folder on the list of folders to be indexed (affects both mfolder option and argument of -o command line switch.) This prevents disasterous loss of messages in the event of trying to overwrite an wanted folder with the matches.
  • Implement dot-locking on the database file to prevent corruption due to concurrent updates. Add --unlock file to forcibly remove a stray lockfile.
  • Display message path in warning messages from rfc822 parsing.

git repository

mairix is now using git for revision control.

The current archive is hosted at
http://www.rpcurnow.force9.co.uk/git/mairix.git

Packages

Debian

Debian packages for mairix are available at http://packages.debian.org/testing/mail/mairix.html
The files necessary to build a Debian package for version 0.11 can be found below.
mairix_0.11-2.dsc
mairix_0.11-2.diff.gz

SuSE

Packages for SuSE have been made available here
Last updated: 22nd June 2007
Hosted on Force9
Copyright © 2006 Richard P. Curnow
All rights reserved