[BUG] notmuch-emacs: spoils sendmail -f with emacs 27 commit 3a59cc84069376802ba8fd731b524d78db58262c and later

Subject: [BUG] notmuch-emacs: spoils sendmail -f with emacs 27 commit 3a59cc84069376802ba8fd731b524d78db58262c and later

Date: Sun, 01 Dec 2019 18:10:59 +0100

To: notmuch

Cc: Stefan Monnier

From: Gregor Zattler

[@Stefan: FYI]
Dear notmuch developers,

I use notmuch-emacs configured with
(setq mail-specify-envelope-from t)
(setq mail-envelope-from 'header)
(setq send-mail-function 'sendmail-send-it)

this should/used to invoke sendmail (in my case exim4) with the email
address given in the From: header of the message buffer as
argument to sendmails -f option.

Since emacs 27 commit 3a59cc84069376802ba8fd731b524d78db58262c

     Author:     Stefan Monnier <monnier@iro.umontreal.ca>
     AuthorDate: Tue Jul 30 16:37:01 2019 -0400
     Commit:     Stefan Monnier <monnier@iro.umontreal.ca>
     CommitDate: Tue Jul 30 16:37:01 2019 -0400

     Parent:     add146f09f * lisp/bindings.el (mode-line-defining-kbd-macro): New defvar.
     Contained:  master
     Follows:    emacs-26.1 (6691)

     * lisp/gnus/message.el: Reduce redundancy with send-mail-function

     (message-send-mail-function) <function>: Remove `local-library` tests
     for libs distributed with Emacs.
     (message-use-send-mail-function): New function.
     (message-default-send-mail-function): Default to it, and remove cases
     already handled by it.
     (message--default-send-mail-function): New function.
     (message-send-mail-function) <variable>: Use it as new default.
     (message-sendmail-f-is-evil): Obey mail-specify-envelope-from if available.
     (message-check, message-with-reply-buffer): Use `declare`.
     (message-smtpmail-send-it): smtpmail accepts mail-header-separator,
     so simplify and declare obsolete.
     (message-send-mail-with-mailclient): Declare obsolete.
     (message-check-news-body-syntax): Don't presume that the checksum is
     a fixnum.

this actually invokes sendmail -f with an address derived from the
EMAIL environment variable.

It took me some time to understand, that there is no problem with
compose-mail/message-send-and-exit which are bound to ^X m and ^C
^C respectively within a barely configured emacs which I used for
If instead notmuch is loaded compose-mail/message-send-and-exit
and notmuch-mua-new-mail/notmuch-mua-send behave different.

With this command (with test.el as attached):

~/src/emacs/src/emacs -Q -nw -l /tmp/test.el

compose-mail/message-send-and-exit rightly show
-f example@example.org in the file /tmp/result (and then there is
an error because the notmuch commands are not known).

While this command

~/src/emacs/src/emacs -Q -nw -L ~/src/notmuch/emacs/ --eval "(require 'notmuch)" -f notmuch -l /tmp/test.el

wrongly show some other value for -f, depending on your EMAIL
environment variable, for both compose-mail/message-send-and-exit
and notmuch-mua-new-mail/notmuch-mua-send.

I read the code but I have no idea why and how to debug this.

Ciao; Gregor
 -... --- .-. . -.. ..--.. ...-.-

test.el (application/emacs-lisp)
notmuch mailing list