I don't quite understand your structure (so, for instance, this example assumes that a UNIQUE key could be imposed upon sender_id, receiver_id, date, belong_to
), but I suspect you want something like this. Filter by user as necessary..
SELECT x.*
FROM messages x
JOIN
( SELECT sender_id
, receiver_id
, MAX(date) max_date
FROM messages
GROUP
BY receiver_id
, sender_id
) y
ON y.sender_id = x.sender_id
AND y.receiver_id = x.receiver_id
AND y.max_date = x.date
WHERE x.belong_to = x.receiver_id;