发信人: 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]
  | 
 
 
 |