I think it's reasonable to allow senders to revoke a sent message, particularly if it was sent just a short period of time ago. The only assurance you would have that this works is if both sender/receiver are on the same system. The question is a little trickier if the receiver has read the message. And, I agree, that after some period of time, particularly after the receiver has read the message, the message should be inviolate on the receivers side.
If it hasn't been delivered to the user's device, fine. Once it's been delivered, it shouldn't be modified.
I suppose I might be OK with individual exceptions to this rule, if some sensitive message was sent, after going through customer service. It certainly shouldn't be a one click to delete.