The Usenet is a rather ancient network communication system which is accessible with Usenet clients, but it is also well integrated into several e-mail clients such as Thunderbird. You can post messages into so-called newsgroups and people can reply to your messages just like they reply to an e-mail thread. You can also use it to share binary files (some people do that and even pay money to access binary newsgroups). The underlying NNTP protocol is rather old and dates back to early 1986 (first specified in RFC 977 and updated by some RFCs in the following years).
However, NNTP is still in use by some people. For me, it is a nice retro networking protocol and I run my own Usenet server in our university network (not accessibly from the outside). In one exercise, my networking students have to post a message in some newsgroup via Telnet (NNTP is only a minor topic in my class; I teach it so that students play with Telnet and NNTP, SMTP and HTTP/1.1). And yes, NNTP is a plain-text protocol that you can also directly work with using a terminal.
In 2004, I started working on my own Usenet server called WendzelNNTPd, written in C because writing your own server (in a system-level language) lets you understand a network protocol much better (I also wrote my own DNS server and my own high-performance HTTP server back then to learn more about socket optimization). The first alpha release appeared in May 2005 and contained
roughly 2.2k lines of code. Version 1.0 was released in July 2007 and version
2.0 in June 2011. Since then, I added small features from time to time and
provided several fixes to the codebase (now about 7.6k lines of code).
WendzelNNTPd runs on Linux, *BSD and (Open)Solaris. Probably, it would also run
on other Unix-like operating systems. Versions 1.x also ran on Windows, and I provided a GUI for it.
I worked on WendzelNNTPd for fun (and partially to teach network programming), it took from 2011 (release of version 2.0) to early 2021 until another major sub-version (2.1) was ready, including some new features, such as (finally) SHA2-based password hashing. However, if I look into the changelog that contains the modifications performed since version 2.0, I think the new sub-version 2.1 is pretty justified: since version 2.0.0, several fixes were applied. Several (mostly minor) features were added and the code as well as the documentation received several cleanups.
The full project history is available in the HISTORY file of the repository. If you are interested in retro
computing/networking, then you might find it interesting to work with my Usenet server. Several historical Usenet clients should be able to exchange
messages with it. Also, WendzelNNTPd runs on outdated hardware, rendering it a
good service runnable on old hardware. However, my server is a stand-alone service that cannot sync with other NNTP services, which might be one of the major drawbacks (as well as its lack for TLS support). However, I was happy when I learned that real-world companies actually run WendzelNNTPd in order to provide some questions-and-answers forum for their software customers and that that there is a WendzelNNTPd package for the PLD Linux distribution (however, the version 1.4.x is pretty old).
Let me know if you
- run WendzelNNTPd (even if not publicly accessible),
- if you find bugs,
- like to contribute a patch or extension or
- create a package/port for some Linux/BSD/misc operating system.