foxcpp / foxcpp/maddy-storage

Message threading

Open
#8 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
3
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Message should be grouped into threads based on In-Reply-To, References Message-Id header fields. Message can belong to one or more threads. Storage layer should be able to produce thread tree (each message is linked directly to the message it is replying to) or flattened thread list (just list every message in thread).

Since each message belong to at least one thread and most threads don't have more than one message, we don't want to create a separate thread object for each message. Consider reusing message object as a thread object - each message contains two references - thread root message ID and thread parent message ID.

maddy-storage should support two threading algorithms (ORDEREDSUBJECT and REFERENCES) described in https://datatracker.ietf.org/doc/html/rfc5256. Note that go-imap v2 does not support THREAD extension server-side yet: https://github.com/emersion/go-imap/issues/533

For future JMAP compatibility, we don't merge threads if messages arrive out-of-order as this would require changing message IDs.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.