the simplest and most effective method would be a commercial ips ( intrusion prevention system )
such as ironmail.
they will scan for viruses, spam, phishing, block specific sites or domains, yet allow exactly what traffic you want.
ironmail itself will also allow control on a per system basis for access to internet. ( probably most will )
a good ips will be scalable, with good reports comments on user lists from the provider. ( usenet lists, irc channels, and email lists )
for internal ( your own server ) based firewalling, you would have to detail which firewall method you want to use, or way to many options to detail. most will not support blocking specific hosts with dhcp, as they block on ip, not hw address