Sounds more like reactive. Does he do this to your roommates or is he used to them now? As annoying as it may be to you, you need to crate him when others come in while you are working on it in controlled interations. The longer he is allowed to practice this behavior, the harder it will be to stop it.
Best thing to do is have his attention BEFORE someone comes in the house or on the property. Have him focus on you while they enter and once he is calm and they is settled, take him over to say hello (on leash).
Having a trainer to help you through the steps will be helpful because they will not react when he charges which is important.