How to Set Up a Private Newsgroup Server with INN2 on Debian

This guide explains how to set up the InterNetNews (INN) newsgroup server to host "local" or "private" newsgroups. This means groups that are hosted locally and aren't part of Usenet. This is useful, for example, if you want to set up a private on-line community, or private discussion boards at a business.

This guide assumes no prior familiarity with the INN software or the NNTP protocol, but basic familiarity with using and configuring GNU/Linux is assumed. The guide is written for Debian Squeeze (6.0), but should be easy to adapt to other GNU/Linux distributions.

Goals

This tutorial will result in a news server with the following features. The group prefix "l3vel", and group names "l3vel.general", "l3vel.test", and "l3vel.private" are placeholders for the ones you choose.

In the above goals, there are three levels of authentication. Users who have neither an account on the server nor a CECIL-ID are called public users. Users who have a CECIL-ID, but not an account on the server are called cecil users. Users who have an account on the server are called private users.

Installing InterNetNews

Installing INN 2 on Debian Squeeze is easy.

apt-get update
apt-get install inn2

On other systems, you may have to compile it yourself. If you do, be sure to include the perl hooks functionality.

InterNetNews Overview

INN is actually composed of multiple daemons. The ones we need to be concerned about are:

The following files and folders are important to INN.

Creating Newsgroups

Before we add newsgroups, we need to tell INN what our organization, domain name, etc. is. Set the following options in inn.conf.

organization: example-organization
pathhost: news.example.com
domain: example.com

Now we can add the newsgroups. This takes two steps. First, we use the ctlinnd program to create the groups, then give them descriptions in /var/lib/news/newsgroups.

# ctlinnd newgroup l3vel.general
Ok
# ctlinnd newgroup l3vel.test
Ok
# ctlinnd newgroup l3vel.private
Ok

The same could be accomplished by editing the /usr/lib/news/active file, but it is safer to use the tool.

Now give them descriptions in /var/lib/news/newsgroups.

l3vel.general    General discussion
l3vel.test       A newsgroup for testing
l3vel.private    Private discussion

There must be at least one tab between the group name and the description, so make sure your editor isn't expanding tabs to spaces.

That's all there is to it! The newsgroups now exist are ready to be read and posted to, but by default, only localhost has permission to do so, so next, we set up user authentication.

CECIL-ID

- cancel-enabling cryptographic identification lock

Linux Authentication & Private Groups