Copyright © 2002 Cornelius Krasel
Copyright © 2002, 2003, 2004, 2005, 2006, 2009, 2021 Matthias Andree
Table of Contents
Compiling causes a message 'SA_RESETHAND undeclared'!
This means that your operating system is too old and lacks this symbol which is required by POSIX. Please update your operating system.
I cannot compile leafnode on Linux!
Another common reason for the build to fail is that Leafnode depends on some system-specific information which is usually included in the sources of the kernel.
Unfortunately, some Linux distribution do
not install kernel sources by default; therefore,
compilation of Leafnode (and most other programs as
well) will fail. The obvious solution is to install
the kernel sources. On
Linux, if the kernel sources are installed in
Where/how do I get the source RPM? I want to modify it.
You can generate it yourself from the
source tarball (which contains the necessary
How do I copy/move the spool?
There are two important requirements to heed:
Leafnode refuses to start and tells things about my hostname!
There is a separate documentation file dedicated
to this issue, how to obtain a hostname, and how to tell
leafnode about it. Please see
Does leafnode support local newsgroups?
Leafnode 1.x does not support local newsgroups. Leafnode 2.x will do that.
How do I run leafnode as NNTP+SSL server?
Wrap leafnode with an SSL wrapper:
How do I use fetchnews with NNTP/SSL
servers, such as
Warning: SourceForge does not currently support the HEAD, STAT and BODY commands, so leafnode-1 is totally out of the play for now. leafnode-2 will work for lurking, but will likely be unable to post. Sourceforge are aware that we need these commands and will add them at a later time.
I cannot post, leafnode tells me the Message-ID is invalid.
Netscape Communicator, Mozilla and derived products (Beonex) will by default generate the Message-ID from the domain part of your E-Mail address. However, if your address is that of a big freemailer site (hotmail.com, yahoo.com, gmx.de), this will lead to invalid Message-IDs.
To work around this, go to the Mail &
Newsgroups settings and enclose your E-Mail
addresses into double quote marks, like
I cannot connect to my newsserver.
You may not have configured inetd or xinetd properly, or the corresponding super server is not running. Please review the installation instructions. See below for information specific to Red Hat.
To test the setup, try:
200 Leafnode NNTP Daemon, version 1.9.27.rel running at merlin.emma.line.org (my fqdn: merlin.emma.line.org)
Remote users cannot connect to leafnode.
You are connecting from outside the same
networks that your leafnode
server is in. Leafnode by default refuses connections from
LAN to prevent your leafnode server from abuse should you forget to
configure tcpd or make a mistake when writing your
If the clients are on dynamic IP, please use other methods of access instead, for instance SSH tunnels (which are also available on Windows, before you ask).
Fetchnews does not fetch any articles.
There are several reasons why this may be the case:
Fetchnews has problems retrieving new newsgroups.
Maybe your upstream server supports neither the XGTITLE news.group.name nor the LIST NEWSGROUPS news.group.name command.
In this case, add
Since the update, fetchnews does not post my new articles!
You have probably mixed old and new
binaries. Check your
While fetchnews is running, my modem hangs up.
An article that causes the interruption may contain three plus signs in a row (“+++”), which many modems interpret as the beginning of a command. You can change or disable this “escape” sequence. Consult your modem's manual, register S2 is a common place to configure this.
How can I run fetchnews as regular user (not root)?
For security reasons, this is not possible.
However, there is a tool named “sudo” that allows a regular, unprivileged user to impersonate another user, and this can be used to enable a regular user to run fetchnews.
“sudo” is available from http://www.courtesan.com/sudo/.
If “sudo” is installed on your
system, then run
username ALL = (news) NOPASSWD: /path/to/fetchnews
Remember to replace “username” and “/path/to/” with the user's login and the proper path to fetchnews.
Now, the user who has been enabled access to fetchnews can
I have unsubscribed from a newsgroup, but fetchnews still pulls articles for that group.
Your news reader talks to leafnode via the NNTP
protocol. This protocol provides no means for Leafnode to
determine which newsgroups you are actually subscribe.
Therefore, Leafnode assumes that a newsgroup that is not
read for a certain time (which can be configured with the
If you are impatient and want to stop retrieving
articles from that group immediately, delete the
corresponding file in the
How do I stop fetchnews from unsubscribing from newsgroups?
Make sure that your newsreader issues GROUP or LIST ACTIVE commands for each of the groups it is subscribed to when checking for new news, so that leafnode can actually see which groups are interesting. For instance, a newsreader configured to read the whole active file with a LIST command may lose subscriptions for low-traffic groups. See also the Gnus FAQ below.
As a last resort, change your cron job or
ip-up script to run
fetchnews is slow, how do I speed it up?
If you are using filters, try the article_despite_filter option (introduced in leafnode v1.9.33).
If your upstream server does not support XOVER, try using as few of the maxage, maxlines, maxbytes, minlines, maxcrosspost options as possible.
fetchnews keeps downloading the full newsgroup list every time it runs
Watch the fetchnews output for error messages, if you see a
message such as
Texpire does not expire articles.
The backup software that you are using may not reset the atime after reading a file. Check if you can reconfigure it to reset the “atime”.
As a workaround, run
Texpire message.id counts do not match the sum of the group counts!
This may happen if texpire has been interrupted previously, crashed, some other application touched the spool or the spool is corrupt.
leafnode loses subscriptions of low-traffic groups with Gnus.
Check the setting of gnus-read-active-file (you
can use customize-variable to do that), it should be
leafnode loses subscriptions of low-traffic groups with slrn.
Check the setting of read_active, it should be
When searching news with Netscape, I only get back “unknown command”.
To search news, older versions of Netscape needed a news server which supports the XPAT command. Leafnode-1 does not. If you want to use Netscape, you have to upgrade to version 4.5 and press the “options” button which appears in the “search messages” window. In the box which appears you have to select “on your local system”.
Outlook Express locks up.
This can be caused by a corrupted
Thanks to Jim Gifford who talked to Microsoft to find this solution.
Tin complains about a missing file
Either you have started the wrong version of tin (the one which tries to read news directly from the spool) or your groupinfo file is corrupt.
In the first case, simply invoke tin with
the -r flag:
This section will tell you how to obtain a stack backtrace, a special program state output that is very useful to somebody who is about to debug a crash.
The prerequisite to work is that the program is
not stripped, i. e. it contains the debug
symbols. That means leafnode must have been installed with
make install rather than
install-strip. Note that most packagers (for RPM at
make install-strip to save space.
To find out if your leafnode installation has been
/usr/local/sbin/leafnode (adjust the path as
necessary, packages will usually install to
/usr/sbin/leafnode instead), here is a sample
output of an unstripped program:
/usr/local/sbin/leafnode: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), not stripped
This is simple:
PROGRAM by the name of the
program that crashed, for
Replace PROGRAM by the name of the program that
crashes, for example fetchnews. Do not give any program
options, gdb does not understand them here.
you name the options that you would normally pass to the
program itself. Just a plain
Wait until the program crashes. The output might look like similar to this:
This GDB was configured as "i686-pc-linux-gnu"...
Starting program: /tmp/crashme Program received signal SIGSEGV, Segmentation fault. main () at crashme.c:4 4 *x = 4;
full, this is the
desired stack backtrace.
quit to leave
Find out the Process
ID of the hanging leafnode
ps axw | grep
systems and Linux,
PROGRAM | grep -v
PROGRAM by the
name of the program. Use
instead on SysV systems such
You will get an output like:
1995 ? S 0:00 /usr/local/sbin/leafnode
1995 is the Process ID.
Then attach gdb:
PROGRAM by the
program's name and
by the PID that you have just
RedHat Linux has changed stance on inetd/xinetd
over the years. In the 6.x version, inetd was used, while
xinetd is used in the 7.x series and 8.0. Note in the
following I make the assumption that the "Gnome workstation"
and "KDE workstation" installs are the same in regard to our
discussion. Also, when in doubt a simple
| grep inetd will show you if either inetd
or xinetd is installed. The service and
chkconfig commands can be used to be sure
[x]inetd is running and configured to run at boot time. By
default, runlevels 3, 4, and 5 start [x]inetd.
Beginning with Redhat 6.2, inetd was broken out as a separate RPM and not included when doing a "Workstation" install. This stands true for the 7.x series (xinetd not installed) until 7.3. In Redhat 7.3, xinetd was added back to the "Workstation" install as a dependency for "sgi_fam". Note, this change is not reflected in the RH documentation, which states that xinetd is not installed in "Workstation" installs.
In Redhat 8.0, the install options have changed, now offering a "Personal Desktop" install. When doing a "Workstation" or "Personal Desktop" install xinetd is installed as in 7.3, presumably to satisfy the same dependency.
In cases where inetd is not installed, no other RPMs are required to install it. This means to install it you have three options (for RedHat 6.2 substitute inetd instead of xinetd):
Best - If you have registered for Redhat's up2date service, just type "up2date xinetd" as root.
- Install RPM from updates.redhat.com (version
numbers current as of 2002-11-10 for RH 7.3). You
can manually download the RPM and install it (as
xinetd-2.3.9-0.73.i386.rpm, or have
RPM download it for you by using (again, as root)
Worse - Install the RPM from the original CD. This is usually the worse option because the updates (used above) are released to fix security issues.
(All as root) First mount the first RH CD by putting it in the CD-ROM and
mount /mnt/cdrom, and install the
RPM similar to this: