精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>已关闭版区>>● BBS系统>>BBS 技巧>>mail2bbs

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

[关闭][返回]