From 0806463a004de5258640664280b69b1118c624b2 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Wed, 6 Jun 2018 10:22:06 +0200 Subject: [PATCH] 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. --- init/functions.el | 9 +++++++++ init/mail.el | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/init/functions.el b/init/functions.el index 5ed9a06fd..84a689656 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 0d5fdc453..ecc6aa464 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)