Copyright © 2002 Cornelius Krasel
Copyright © 2002, 2003, 2004, 2005, 2006, 2009, 2021 Matthias Andree
Table of Contents
| Q: | Leafnode refuses to start and tells things about my hostname! | 
| A: | There is a separate documentation file dedicated
			to this issue, how to obtain a hostname, and how to tell
			leafnode about it. Please see
			 | 
| Q: | Does leafnode support local newsgroups? | 
| A: | Leafnode 1.x does not support local newsgroups. Leafnode 2.x will do that. | 
| Q: | How do I run leafnode as NNTP+SSL server? | 
| A: | Wrap leafnode with an SSL wrapper: 
 | 
| Q: | How do I use fetchnews with NNTP/SSL
			servers, such as
			 | 
| A: | 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. 
 | 
| Q: | I cannot post, leafnode tells me the Message-ID is invalid. | 
| A: | 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
			    this: | 
| Q: | I cannot connect to my newsserver. | 
| A: | 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) 
 | 
| Q: | Remote users cannot connect to leafnode. | 
| A: | You are connecting from outside the same
			    networks that your leafnode
			    server is in. Leafnode by default refuses connections from
			    outside your
			    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). | 
| 1. | Fetchnews does not fetch any articles. | 
| There are several reasons why this may be the case: 
 | |
| 2. | 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  | |
| 3. | Since the update, fetchnews does not post my new articles! | 
| You have probably mixed old and new
			    binaries. Check your
			     | |
| 4. | 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. | |
| 5. | 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
			    just type  | |
| 6. | 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
			     | |
| 7. | 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
			     | |
| 8. | 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. | |
| 9. | 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  | 
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 make
	    install-strip. Note that most packagers (for RPM at
	least) use make install-strip to save space.
To find out if your leafnode installation has been
	stripped, type file
	    /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:
$file /usr/local/sbin/leafnode/usr/local/sbin/leafnode: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), not stripped
This is simple:
Type gdb
			    . Replace
			PROGRAM by the name of the
			program that crashed, for
			example fetchnews.PROGRAM
			    core
Type backtrace
			    full.
Type
			quit.
Type gdb
			.
		    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.PROGRAM
Type run
			, where
		    you name the options that you would normally pass to the
		    program itself. Just a plain
		    OPTIONSrun  is
		    also fine.
Wait until the program crashes. The output might look like similar to this:
This GDB was configured as "i686-pc-linux-gnu"...(gdb)run -vvnStarting program: /tmp/crashme Program received signal SIGSEGV, Segmentation fault. main () at crashme.c:4 4 *x = 4;(gdb)
Type backtrace
			full, this is the
		    desired stack backtrace.
Type quit to leave
		    gdb.
Find out the Process
		    ID of the hanging leafnode
		    program. Type
		    ps axw | grep
			 on BSD
		    systems and Linux,
		    replacing
		    PROGRAM | grep -v
			grepPROGRAM by the
		    name of the program. Use
		    ps -ef
		    instead on SysV systems such
		    as Solaris.
You will get an output like:
1995 ? S 0:00 /usr/local/sbin/leafnode
1995 is the Process ID.
Then attach gdb:
		    gdb
			,
		    replacing
		    PROGRAM
			12345PROGRAM by the
		    program's name and
		    12345
		    by the PID that you have just
		    found out.
Type
		    backtrace
			full.
Type
		    detach.
Type
		    quit.
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 rpm -qa
	    | 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.
Next Best
		- 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
		root) using rpm -ivh
		    xinetd-2.3.9-0.73.i386.rpm, or have
		RPM download it for you by using (again, as root)
		rpm -ivh
		    http://updates.redhat.com/7.3/en/os/i386/xinetd-2.3.9-0.73.i386.rpm
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
		doing a mount /mnt/cdrom, and install the
		RPM similar to this: cd
		    /mnt/cdrom/Redhat/RPMS/xinetd-2.3.7-2.i386.rpm.