Explain shows index doesnt working but i have an index
OR does not optimize well.  The usual workaround is to reformulate the query to be the UNION of multiple SELECTs to look for the alternatives.  However, your situation might work better with a second LEFT JOIN and COALESCE().

SELECT ..., COALESCE(r.sender, s.receiver), ...
    FROM ...
    LEFT JOIN ... AS r WHERE receiver = '...'
    LEFT JOIN ... AS s WHERE sender = '...'


Side notes:


What the heck is the id that needs to be varchar(250)?
There are two identical indexes on username; drop one.
Switch from MyISAM to InnoDB.  Virtually all arguments for MyISAM are "old wives' tales".