notmuch clon
Find a file
Daniel Kahn Gillmor a990585408 crypto: use stashed session-key properties for decryption, if available
When doing any decryption, if the notmuch database knows of any
session keys associated with the message in question, try them before
defaulting to using default symmetric crypto.

This changeset does the primary work in _notmuch_crypto_decrypt, which
grows some new parameters to handle it.

The primary advantage this patch offers is a significant speedup when
rendering large encrypted threads ("notmuch show") if session keys
happen to be cached.

Additionally, it permits message composition without access to
asymmetric secret keys ("notmuch reply"); and it permits recovering a
cleartext index when reindexing after a "notmuch restore" for those
messages that already have a session key stored.

Note that we may try multiple decryptions here (e.g. if there are
multiple session keys in the database), but we will ignore and throw
away all the GMime errors except for those that come from last
decryption attempt.  Since we don't necessarily know at the time of
the decryption that this *is* the last decryption attempt, we'll ask
for the errors each time anyway.

This does nothing if no session keys are stashed in the database,
which is fine.  Actually stashing session keys in the database will
come as a subsequent patch.
2017-12-04 21:48:31 -04:00
bindings Merge branch 'release' 2017-11-05 20:25:54 -04:00
compat Use rooted paths in .gitignore files 2017-08-18 19:42:35 -03:00
completion cli/reindex: add --try-decrypt=(true|false) 2017-10-21 19:58:52 -03:00
contrib database: add n_d_index_file (deprecates n_d_add_message) 2017-08-23 07:38:37 -03:00
debian debian: bump Standards-Version to 4.1.1 2017-12-04 21:24:33 -04:00
devel devel/check-out-of-tree-build.sh: consistent naming, consistent quoting 2017-10-05 07:40:36 -03:00
doc crypto: use stashed session-key properties for decryption, if available 2017-12-04 21:48:31 -04:00
emacs emacs: sanitize subject in replies 2017-09-27 08:15:02 -03:00
lib crypto: use stashed session-key properties for decryption, if available 2017-12-04 21:48:31 -04:00
packaging Use https instead of http where possible 2016-06-05 08:32:17 -03:00
parse-time-string Use https instead of http where possible 2016-06-05 08:32:17 -03:00
performance-test test: unbreak performance tests 2017-12-04 21:04:38 -04:00
test test: unbreak performance tests 2017-12-04 21:04:38 -04:00
util crypto: use stashed session-key properties for decryption, if available 2017-12-04 21:48:31 -04:00
vim VIM: Improve performance of folders_render 2015-01-23 18:18:54 +01:00
.dir-locals.el .dir-locals.el: changed one-char comment prefix '; ' to two; '; ; ' 2012-01-22 08:41:37 -04:00
.gitignore gitignore: add .stamps 2017-08-30 20:14:43 -03:00
.mailmap create .mailmap file (for git shortlog/blame) 2016-07-29 06:01:44 +09:00
.travis.yml .travis.yml: Switch to "sudo: false" for faster builds 2017-08-30 07:26:49 -03:00
AUTHORS Drop date.c file, (use identical function from GMime instead). 2009-11-02 14:36:33 -08:00
command-line-arguments.c cli: allow empty strings for notmuch insert --folder argument 2017-11-08 09:46:44 -05:00
command-line-arguments.h cli: allow empty strings for notmuch insert --folder argument 2017-11-08 09:46:44 -05:00
configure configure: session key handling in gmime maps to built_with("session_key") 2017-12-04 21:39:50 -04:00
COPYING Use https instead of http where possible 2016-06-05 08:32:17 -03:00
COPYING-GPL-3 Use https instead of http where possible 2016-06-05 08:32:17 -03:00
debugger.c cli: convert notmuch_bool_t to stdbool 2017-10-09 22:24:02 -03:00
gmime-filter-reply.c cli: convert notmuch_bool_t to stdbool 2017-10-09 22:24:02 -03:00
gmime-filter-reply.h Typsos 2009-11-18 03:21:36 -08:00
hooks.c Use https instead of http where possible 2016-06-05 08:32:17 -03:00
INSTALL Use https instead of http where possible 2016-06-05 08:32:17 -03:00
Makefile support make goals after initial {'', dist, data}clean goal(s) 2017-03-10 08:04:27 -04:00
Makefile.global rename libutil.a to libnotmuch_util.a 2017-03-18 21:37:43 -03:00
Makefile.local crypto: move into libnotmuch_util 2017-10-20 07:58:10 -03:00
mime-node.c crypto: use stashed session-key properties for decryption, if available 2017-12-04 21:48:31 -04:00
NEWS Merge branch 'release' 2017-11-05 20:25:54 -04:00
notmuch-client.h cli: set up shared command-line arguments for indexing 2017-10-21 19:58:11 -03:00
notmuch-compact.c cli: convert notmuch_bool_t to stdbool 2017-10-09 22:24:02 -03:00
notmuch-config.c config: define new option index.try_decrypt 2017-10-21 19:54:33 -03:00
notmuch-count.c cli: make notmuch count --exclude a boolean argument 2017-10-15 19:22:40 -03:00
notmuch-dump.c cli: convert notmuch_bool_t to stdbool 2017-10-09 22:24:02 -03:00
notmuch-insert.c cli: allow empty strings for notmuch insert --folder argument 2017-11-08 09:46:44 -05:00
notmuch-new.c cli/new: add --try-decrypt=(true|false) 2017-10-21 19:58:32 -03:00
notmuch-reindex.c cli/reindex: add --try-decrypt=(true|false) 2017-10-21 19:58:52 -03:00
notmuch-reply.c crypto: rename notmuch_crypto_t to _notmuch_crypto_t 2017-10-12 22:11:25 -03:00
notmuch-restore.c cli: convert notmuch_bool_t to stdbool 2017-10-09 22:24:02 -03:00
notmuch-search.c cli: convert notmuch_bool_t to stdbool 2017-10-09 22:24:02 -03:00
notmuch-setup.c cli: convert notmuch_bool_t to stdbool 2017-10-09 22:24:02 -03:00
notmuch-show.c crypto: rename notmuch_crypto_t to _notmuch_crypto_t 2017-10-12 22:11:25 -03:00
notmuch-tag.c cli: convert notmuch_bool_t to stdbool 2017-10-09 22:24:02 -03:00
notmuch-time.c Use https instead of http where possible 2016-06-05 08:32:17 -03:00
notmuch.c cli: set up shared command-line arguments for indexing 2017-10-21 19:58:11 -03:00
query-string.c Use https instead of http where possible 2016-06-05 08:32:17 -03:00
README Use https instead of http where possible 2016-06-05 08:32:17 -03:00
README.rst Use https instead of http where possible 2016-06-05 08:32:17 -03:00
sprinter-json.c cli: convert notmuch_bool_t to stdbool 2017-10-09 22:24:02 -03:00
sprinter-sexp.c cli: convert notmuch_bool_t to stdbool 2017-10-09 22:24:02 -03:00
sprinter-text.c cli: convert notmuch_bool_t to stdbool 2017-10-09 22:24:02 -03:00
sprinter.h cli: convert notmuch_bool_t to stdbool 2017-10-09 22:24:02 -03:00
status.c cli/insert: return EX_TEMPFAIL for some errors 2016-12-07 07:00:40 -04:00
tag-util.c cli: convert notmuch_bool_t to stdbool 2017-10-09 22:24:02 -03:00
tag-util.h cli: convert notmuch_bool_t to stdbool 2017-10-09 22:24:02 -03:00
version version: bump to 0.25.2 2017-11-05 19:59:30 -04:00

Notmuch - thread-based email index, search and tagging.

Notmuch is a system for indexing, searching, reading, and tagging
large collections of email messages in maildir or mh format. It uses
the Xapian library to provide fast, full-text search with a convenient
search syntax.

Notmuch is free software, released under the GNU General Public
License version 3 (or later).

Building notmuch
----------------
See the INSTALL file for notes on compiling and installing notmuch.

Running notmuch
---------------
After installing notmuch, start by running "notmuch setup" which will
interactively prompt for configuration information such as your name,
email address, and the directory which contains your mail archive to
be indexed. You can change any answers later by running "notmuch
setup" again or by editing the .notmuch-config file in your home
directory.

With notmuch configured you should next run "notmuch new" which will
index all of your existing mail. This can take a long time, (several
hours) if you have a lot of email, (hundreds of thousands of
files). When new mail is delivered to your mail archive in the future,
you will want to run "notmuch new" again. These runs will be much
faster as they will only index new messages.

Finally, you can prove to yourself that things are working by running
some command-line searches such as "notmuch search
from:someone@example.com" or "notmuch search subject:topic". See
"notmuch help search-terms" for more details on the available search
syntax.

The command-line search output is not expected to be particularly
friendly for day-to-day usage. Instead, it is expected that you will
use an email interface that builds on the notmuch command-line tool or
the libnotmuch library.

Notmuch installs a full-featured email interface for use within
emacs. To use this, first add the following line to your .emacs file:

	(autoload 'notmuch "notmuch" "Notmuch mail" t)

Then, either run "emacs -f notmuch" or execute the command "M-x
notmuch" from within a running emacs.

If you're interested in a non-emacs-based interface to notmuch, then
please join the notmuch community. Various other interfaces are
already in progress, (an interface within vim, a curses interface,
graphical interfaces based on evolution, and various web-based
interfaces). The authors of these interfaces would love further
testing or contribution. See contact information below.

Contacting users and developers
-------------------------------
The website for Notmuch is:

	https://notmuchmail.org

The mailing list address for the notmuch community is:

	notmuch@notmuchmail.org

We welcome any sort of questions, comments, kudos, or code there.

Subscription is not required, (but if you do subscribe you'll avoid
any delay due to moderation). See the website for subscription
information.

There is also an IRC channel dedicated to talk about using and
developing notmuch:

	IRC server:	irc.freenode.net
	Channel:	#notmuch