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 to 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 etc.). 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. Versions 1.x also ran on Windows and provided a Qt-based GUI. I later dropped the GUI. Version 2.0 was released 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.
Being a side-project of mine, 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. Most of today’s and most of the historical Usenet clients should be able to exchange messages with it. Also, WendzelNNTPd can run on outdated hardware, rendering it a good service for your old PC from the 90s. However, my server is a stand-alone service that cannot sync with other NNTP services (so far!), which might be one of the major drawbacks. 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). Update: There is now a Slackware Linux package of WendzelNNTPd (never versions can be found on the project website). And in the meantime, I also discovered some Docker files for WendzelNNTPd.
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.