summaryrefslogtreecommitdiffstats
path: root/content/posts/在2025年,搭建新闻组.md
diff options
context:
space:
mode:
Diffstat (limited to 'content/posts/在2025年,搭建新闻组.md')
-rw-r--r--content/posts/在2025年,搭建新闻组.md107
1 files changed, 107 insertions, 0 deletions
diff --git a/content/posts/在2025年,搭建新闻组.md b/content/posts/在2025年,搭建新闻组.md
new file mode 100644
index 0000000..ebf24fd
--- /dev/null
+++ b/content/posts/在2025年,搭建新闻组.md
@@ -0,0 +1,107 @@
+---
+categories:
+- 技术
+date: "2025-07-26T12:05:39+08:00"
+draft: false
+slug: set-up-newsgroup
+tags:
+- 新闻组
+- 怀旧
+title: 在2025年,搭建新闻组
+---
+
+## 介绍
+
+新闻组(英文名Usenet或NewsGroup),简单地说就是一个基于网络的计算机组合,这些计算机被称为新闻服务器,不同的用户通过一些软件可连接到新闻服务器上,阅读其他人的消息并可以参与讨论。新闻组是一个完全交互式的超级电子论坛,是任何一个网络用户都能进行相互交流的工具。现在已经没落,1990年前后是新闻组的鼎盛时期。很可惜,我晚了20年。
+
+新闻组基于古老的NNTP协议,又名Usenet,类似一个巨大的论坛,用户可以在不同的组中发表内容,其他用户也可以回复内容,一切基于Email。
+
+## 搭建
+
+**这可能是当今互联网上,你能找到的为数不多的最新的有关新闻组的文章。**
+
+我使用[newsd](https://github.com/erco77/newsd)这个服务端来搭建,至于为什么没有使用**inn**,有两个原因:教程过时、软件库中没有。
+
+
+### 编译与初始化
+
+```
+git clone https://github.com/erco77/newsd.git
+make
+```
+
+如果没有错误的话,输出是这样的:
+```
+yingyu5658@bongo ~/e/newsd (master)> make
+g++ -Wall -DSPOOL_DIR=\"/var/spool/newsd\" -DCONFIG_FILE=\"/etc/newsd.conf\" -DSENDMAIL=\"/usr/sbin/sendmail\" -g -c newsd.C
+g++ -Wall -DSPOOL_DIR=\"/var/spool/newsd\" -DCONFIG_FILE=\"/etc/newsd.conf\" -DSENDMAIL=\"/usr/sbin/sendmail\" -g -c Subs.C
+g++ -Wall -DSPOOL_DIR=\"/var/spool/newsd\" -DCONFIG_FILE=\"/etc/newsd.conf\" -DSENDMAIL=\"/usr/sbin/sendmail\" -g -c Article.C
+g++ -Wall -DSPOOL_DIR=\"/var/spool/newsd\" -DCONFIG_FILE=\"/etc/newsd.conf\" -DSENDMAIL=\"/usr/sbin/sendmail\" -g -c Configuration.C
+g++ -Wall -DSPOOL_DIR=\"/var/spool/newsd\" -DCONFIG_FILE=\"/etc/newsd.conf\" -DSENDMAIL=\"/usr/sbin/sendmail\" -g -c Group.C
+g++ -Wall -DSPOOL_DIR=\"/var/spool/newsd\" -DCONFIG_FILE=\"/etc/newsd.conf\" -DSENDMAIL=\"/usr/sbin/sendmail\" -g -c Server.C
+g++ -Wall newsd.o Subs.o Article.o Configuration.o Group.o Server.o -o newsd
+pod2man --center "newsd Documentation" --section=8 newsd.pod > newsd.8
+pod2man --center "newsd Documentation" --section=8 newsd.conf.pod > newsd.conf.8
+pod2html newsd.pod > newsd.html
+pod2html newsd.conf.pod > newsd.conf.html
+```
+
+前台调试模式:sudo ./newsd -d -f
+后台守护进程:sudo ./newsd(日志输出至 ${LOG_DIR}/newsd.log)
+
+### 创建`sendmail`文件
+
+```
+sudo touch /usr/sbin/sendmail
+chmod a+x /usr/sbin/sendmail
+```
+
+### 创建新闻组
+
+```
+sudo ./newsd -newgroup
+```
+
+运行这条命令后,程序会依次要求输入:
+
+- 组名
+
+- 是否允许用户发件
+
+- 字数限制(?)
+
+- 描述
+
+- 管理员的邮箱
+
+- 将所有帖子的副本密送到的邮箱
+
+创建好后,运行`sudo ./newsd -d -f`。
+
+```
+Sat Jul 26 12:28:48 2025 newsd[38895]: -- newsd started - V1.54--
+Sat Jul 26 12:28:48 2025 newsd[38895]: -- start config summary --
+Sat Jul 26 12:28:48 2025 newsd[38895]: ErrorLog stderr
+Sat Jul 26 12:28:48 2025 newsd[38895]: HostnameLookups off
+Sat Jul 26 12:28:48 2025 newsd[38895]: Listen 0.0.0.0:119
+Sat Jul 26 12:28:48 2025 newsd[38895]: LogLevel debug
+Sat Jul 26 12:28:48 2025 newsd[38895]: MaxClients 0
+Sat Jul 26 12:28:48 2025 newsd[38895]: MaxLogSize 1048576
+Sat Jul 26 12:28:48 2025 newsd[38895]: SendMail /usr/sbin/sendmail -t
+Sat Jul 26 12:28:48 2025 newsd[38895]: ServerName bongo
+Sat Jul 26 12:28:48 2025 newsd[38895]: SpamFilter
+Sat Jul 26 12:28:48 2025 newsd[38895]: SpoolDir /var/spool/newsd
+Sat Jul 26 12:28:48 2025 newsd[38895]: Timeout 43200
+Sat Jul 26 12:28:48 2025 newsd[38895]: User news
+Sat Jul 26 12:28:48 2025 newsd[38895]: -- end config summary --
+```
+
+其中,我们需要注意的信息是监听地址,由于我这里是本地环境,是`0.0.0.0`。这时用客户端连接这个地址,订阅刚刚创建的组就可以使用了。
+
+这个服务端自己搭着玩玩还是足够的,大规模还是要用其他的,不过现在大规模的新闻组肯定不多了。
+
+## 附:关于新闻组的文档资料(hypermemo整理)
+
+- nntp 协议的参考资料: https://www.eyrie.org/~eagle/nntp/
+- inn 文档(英文):[https://www.eyrie.org/~eagle/software/inn/](https://www.eyrie.org/~eagle/software/inn/)
+