I have made a cgi app that allows read access to nntp. It comes in two flavors.
The first is just a single program that loads whatever you want each time you ask for it. (It is vary slow)
The second comes in two parts. One part that does the loading and one part that does the printing. The loading part just runs all the time and cashes what you ask for (or at least the 100 newest posts). The printing part connects to the reading part each time it starts up and pulls data from it.
The two versions share >%90 of there (hand written) code. This is accomplished by way of <shameless_plug> my NetIDL code generator. </shameless_plug>
the cgi sources can be found here
It's still a bit rough around the edges, but it works just fine. it's a bit spartan as far as comments go but I plan to fix that (sooner if people say they are using it) and a few other things.
As it stands you will need to adjust things a bit to get anything but digitalmars.D.learn (just change some constants in "server.d" or "local.d"). If you want to run more than one copy (more than one newsgroup) you will need to set each one to use a different port for accessing the "reader" process (this is set in "server.d" and "cgi.d").
If you want to do a total rebuild, you will need NetIDL which can be found here.