in reply to NNTP filtering and whitelists

My answer has nothing to do with perl, your solution is fairly easy to do with available (non - perl) tools.

Lock off NNTP masquerading, and run your own NNTP server on your masquerading box. I think every NNTP server allows you to choose the newsgroups you want to offer. In a way, every NNTP server is a proxy, since they pass messages to each other.

The only flaw with this is that you will have to store the messages on the firewall, but if you lock off the binaries groups there will probably only be a few megs per day.

Even better, some NNTP servers have a "cache on demand" function. They won't download a newsgroup until a client (program) requests it. The server then goes and fetches it from the upstream feed. My old ISP used to do this, and it worked well.

Can't remember what the programs are called, but your distro will have at least one of them.

____________________
Jeremy
I didn't believe in evil until I dated it.