With blocking message passing primitives, Minix has to be careful to avoid deadlock.
A sends to B, but B doesn't do a receive. So A blocks
Now B sends to A. A doesn't receive because it is still blocked waiting for B to receive A's message. B blocks since A hasn't received the message. A and B would be deadlocked.
When a process attempts to send a message, Minix would need to check to see if granting the request to send could cause deadlock.
However, if A is a user level process and B is a server process, B only replies (sends) to A if it has already received from A. So in this case, the conditions of the deadlock senario don't apply.
If A is a server process and B is the user level process, B isn't allowed to send without doing a receive. So in this case also, the conditions of the deadlock senario don't apply.