You're making a mistake with "message" and "$msgId" as you probably don't want a "message" level but just directly the $msgId (if messages are directly the chat children). Hence, you should just combine these.
Then for the user creation date, it depends if you're saving your users in Firebase or somewhere else. If Firebase, then you could use something like root.child('users/' + auth.id + '/created_at') for your comparison. If somewhere else, use the auth token to pass the user signup date. In the meantime, Firebase provides server side timestamp for the comparison.
"$msgId": {
".read": "data.child('timestamp').val() >= auth.created_date",
".write": true,
".validate": "newData.hasChildren(['name','text','timestamp']) && newData.child('timestamp').val() == now"
}