Ответ на сообщение не обязательно содержит что-либо из исходного сообщения. MUA, скорее всего, предложит модифицированную (например, с добавлением «Re:») версию исходного объекта, и, очевидно, адреса также используются для соответствующих значений по умолчанию. Ни одно из другого содержимого сообщения не является частью ответа (если только отправитель намеренно не включает его, как при цитировании или пересылке). Любые X-заголовки, которые у вас есть в вашем сообщении, конечно же, не будут включены в ответ (если вы не контролируете этот MUA).
Однако ваш план отслеживания исходного сообщения вполне осуществим: см. Раздел 3.6.4 RFC 5322 . Каждое сообщение должно (не обязательно) иметь заголовок идентификатора сообщения и, при необходимости, заголовки In-Reply-To и References.
Поле «Message-ID:» содержит один уникальный идентификатор сообщения. Поля «References:» и «In-Reply-To:» содержат один или несколько уникальных идентификаторов сообщений, которые могут быть разделены [пробелами].
In-Reply-To - это упоминание, чтобы идентифицировать сообщение (или сообщения), на которое (а) отвечают, в то время как References идентифицирует всю цепочку беседы. Заголовок References должен содержать все содержимое заголовка References сообщения, на которое вы отвечаете, поэтому вам нужно только последнее сообщение для идентификации всей цепочки.
Обратите внимание, что In-Reply-To и Reply-To - это не одно и то же (последний указывает адрес, на который отправитель желает получить ответы).
Предполагая, что у вас есть исходное сообщение, вы сможете использовать заголовок References любого ответа для идентификации исходного сообщения. Не каждый MUA будет корректно обрабатывать ссылки или In-Reply-To, но большинство будет.