📄 00000005.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: wxb1 (ben), 信区: Linux <BR>标 题: [6/8] 群组转送与分区传送 <BR>发信站: BBS 水木清华站 (Fri Jun 11 14:24:12 1999) <BR> <BR> <BR>以Linux实作 语音/传真/EMAIL/BBC 整合系统 <BR>6.群组传送与分区转送 <BR> <BR>群组传送 <BR> <BR> 群组传送的功能是指管理者可将一群客户,例如同一公司同仁,或一组 <BR>彼此认识的同学、朋友等团体,设为同一群组(Group),如此当对这群组发送语 <BR>音或传真讯息时,隶属此群组的所有客户,皆会收到此一讯息,而不需要再费时 <BR>的一一发送,且需经常维护群组名单,免得挂一漏万。 <BR> 系统中目前群组的表示为"#00"~"#99",共可容纳100个群组,针对群组 <BR>的留言或传真,会先要求输入群组密码,以防有人滥用,其後的留言或传真实体 <BR>仅储存一份,但属於该群组的用户,皆会建一连结(LINK)至此实体档案,如此 <BR>可节省硬碟空间,各用户收取留言或传真後即将LINK删除,至於实体档案,则由 <BR>系统定时执行的逾期删除作业(下一篇会介绍)中,自动删除。 <BR> 因应群组传送功能,原"Bash script"档(answer),需要做不少的变动 <BR>,而同样的程式段落因分区转送的功能,也会有所牵涉,因此待解释完分区转送 <BR>後,再一并解析两者的原始程式码。 <BR> <BR>分区转送 <BR> <BR> "基地台"这名词因最近大哥大广告的缘故,让人耳熟能详,此处"分区转 <BR>送"的功能也类似基地台的建置,让拨电话进入欲留言或送传真的使用者,可以打 <BR>当地基地台的电话,而此处的伺服器再根据使用者所输入的客户的代码,判断其 <BR>所属区域,再透过网际网路转送至该区的伺服器上! <BR> 判断的准则当然是靠预先的区域设定档(zone.conf)来决定,其内容类 <BR>似: <BR> <BR>sections="101 400 700 900 1000" <BR>hosts="LOCAL company1.com.tw company2.com.tw NONE" <BR> <BR>此例内容是指101~399的客户是此处伺服器所管辖(000~100保留给所有的LOCAL伺 <BR>服器,也就是代号<=100,都当作是LOCAL的用户,将不会尝试转送),400~699属 <BR>company1.com.tw,余类推,NONE指还未分出去的区段。程式会先搜寻是否有此客 <BR>户代码的设定档,若无的话,会交由副程式ChkZone来界定其所属伺服器所在的主 <BR>机名称(Host name),若成功界定,会将其留言或传真交由副程式SendtoMail处 <BR>理,不然及回应无此客户,挂断电话(接收端的伺服器并不判断远端是否真有此 <BR>用户代码)。SendtoMail会将留言或传真档案压缩编码後,以EMAIL的形式送至其 <BR>所属伺服器(另建一Mailer来处理),由该伺服器收到後再解码,检查是否有此 <BR>客户,并放入适当的目录中。 <BR> <BR>程式码解析 <BR> <BR>ChkZone、SendtoMail副程式: <BR> <BR>#--------------------------------------------------------------- <BR>ChkZone() <BR>{ <BR>local UserID <BR># 设定 $sections 及 $hosts 变数 <BR>. ${MAINPATH}conf/zone.conf <BR>UserID=$1 <BR>ndx=0 <BR>UserIndex=0 <BR>#echo $sections <BR>#echo $hosts <BR>#echo $UserID <BR>for sec in $sections <BR>do <BR> if [ $ndx -gt 0 ]; then <BR> # ($UserID >= $prev_sec) and ($UserID < $sec) <BR> if [ $UserID -ge $prev_sec -a $UserID -lt $sec ]; then <BR> UserIndex=$ndx <BR># echo $UserIndex <BR> fi <BR> fi <BR> prev_sec=$sec <BR> ndx=`expr $ndx + 1` <BR>done <BR>ndx=1 <BR>if [ $UserIndex -ne 0 ]; then <BR> for host in $hosts <BR> do <BR> if [ $ndx -eq $UserIndex ]; then <BR> UserHost=$host <BR># echo $UserHost <BR> fi <BR> ndx=`expr $ndx + 1` <BR> done <BR># echo $UserHost <BR> if [ $UserHost = 'LOCAL' -o $UserHost = 'NONE' ]; then <BR># echo "Local or None" <BR> return "2" <BR> else <BR># echo "Find $UserHost" <BR> return "0" <BR> <BR> fi <BR>else <BR># echo "No this UserID!" <BR> return "1" <BR>fi <BR> <BR>} <BR> <BR>#------------------------------------------------------------ <BR># 将非本站客户留言或传真,透宫而不需要再额外安装传真数据 <BR>机。 <BR> <BR>撰文:朱先宇 1998/12/17 <BR>EMAIL: <A HREF="mailto:hybj@ms1.hinet.net">hybj@ms1.hinet.net</A> <BR> <BR>-- <BR>just a test <BR> <BR>※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.116.130.100] <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -