Skip to content

Latest commit

 

History

History
231 lines (152 loc) · 7.48 KB

README.md

File metadata and controls

231 lines (152 loc) · 7.48 KB

newsd

newsd -- Standalone Local NNTP News Server

WHAT IS NEWSD?

Newsd is a single host NNTP news server for managing private
newsgroups (NOT a part of usenet).

It is useful for serving private newsgroup(s) to an intranet
or the Internet. It can receive postings via NNTP or via a
mail gateway.

Messages can be read and replied to using NNTP clients;
tested with Thunderbird and Opera. One can also create
web tools to monitor the newsgroup spooler directly,
or via NNTP.

Newsd does /NOT/ interface with other news servers, and cannot
manage distributed news feeds, i.e. Usenet news. This is what
keeps newsd simple, acting as a single server for newsgroups
that NNTP clients can connect to for interaction.

LICENSING

Newsd comes with complete free source code.  Newsd is
available under the terms of the GNU General Public
License.  See the file "LICENSE" for more info.

BUILD INSTRUCTIONS

Run GNU make to build the newsd binary:

    make
    
(NOTE: on some systems 'gnu make' is called 'gmake')

Currently newsd reverted to old school separate Makefiles
to manage supporting different operating systems. (I find
autoconf too complicated, and haven't fully learned cmake yet)

The correct file will be loaded automatically (if it exists), e.g. 
    
    Makefile.Linux          -- linux presets
    Makefile.FreeBSD        -- FreeBSD presets

If your OS is not offered, run 'uname' to find the name
of your operating system, and make copy one of the files
most like your OS, e.g.

    $ uname
    OpenBSD

    $ cp Makefile.FreeBSD Makefile.OpenBSD

Then edit the new file, and make any necessary customizations.

If you want newsd to default to using a particular directory
hierarchy, e.g. $HOME/newsd/test, edit your Makefile.XXX
file (XXX being your operating system's name), and change
the settings, e.g.

    $ vi Makefile.Linux
    ____________________________________________________
    # Linux settings
    CXX          = g++
    BIN_DIR     := /usr/myhome/newsd/test/bin             << Make these
    CONFIG_FILE := /usr/myhome/newsd/test/etc/newsd.conf  << changes.
    SPOOL_DIR   := /usr/myhome/newsd/test/spool           << Be sure to use
    LOG_DIR     := /usr/myhome/newsd/test/log             << absolute paths
    MAN_DIR     := /usr/myhome/newsd/test/man             << for each setting.
    SENDMAIL    := /usr/sbin/sendmail
    ____________________________________________________

Once configured, these two commands will create the 'test'
directory hierarchy, and builds/installs newsd into it:

    $ mkdir -p /usr/myhome/newsd/test/{bin,etc,spool,log,man}

    $ make clean all install

This will preconfigure the newsd.conf file and compiled-in
defaults into newsd to use that directory layout:

        $HOME/newsd/test/bin/newsd          -- the newsd executable
        $HOME/newsd/test/etc/newsd.conf     -- a pre-configured newsd.conf
        $HOME/newsd/test/log/               -- newsd.log will be written here
        $HOME/newsd/test/spool/             -- newsgroups will be managed here
        $HOME/newsd/test/man/               -- manual pages

To uninstall newsd from that directory hierarchy, use:

    make uninstall

INSTALL INSTRUCTIONS

Once the software builds (see above), you should be able to
install the software with:

    make install

Then edit the installed newsd.conf file to make any needed
changes for your setup.

NOTE: By default, the newsd.conf file's 'User' option forces newsd
      to run as the non-root user 'news'.
      
      If that user doesn't exist, either change the setting to
      an existing user account to use, or create the news account
      (Linux: 'adduser news', OSX: System Preferences).

      Either way, this user will own the news spooler directory,
      and its contents.

Now try running the daemon in foreground mode with debugging
enabled, to see if it likes your settings:

    ./newsd -d -f

..or to run it in the background as a daemon, then just:

    ./newsd

..which will log output to ${LOG_DIR}/newsd.log

The daemon should continue running, logging
messages whenever NNTP clients connect to it.

CONFIGURING NEWSD TO START ON BOOT

See the bootscripts/<your_os>/README.txt file
for how to configure your machine to run newsd
automatically on boot.

CREATING NEWSGROUPS

To create new newsgroups, you can use:

    sudo ./newsd -newgroup

..and just answer the questions.

Once a new group is created, any news clients should
immediately be able to subscribe to the new group
and if posting is enabled, post messages to it.

Or, you can just as easily use unix commands to do
what 'newsd -newgroup' does. For example, to create
a rush.test newsgroup:

    mkdir -m 755 -p ${SPOOL_DIR}/rush/test
    chown -R news ${SPOOL_DIR}

    ( echo description Test group;
      echo creator     John Doe;
      echo postok      1;
      echo postlimit 0 ) > ${SPOOL_DIR}/rush/test/.config

MAIL GATEWAY

Email messages can be injected into the newsd groups
using e.g.

    cat email_message | ./newsd -mailgateway rush.general

..which would add the text contents of email_message to
the newsgroup 'rush.general'.

For each email address to be used as a gateway to a group,
configure 'newsd -mailgateway <GROUP_NAME>' as the mail
forward command.

DOCUMENTATION

There's documentation in both man page format and HTML:

    make man        -- makes manual pages (ending in *.8)
    make html       -- makes html docs (ending in *.html)

'make install' should automatically create and install
the man pages, such that 'man newsd' and 'man newsd.conf'
work normally.

FEATURES

Newsd provides simple file-based system administration.  No
satellite binaries or scripts are needed to install,
configure, administer, or maintain newsd.

LIMITATIONS

Refer to the "newsd" man page.

HISTORY

This tool was originally written by Greg Ercolano in January 2003
to manage newsgroups for his commercial product "Rush". At that time
the project was managed as a series of tar files:
http://seriss.com/people/erco/unixtools/newsd/

In 2004, Mike Sweet became interested in using newsd to replace
innd to manage the FLTK project's newsgroup, and later the CUPS 
series of newsgroups. Mike put newsd into service by November 3 2004.

Since then, FLTK and CUPS newsgroups were managed by newsd 1.44
between June 2005 and May 2013. In May 2013, Mike's server at easysw
crashed.

Greg took over the FLTK website and moved the two main newsgroups
to google groups (mainly to manage spam better), but left newsd
in place to act as an NNTP mirror of the google groups, and to manage
the bugs, commits and administration newsgroups.

Since 2013, Greg has returned to maintaining newsd, and in 2017
put it up on github as: https://github.com/erco77/newsd, where its
public access can continue. The autoconf and web tools that Mike
added were removed to return the project to a simpler code base.

REPORTING BUGS

Please use github's issue page:

    https://github.com/erco77/newsd/issues

..or email Greg directly: [email protected]