diff options
author | Vincent Ambo <mail@tazj.in> | 2018-06-06T08·22+0200 |
---|---|---|
committer | Vincent Ambo <mail@tazj.in> | 2018-06-06T08·22+0200 |
commit | 0806463a004de5258640664280b69b1118c624b2 (patch) | |
tree | 3e2c715bc10047839f0d386c65b91af1c4a29e9c | |
parent | 66e86d2546c8abdc22cc7333e85e50eef3408c3d (diff) |
fix(mail): Add hack to "warm up" GPG agent before sending mail
This is required in order to let password lookups work correctly when shelling out to password-store from MSMTP, as it won't be calling pinentry correctly otherwise.
-rw-r--r-- | init/functions.el | 9 | ||||
-rw-r--r-- | init/mail.el | 8 |
2 files changed, 17 insertions, 0 deletions
diff --git a/init/functions.el b/init/functions.el index 5ed9a06fd6fb..84a689656425 100644 --- a/init/functions.el +++ b/init/functions.el @@ -190,4 +190,13 @@ Including indent-buffer, which should not be called automatically on save." (run-at-time (password-store-timeout) nil 'password-store-clear)))))) +(defun warmup-gpg-agent (arg &optional exit) + "Function used to warm up the GPG agent before use. This is + useful in cases where there is no easy way to make pinentry run + in the correct context (such as when sending email)." + (interactive) + (message "Warming up GPG agent") + (epg-sign-string (epg-make-context) "dummy") + nil) + (provide 'functions) diff --git a/init/mail.el b/init/mail.el index 0d5fdc45374f..ecc6aa4648e9 100644 --- a/init/mail.el +++ b/init/mail.el @@ -42,4 +42,12 @@ ;; in the UI m( ("vincent@aprila.no" . "aprila/Sende element"))) +;; MSMTP decrypts passwords using pass, but pinentry doesn't work +;; correctly in that setup. This forces a warmup of the GPG agent +;; before sending the message. +;; +;; Note that the sending function is advised because the provided hook +;; for this seems to run at the wrong time. +(advice-add 'notmuch-mua-send-common :before 'warmup-gpg-agent) + (provide 'mail-setup) |