Yes, such marking of messages would be a problem: we currently store only the ID of the most recent received/read message. All older messages are assumed to be read too. The feature you want would require server-side changes. I.e. instead of keeping just the most recent read/received ID you need to mark individual messages as read/received by each subscriber. It can be done, just not that simple. And would require changing the DB schema.
Take a look how how information about soft-deleted messages is stored. Read/recv would have to be done in a similar (complex) way. Potentially, it's possible to add a column to the deleted messages table (dellog) like 'action' and store recv/read in that table. It would be a lot less work. But the table would be huge. Something would have to be done about it.
You could also do it purely on the client. But then the read/recv information won't be shared between user's devices, say between desktop and mobile.