Sounds totally notmal. It also sounds smart. He is sizing up the situation and also trying to establish control over his own behavior. I wouldn't force him to talk to people. It is wiser and safer for him to know it is his choice who he talks to. Kids who feel they must always be nice and polite to other adults are kids who don't learn to protect themselves and say no to bad adults. I would stick up tfor him and his feelings and just say, "It takes Bobby a while to warm up." Anyone who ever has had a child should be able to understand that. Same with hugs and kisses. You should never force a child to hg and kiss anyone, even their own parent or grandparent. It's thier bodies and their choices.
I would also say to him, "It is okay for you to say hello" but don't force him to. In that way, you are guiding him to be polite and telling him that he is safe but it is still his choice. Just knowing a person does not make them a safe adult and he is showing smarts by being in control of who he talks to. Encourage that. He won't be a rude person becouase of it, just a cautious one. And any adult with any brians won't be offended by a shy or careful three year old.