Notmuch 0.26 (2018-01-09)

Command Line Interface

Support for re-indexing existing messages

There is a new subcommand, notmuch reindex, which re-indexes all messages matching supplied search terms. This permits users to change the way specific messages are indexed.

Note that for messages with multiple variants in the message archive, the recorded Subject: of may change upon reindexing, depending on the order in which the variants are indexed.

Improved error reporting in notmuch new

Give more details when reporting certain Xapian exceptions.

Support maildir synced tags in new.tags

Tags draft, flagged, passed, and replied are now supported in new.tags. The tag unread is still special in the presence of maildir syncing, and will be added for files in new/ regardless of the setting of new.tags.

Support /regex/ in new.ignore

Files and directories may be ignored based on regular expressions.

Allow notmuch insert --folder=""

This inserts into the top level folder.

Strip trailing '/' from folder path for notmuch insert

This prevents a potential problem with duplicated database records.

New option --output=address for notmuch address

Make notmuch show more robust against deleting duplicate files

The option --decrypt now takes an explicit argument

The --decrypt option to notmuch show and notmuch reply now takes an explicit argument. If you were used to invoking notmuch show --decrypt, you should switch to notmuch show --decrypt=true.

Boolean and keyword arguments now take a --no- prefix

Encrypted Mail

Indexing cleartext of encrypted e-mails

It's now possible to include the cleartext of encrypted e-mails in the notmuch index. This makes it possible to search your encrypted e-mails with the same ease as searching cleartext. This can be done on a per-message basis by passing --decrypt=true to indexing commands (new, insert, reindex), or by default by running "notmuch config set index.decrypt true".

Encrypted messages whose cleartext is indexed will typically also have their session keys stashed as properties associated with the message. Stashed session keys permit rapid rendering of long encrypted threads, and disposal of expired encryption-capable keys. If for some reason you want cleartext indexing without stashed session keys, use --decrypt=nostash for your indexing commands (or run "notmuch config set index.decrypt nostash"). See index.decrypt in notmuch-config(1) for more details.

Note that stashed session keys permit reconstruction of the cleartext of the encrypted message itself, and the contents of the index are roughly equivalent to the cleartext as well. DO NOT USE this feature without considering the security of your index.


Guard against concurrent searches in notmuch-tree

Use make-process when available

This allows newer Emacs to separate stdout and stderr from the notmuch command without using temporary files.

Library Changes

Indexing files with duplicate message-id

Files with duplicate message-id's are now indexed, and searchable via terms and phrases. There are known issues related to presentation of results and regular-expression search, but in principle no mail file should be completely unsearchable now.

New functions to count files

Two new functions in the libnotmuch API: notmuch_message_count_files, and notmuch_thread_get_total_files.

New function to remove properties

A new function was added to the libnotmuch API to make it easier to drop all properties with a common pattern: notmuch_message_remove_all_properties_with_prefix

Change of return value of notmuch_thread_get_authors

In certain corner cases, notmuch_thread_get_authors previously returned NULL. This has been replaced by an empty string, since the possibility of NULL was not documented.

Transition notmuch_database_add_message to notmuch_database_index_file

When indexing an e-mail message, the new notmuch_database_index_file function is the preferred form, and the old notmuch_database_add_message is deprecated. The new form allows passing a set of options to the indexing engine, which the operator may decide to change from message to message.

Test Suite

Out-of-tree builds

The test suite now works properly with out-of-tree builds, i.e. with separate source and build directories. The --root option to tests has been dropped. The same can now be achieved more reliably using out-of-tree builds.

Python Bindings

Python bindings specific Debian packaging is removed

The bindings have been build by the top level Debian packaging for a long time, and bindings/python/debian has bit-rotted.

Open mail files in binary mode when using Python 3

This avoids certain encoding related crashes under Python 3.

Add python bindings for notmuch_database_{get,set}_config*

Optional decrypt_policy flag is available for notmuch.database().index_file()


nmbug's internal version increases to 0.3 in this notmuch release. User-facing changes with this notmuch release:


New man page: notmuch-properties(7)

This new page to the manual describes common conventions for how properties are used by libnotmuch, the CLI, and associated programs. External projects that use properties are encouraged to claim their properties and conventions here to avoid collisions.