-
-
Notifications
You must be signed in to change notification settings - Fork 105
Description
We currently synchronize "seen" status of messages by setting \Seen
flag on IMAP and then looking for new \Seen
flags using CONDSTORE
IMAP extension. This approach has multiple disadvantages:
- It requires that the server supports
CONDSTORE
extension. For example Maddy does not support CONDSTORE yet: Feature request: Quotas and CONDSTORE for Delta Chat foxcpp/maddy#727 - It leaks the seen status to the server without any encryption.
- It requires more than just store-and-forward queues and prevents replacing IMAP with simpler protocols like POP3 or UUCP or some HTTP-based API for queue polling.
A simpler approach would be to send MDNs to self when bcc_self
(aka multidevice) config is enabled, regardless of whether the message requested and MDN. If MDN was requested and we have MDNs enabled, then also send to the message sender, but MDN to self should be sent regardless of whether read receipts are actually enabled.
sync_seen_flags
and CONDSTORE
check is better completely removed, maybe after one release. store_seen_flags_on_imap
can be kept for unencrypted non-chat messages if it's not much code.
One potential problem with sending MDNs is that it may trigger ratelimits on some providers and count as another recipient. We cannot upload MDNs over IMAP like sync messages because we usually need to send MDN to the original sender as well.