发信人: karaoke()
整理人: microant(1999-10-16 10:21:09), 站内信件
|
[节录 InternetEmail 部份说明](建议将原版文件拿回来看看:)
file://ftp.csie.nctu.edu.tw/pub/bbs/doc/InternetEmail
早期的 BBS 系统采用与 E-mail post 相同的方式来处理与
外界电子邮件之间的递送服务。Phoenix BBS 则首先开放以如下的
E-mail 位址形式代表 BBS 使用者的 E-mail address:
[email protected]
这使得 BBS user 可以透过 BBS 系统拥有与一般主机帐号无异的
电子邮递服务。
这项服务必须修改邮件递送程式的设定,使其能够认识上述的
E-mail address 格式。此外还须安装转换 mail header 的程式
以便将 Internet mail folder 资料转换成 BBS mail 储存格式。
目前使用最广的 mail transport program 大概是 sendmail
系列。Sendmail 可以说是世界上最复杂,最难以设定的程式其中
之一。也许是这个缘故,有关修改设定的方法都写得很清楚,修改
者也特别小心进行以至於特别没问题。修改之前需要先确定的是:
. 系统使用 sendmail 系列的 mail transport program
. 使用 sendmail 8.6.9 以上的版本(不确定)
(不知哪个版本的 sendmail 有 security hole, 需要
sendmail security patch?)
. 没有 xxx.bbs 之类的 alias
. 检查 /etc/inetd.conf 里面的 smtp 设定是否为 sendmail
或者是以 hash('#') 符号 mark 起来,如果不是 sendmail
而且没被 mark 起来的话那麽先将它 mark 起来。若有修改
到 inetd.conf 的内容则需重新启动 inetd 程式。
无论如何,修改 mail transport program 设定的部份将留在最後
介绍,先介绍 mail2bbs 等等相关程式的安装。 (假设以 bbsroot
签入系统)
该 mail2bbs.c 程式放在 ~/bbs_src/local_utl 目录,大概
可以算是工具程式之一 (不妨 make 看看 PhoenixBBS 4.0 提供有
哪些'管理'工具程式) 。单单只靠 mail2bbs 程式并不能提供完整
的 Internet Email 服务(至少下面要介绍的 mail2bbs 版本不行)
所以无论是否使用 PhoenixBBS 都请到 ftp.csie.nctu.edu.tw 将
/pub/bbs/misc/mail2bbs/ 目录下的所有程式取回。
[※ firebirdbbs不需要另外抓这些档案,而且好处是当你装好
mail2bbs时,也就完成你身分确认的安装,所以不考虑系统资源,
及系统load,就安装的方便性,与使用的便利性firebirdbbs是你最好的选择
(非广告) ]
Internet E-mail <-> BBS mail 之间的信件转寄过程大致上
是这样子的:
1 Phoenix BBS 4.0 安装完成後即具有寄信到 Internet 上的
功能,当然,架设 BBS 的主机原本就必须具备有可以正常
收发 E-mail 的能力才行。我们所要处理的是如何从外面将
信件寄送到 BBS 信箱的问题。
2 首先 mail transport program 必须要能够认识上面所述的
BBS E-mail address 格式,并且须将这些信件交由不同的
local mail deliver (下面介绍的是 bbsmail 程式)处理。
3 bbsmail 接到信件後会做记录,取出 Subject header 并且
将信件转交给能够将 Internet mail folder 资料转换成为
BBS mail 的程式来处理(下面介绍的是 mail2bbs) 。因为
所要介绍的 mail2bbs 程式没有自行剖析 mail header 的
功能,所以 bbsmail 必须处理这个问题。
4 mail2bbs 的功能很单纯,它接受三个参数:
sender from, rcpt to user 以及 subject。
例如:
mail2bbs your_id your_bbs_id mail_subject
接著它会从 stdin 读取信件内容(类似一般的 mail 操作)
然後转换信件格式并且送到 BBB 的信箱里(filter?)。
P.S. 以上程式大多以 perl 写成,所以系统必须安装 perl 才能
使用。
安装这些程式的过程有点烦杂,主要是权限以及路径的问题。
其实应该可以写个比较完整的 Makefile 来做,但弹性较小。所以
请自己手动安装。假设原始程式摆在 ~/mail2bbs 底下。
1 安装 mail2bbs:
首先修改 Makefile 里的 BBS_SRC 设定,改为 BBS 原始
程式所在路径。(e.g. BBS_SRC=/home/bbsroot/bbs_src)
然後修改 mail2bbs.c 里的 #define 叙述:
#define DOMAIN_NAME "csie.nctu.edu.tw"
#define BBSHOME /home/bbs
#define BBSGID 9999
#define BBSUID 99
主要是 DOMAIN_NAME 必须修改成 BBS 所在的领域,另外firebir dbbs
中有关"...中正大学..."的字样可以自行改变。其馀
请参考安装 BBS 时的设定。
执行 make mail2bbs 造出 mail2bbs 执行档
su 成为 root 以便存取 /usr/local 目录。(以下所有路径
设定都尽量依照 InternetEmail 文件以及程式码的预设值)
执行 make install_mail2bbs。这会将 mail2bbs 的执行档
放到 /usr/local/etc/bbs/ 下并设定存取权利。但此设定
对於 bbsmail 来说似乎有问题,必须加以修改。如下:
chown bbs.bbs /usr/local/etc/bbs/mailpost
chmod 4750 /usr/local/etc/bbs/mailpost
[※ 此处的mailpost应该是mail2bbs吧??]
2 安装其它程式:
mkdir /usr/adm/bbs
chown bbs.bbs /usr/adm/bbs
mkdir /usr/local/sendmail
chown bbs.bbs /usr/local/sendmail
su 成为 bbsuser
mkdir /usr/local/sendmail/bbs
并将 bbsmail, mailgate.pl, rfc931.pl 这些程式 cp 到
/usr/local/sendmail/bbs 目录里
[ ※其中mailgate.pl需修改其中$from,$Hstname改成自己的domain name,
perl的路径记的也要改]
cd /usr/local/sendmail/bbs
chmod 755 *
3 修改路径设定
编辑 bbsmail 其中的
require "mailgate.pl";
必须改用绝对路径名称
(i.e. require "/usr/local/sendmail/bbs/mailgate.pl";)
编辑 mailgate.pl 其中的
require "/usr/local/menu/rfc931.pl";
请改为 rfc931.pl 所在的位置
(i.e. require "/usr/local/sendmail/bbs/rfc931.pl";)
安装完成後与 E-mail post 介绍相同,请检查一下这些 perl
程式的第一行是否参考到正确的 perl 所在位置。否则的话请依照
E-mail post 说明的部份自行修改。
以下介绍修改 mail transport program 设定的方法。当然只
有 root 能够为之。 Sendmail 的设定档是 /etc/sendmail.cf 。
虽然 mail2bbs 已经随附 sendmail.cf.8.6.9 以及给 SunOS 使用
的 sendmail.cf.sunos 档案。但是似乎有点问题,所以还是建议
自行修改 sendmail.cf 档。
**首先加入新的 mailer 定义,新增下列设定**
##################################################
### Local and Program Mailer specification ###
##################################################
##### @(#)local.m4 8.6 (Berkeley) 10/24/93 ####
Mbbsmail, P=/usr/local/sendmail/bbs/bbsmail, F=lsSDFMuhP, S=10 , R=20,
A=bbsmail -d $u $s
**然後更改 rule set 0 的部份,增加下列规则**:
######################################
### Ruleset 0 -- Parse Address ###
######################################
S0
R$+.bbs<@>$* $#bbsmail $:$1 bbs mail
gateway
....
....
# short circuit local delivery so forwarded email works
R$+ < @ $=w . > $: $1 < @ $2 . @ $H > first try hu b
R$+.bbs< $+ @ $+ >$* $#bbsmail $: $1 bbs mail
gateway
R$+.bbs< $+ @ >$* $#bbsmail $: $1 bbs mail
gateway
....
....
# handle locally delivered names
R$+.bbs $#bbsmail $:$1 bbs mail
gateway
....
....
必须注意的一点是: rule 两端必须以 Tab 隔开,不能用空白
间隔。另外,建议先以空白隔开一格,再使用 Tab 隔开。关於此
问题原因不明....。
修改 sendmail.cf 後必须重新执行 sendmail 程式。同时还
建议重新执行 inetd 程式。关於此问题原因不明....。
Now 万事具备,可以寄信给 BBS user 试试。万一失败请参考
原版 InternetEmail 的 debug 程序 。
[※ debug的方法]
4.测试改好的 sendmal.cf
执行 sendmail -C/etc/sendmail.cf -bt
> 0 xxx.bbs
rewrite: ruleset 0 input: xxx . bbs
rewrite: ruleset 98 input: xxx . bbs
rewrite: ruleset 98 returns: xxx . bbs
rewrite: ruleset 0 returns: $# bbsmail $: xxx . bbs
若不会 refer 到 bbsmail, 捡查是否如上所示加入所属 rule,
并以 tab 区隔 LHS, RHS.
5.重跑 sendmail.
修改完 /etc/sendmail.cf 後, kill -9 (sendmail's pid)
然後执行 sendmail -C/etc/sendmail -bd -q10m
请 ps -ax 看看,如果有看到 sendmail:accepting connections
就代表你 mail2bbs 已经装好了
赶快寄一封信给 [email protected] 看看吧
6.其他debug 方法:
(1): 使用说明文件的方法测试确定 sendmail pharser 正确
(2): su bbsuser; cd /home/bbs/usr/local/bbs/
mail2bbs 'from' 'userid' 'subject' 看回应为何 .(already chroot 代表的是 chroot 失败, 你的
mail2bbs属性有问题)
(3): 进 bbs 确定刚刚 mail2bbs 的东东有收到
(4): su root; cd /usr/local/sendmail/bbs/
假造一个 email档,( 用 mail save 随便一封信後改 To:
为 :[email protected].
bbsmail -d userid 确定 bbsmail 能正确的呼叫 mail2bbs
(BBS User xxxx Unknown 代表的是无法正常呼叫 mail2bbs )
(5): 进 bbs 确定刚刚 bbsmail 的东东有收到
(6): 由 internet 写封 email 到 bbs 吧...观察观察 /var/adm/bb s/log
档是否正确动作
(7): 当 bbs 收到这封 email 时记得 post 封感谢函上来吧... 呵呵
. 检查从 BBS 寄出的信件其 From: 或是 Reply-To: header
是否正确,否则对方回信无法送达。
. 定时 flush mail queue
例如使用 cron job
0,30 * * * * /usr/lib/sendmail -oQ/home/bbs/var/spool/mqueu e -q
P.S. 以上各程式所在路径以及属性请务必自行留意,也可以自行
更改(注意其对应关系)。留意本文所说是否过期....。
-- Oooo 风吹云起
oooO ( ) 一切无踪
( ) )/ 记得的往往竟是该忘的
\( (_) 一个眼神
(_) ~ 一句话语
~ ~~~~~~~~~乡巴佬
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.133.148]
|
|