cc -o addrlookup addrlookup.c `pkg-config --cflags --libs gobject-2.0` -lnotmuch
* Shell/fgrep/perl combination [nottoomuch-addresses.sh](https://github.com/domo141/nottoomuch/blob/master/nottoomuch-addresses.rst).
- This tools maintains it's own address "database" gathered from email
+ This tools maintains its own address "database" gathered from email
files notmuch knows and search from that "database" is done by `fgrep(1)`.
* python/sqlite combination [notmuch-abook](https://github.com/guyzmo/notmuch-abook/)
## How to sign/encrypt messages with gpg
-Messages can by signed using gpg by invoking
+Messages can be signed using gpg by invoking
`M-x mml-secure-sign-pgpmime` (or `M-x mml-secure-encrypt-pgpmime`).
These functions are available via the standard `message-mode` keybindings
`C-c C-m s p` and `C-c C-m c p`. To sign outgoing mail by default, use the
of `mml-secure-sign-pgpmime` to sign the whole message instead of just one
part.
+If you want to automatically encrypt outgoing messages if the keyring
+contains a public key for every recipient, you can add something like
+that to your `.emacs` file:
+
+ (defun message-recipients ()
+ "Return a list of all recipients in the message, looking at TO, CC and BCC.
+
+ Each recipient is in the format of `mail-extract-address-components'."
+ (mapcan (lambda (header)
+ (let ((header-value (message-fetch-field header)))
+ (and
+ header-value
+ (mail-extract-address-components header-value t))))
+ '("To" "Cc" "Bcc")))
+
+ (defun message-all-epg-keys-available-p ()
+ "Return non-nil if the pgp keyring has a public key for each recipient."
+ (require 'epa)
+ (let ((context (epg-make-context epa-protocol)))
+ (catch 'break
+ (dolist (recipient (message-recipients))
+ (let ((recipient-email (cadr recipient)))
+ (when (and recipient-email (not (epg-list-keys context recipient-email)))
+ (throw 'break nil))))
+ t)))
+
+ (defun message-sign-encrypt-if-all-keys-available ()
+ "Add MML tag to encrypt message when there is a key for each recipient.
+
+ Consider adding this function to `message-send-hook' to
+ systematically send encrypted emails when possible."
+ (when (message-all-epg-keys-available-p)
+ (mml-secure-message-sign-encrypt)))
+
+ (add-hook 'message-send-hook #'message-sign-encrypt-if-all-keys-available
+
### Troubleshooting message-mode gpg support
- If you have trouble with expired subkeys, you may have encountered
"-m" (concat "<" message-id ">")
"-n" "1"
"-f" "%{commit_ref}"))))
+
+## Never forget attachments
+
+Very often we forget to actually attach the file when we send an email
+that's supposed to have an attachment. Did this never happen to you?
+If not, then it will.
+
+There is a hook out there that checks the content of the email for
+keywords and warns you before the email is sent out if there's no
+attachment. This is currently work in progress, but you can already
+add the hook to your `~/.emacs.d/notmuch-config.el` file to test
+it. Details available (and feedback welcome) in the [relevant
+discussion](https://notmuchmail.org/pipermail/notmuch/2018/026414.html).