mairix is a program for indexing and searching email messages stored in maildir, 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, via email.

Mailing list

The mairix-users list is hosted at SourceForge. To subscribe, visit The subscription page


Version 0.22

Available as source from SourceForce

GPG signature

Release notes:

  • Skip symlinks when using mbox (R A Lichtensteiger)
  • Update copyright year info throughout
  • Update ACKNOWLEDGEMENTS and copyright headers where more credit was due
  • Update FSF address in file headers
  • Update COPYING to latest gpl-2.0.txt
  • Improve error message if home directory cannot be determined
  • Honour HOME environment variable (Andreas Amann)
  • MIME types are allowed to have "+" characters in them. (Jonathan Kamens)
  • Fix deficiencies in the parsing of mbox From lines (Jonathan Kamens)
  • Include the existing -x flag in the help message (Mark Hills)
  • Fix documentation nits (Tom Doherty)
  • Remove spurious message when the mtime of a message file has changed
  • Do not export functions already exported through a callback structure. (Samuel Tardieu)
  • Fix two manpages buglets. (Samuel Tardieu)
  • When freeing a struct nvp, do not forget to free the struct nvp_entry. (Samuel Tardieu)
  • Do not leak memory if duplicate fields are present. (Samuel Tardieu)
  • Initialize the date header with a known value. (Samuel Tardieu)
  • Merge two conflicting solutions for bad MIME encoding
  • Fix segfault when last char is not a newline (Mika Fischer)
  • fix for MIME-related crash (Paramjit Oberoi)
  • Add support claws-mail (Anand Kumria)
  • Add MH sub-type support for ezmlm-archives (Claus Alboege)
  • Detect a trailing -f or -o with no following argument
  • Allow lines starting "From" to occur part-way through the header.o
  • Display message-ID in search -x mode
  • Remove execute permission from source files
  • Handle mbox from separators where email address is in angle brackets
  • Fix a bug in rfc822.c: Some headers weren't correctly parsed. (Jaime Velasco Juan)

Version 0.21

Available as source from SourceForce

GPG signature

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

Git repository

The current git repository is on GitHub here.

The old location for the git repository is here. At some point I will probably stop keeping this one up to date.