notmuch/test/corpora
Daniel Kahn Gillmor 27b25e45dc test: avoid showing legacy-display parts
Enigmail generates a "legacy-display" part when it sends encrypted
mail with a protected Subject: header.  This part is intended to
display the Subject for mail user agents that are capable of
decryption, but do not know how to deal with embedded protected
headers.

This part is the first child of a two-part multipart/mixed
cryptographic payload within a cryptographic envelope that includes
encryption (that is, it is not just a cleartext signed message).  It
uses Content-Type: text/rfc822-headers.

That is:

A └┬╴multipart/encrypted
B  ├─╴application/pgp-encrypted
C  └┬╴application/octet-stream
*   ╤ <decryption>
D   └┬╴multipart/mixed; protected-headers=v1 (cryptographic payload)
E    ├─╴text/rfc822-headers; protected-headers=v1 (legacy-display part)
F    └─╴… (actual message body)

In discussions with jrollins, i've come to the conclusion that a
legacy-display part should be stripped entirely from "notmuch show"
and "notmuch reply" now that these tools can understand and interpret
protected headers.

You can tell when a message part is a protected header part this way:

 * is the payload (D) multipart/mixed with exactly two children?
 * is its first child (E) Content-Type: text/rfc822-headers?
 * does the first child (E) have the property protected-headers=v1?
 * do all the headers in the body of the first child (E) match
   the protected headers in the payload part (D) itself?

If this is the case, and we already know how to deal with the
protected header, then there is no reason to try to render the
legacy-display part itself for the user.

Furthermore, when indexing, if we are indexing properly, we should
avoid indexing the text in E as part of the message body.

'notmuch reply' is an interesting case: the standard use of 'notmuch
reply' will end up omitting all mention of protected Subject:.

The right fix is for the replying MUA to be able to protect its
headers, and for it to set them appropriately based on headers found
in the original message.

If a replying MUA is unable to protect headers, but still wants the
user to be able to see the original header, a replying MUA that
notices that the original message's subject differs from the proposed
reply subject may choose to include the original's subject in the
quoted/attributed text. (this would be a stopgap measure; it's not
even clear that there is user demand for it)

This test suite change indicates what we want to happen for this case
(the tests are currently broken), and includes three additional TODO
suggestions of subtle cases for anyone who wants to flesh out the test
suite even further.  (i believe all these cases should be already
fixed by the rest of this series, but haven't had time to write the
tests for the unusual cases)

Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
2019-09-01 08:32:56 -03:00
..
broken test: two new messages for the 'broken' corpus 2018-04-20 11:23:31 -03:00
crypto test: signature verification during decryption (session keys) 2019-06-08 20:14:00 -03:00
default test: make it possible to have multiple corpora 2016-09-17 08:39:34 -03:00
html test: add known broken test for indexing html 2017-04-20 06:59:40 -03:00
lkml/cur test: add 'lkml' corpus 2017-04-13 21:55:43 -03:00
protected-headers test: avoid showing legacy-display parts 2019-09-01 08:32:56 -03:00
threading test: add known broken test for good In-Reply-To / bad References 2018-09-06 08:07:13 -03:00
README test/corpora: add an encrypted message for index decryption tests 2017-12-04 21:53:05 -04:00

This directory contains email corpora for testing.

default
  The default corpus is based on about 50 messages from early in the
  history of the notmuch mailing list, which allows for reliably
  testing commands that need to operate on a not-totally-trivial
  number of messages.

broken
  The broken corpus contains messages that are broken and/or RFC
  non-compliant, ensuring we deal with them in a sane way.

html
  The html corpus contains html parts

crypto
  The crypto corpus contains encrypted messages for testing.
  It should probably also contain signed messages in the future.
  Please add them!