home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!usc!news.service.uci.edu!unogate!mvb.saic.com!vmsnet-sources
- Newsgroups: vmsnet.sources
- From: duck@pembvax1.pembroke.edu
- Subject: mailserver - can be run from regular account, part01/01
- Message-ID: <10032477@MVB.SAIC.COM>
- Date: Mon, 11 Jan 1993 11:11:21 GMT
- Organization: Pembroke State University
- Lines: 499
- Approved: Mark.Berryman@Mvb.Saic.Com
-
- Submitted-by: duck@pembvax1.pembroke.edu
- Posting-number: Volume 4, Issue 38
- Archive-name: mailserver/part01
-
- This package is a mailserver written in DCL code that can easily be custom
- modified. It is designed to run from a single user account such that the
- subject line is scanned for certain text (usually a subject line of MAILSER).
- It also supports binary sends via uuencode and brief documentation on setup is
- included. The ability to subscribe to a mailing list (mag.dis in the workdir)
- is also provided for.
-
- - Craig Taylor - 919-521-3814 All Relevant Disclaimers Apply!!!
- duck@pembvax1.pembroke.edu (Pembroke State University)
-
- $! ------------------ CUT HERE -----------------------
- $ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))'
- $!
- $! This archive created by VMS_SHARE Version 8.1
- $! On 11-JAN-1993 03:03:30.32 By user BERRYMAN
- $!
- $! The VMS_SHARE software that created this archive
- $! was written by Andy Harper, Kings College London UK
- $! -- September 1992
- $!
- $! Credit is due to these people for their original ideas:
- $! James Gray, Michael Bednarek
- $!
- $! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER
- $! AND EXECUTE AS A COMMAND PROCEDURE ( @name )
- $!
- $! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING:
- $! 1. AAAREADME.1ST;1
- $! 2. DOMAIL.COM;44
- $! 3. SCAN.COM;5
- $!
- $set="set"
- $set symbol/scope=(nolocal,noglobal)
- $f=f$parse("SHARE_UNPACK_TEMP","SYS$SCRATCH:."+f$getjpi("","PID"))
- $e="write sys$error ""%UNPACK"", "
- $w="write sys$output ""%UNPACK"", "
- $ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!"
- $ ve=f$getsyi("version")
- $ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start
- $ e "-E-OLDVER, Must run at least VMS 4.4"
- $ v=f$verify(v)
- $ exit 44
- $unpack: subroutine ! P1=filename, P2=checksum, P3=attributes
- $ if f$search(P1) .eqs. "" then $ goto file_absent
- $ e "-W-EXISTS, File ''P1' exists. Skipped."
- $ delete 'f'*
- $ exit
- $file_absent:
- $ if f$parse(P1) .nes. "" then $ goto dirok
- $ dn=f$parse(P1,,,"DIRECTORY")
- $ w "-I-CREDIR, Creating directory ''dn'"
- $ create/dir 'dn'
- $ if $status then $ goto dirok
- $ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped."
- $ delete 'f'*
- $ exit
- $dirok:
- $ w "-I-UNPACK, Unpacking file ''P1'"
- $ n=P1
- $ if P3 .nes. "" then $ n=f
- $ if .not. f$verify() then $ define/user sys$output nl:
- $ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='n'
- PROCEDURE GetHex LOCAL x1,x2;x1:=INDEX(t,ERASE_CHARACTER(1))-1;x2:=INDEX(t,
- ERASE_CHARACTER(1))-1;RETURN 16*x1+x2;ENDPROCEDURE;
- PROCEDURE SkipPartsep LOOP EXITIF INDEX(ERASE_LINE,"-+-+-+-+-+-+-+-+")=1;
- ENDLOOP;ENDPROCEDURE;
- PROCEDURE ExpandChar CASE CURRENT_CHARACTER FROM ' ' TO 'z' ["`"]
- :ERASE_CHARACTER(1);COPY_TEXT(ASCII(GetHex));[" "]:ERASE_CHARACTER(1);[
- OUTRANGE,INRANGE]:MOVE_HORIZONTAL(1);ENDCASE;ENDPROCEDURE;
- PROCEDURE ProcessLine s:=ERASE_CHARACTER(1);LOOP EXITIF CURRENT_OFFSET>=LENGTH(
- CURRENT_LINE);ExpandChar;ENDLOOP;IF s="V" THEN APPEND_LINE;ENDIF;ENDPROCEDURE;
- PROCEDURE AdvanceLine MOVE_HORIZONTAL(-CURRENT_OFFSET);MOVE_VERTICAL(1);
- ENDPROCEDURE;PROCEDURE Decode POSITION(BEGINNING_OF(b));LOOP EXITIF MARK(NONE)=
- END_OF(b);IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")=1 THEN SkipPartSep;
- ELSE ProcessLine;AdvanceLine;ENDIF;ENDLOOP;ENDPROCEDURE;SET(FACILITY_NAME,
- "UNPACK");SET(SUCCESS,OFF);SET(INFORMATIONAL,OFF);t:="0123456789ABCDEF";f:=
- GET_INFO(COMMAND_LINE,"file_name");b:=CREATE_BUFFER(f,f);Decode;WRITE_FILE(b,
- GET_INFO(COMMAND_LINE,"output_file"));QUIT;
- $ if p3 .eqs. "" then $ goto dl
- $ open/write fdl &f
- $ write fdl "RECORD"
- $ write fdl P3
- $ close fdl
- $ w "-I-CONVRFM, Converting record format to ", P3
- $ convert/fdl=&f &f-1 &P1
- $dl: delete 'f'*
- $ if P2 .eqs. "" then $ goto ckskip
- $ checksum 'P1'
- $ if checksum$checksum .nes. P2 then $ -
- e "-E-CHKSMFAIL, Checksum of ''P1' failed."
- $ exit
- $ckskip: e "-W-CHKSUMSKIP, checksum validation unavailable for ''P1'"
- $ endsubroutine
- $start:
- $!
- $ create 'f'
- XThis`20package`20is`20a`20mailserver`20written`20in`20DCL`20code`20that`20can
- V`20easily`20be`20custom
- Xmodified.`20It`20is`20designed`20to`20run`20from`20a`20single`20user`20account
- V`20such`20that`20the`20
- Xsubject`20line`20is`20scanned`20for`20certain`20text`20(usually`20a`20subject
- V`20line`20of`20MAILSER).
- XIt`20also`20supports`20binary`20sends`20via`20uuencode`20and`20brief`20documen
- Vtation`20on`20setup`20is
- Xincluded.`20The`20ability`20to`20subscribe`20to`20a`20mailing`20list`20(mag.di
- Vs`20in`20the`20workdir)
- Xis`20also`20provided`20for.
- X
- X-------
- XBasically`20I`20wrote`20it`20because`20the`20system`20admin's`20here`20at`20sc
- Vhool`20wouldn't`20let`20me
- Xuse`20their`20mailserver`20software.`20:-)`20I`20asked`20'em`20if`20I`20could
- V`20write`20my`20own`20and`20use
- Xit`20and`20they`20looked`20at`20me`20in`20suprise`20and`20say`20yeah,`20sure
- V`20-`20so`20here's`20the`20result.
- X
- X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Mail-Server`20Documen
- Vtation`20Release`20010393
- X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20`20`20`20`20`20by`20Craig`20Taylor
- X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20duck@pembvax1.pembroke.edu
- X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20`20`20`20`20`20`20`20`20`20(c)`201993
- X
- X
- XThe`20following`20two`20files:`20domail.com`20and`20scan.com`20make`20up`20a
- V`20mail-server`20program
- Xwhich`20can`20be`20run`20in`20a`20user`20account`20with`20regular`20privlages.
- V`20The`20only`20logicals
- Xor`20symbols`20that`20need`20to`20be`20changed`20are`20in`20the`20file`20domai
- Vl.com`20and`20are:
- X
- X`20workdir`20-`20this`20is`20a`20definition`20that`20reflects`20where`20in`20y
- Vour`20account`20the
- X`20`20`20`20mailserver`20program`20is`20running`20from.`20A`20mailserver.log
- V`20file`20should`20also`20be
- X`20`20`20`20created`20initially`20with`20a`20blank`20line.`20Failure`20to`20do
- V`20so`20will`20cause`20the
- X`20`20`20`20program`20to`20abort`20with`20an`20error`20when`20run.
- X
- X`20bindir`20-`20an`20equate`20which`20reflects`20where`20files`20that`20are
- V`20binary`20that`20require
- X`20`20`20`20uuencode`20to`20be`20sent.`20A`20file`20called`20temp.txt`20will
- V`20be`20generated`20in`20this
- X`20`20`20`20directory`20`20from`20the`20uuencode`20comand`20before`20being`20s
- Vent.
- X
- X`20txtdir`20-`20an`20equate`20which`20reflects`20where`20all`20files`20that
- V`20can`20be`20sent`20without
- X`20`20`20`20uuencode`20are.`20The`20catalog.txt`20(for`20the`20command`20"cata
- Vlog")`20and
- X`20`20`20`20"documentation.txt"`20(for`20the`20command`20"help")`20and`20statu
- Vs.txt`20(for`20the
- X`20`20`20`20command`20"status")`20are`20assumed.`20If`20you`20wish`20to`20chan
- Vge,`20disable`20or`20remove`20any
- X`20`20`20`20of`20these`20modify`20the`20scan.com`20file`20as`20appropriate.
- X
- XTo`20install`20the`20mailserver`20mofidy`20the`20above`20definitions`20and`20e
- Vquates`20in
- Xdomail.com,`20create`20a`20mailserver.log`20with`20a`20blank`20line`20in`20the
- V`20workdir.`20Then`20make
- Xsure`20that`20the`20system`20manager`20has`20installed`20uuenccode`20or`20that
- V`20you`20have`20n`20equate`20
- Xsetup`20in`20your`20login.com.`20
- X
- XIn`20addation`20there`20is`20a`20command`20called`20"subscribe"`20which`20adds
- V`20the`20user's`20name`20to
- Xa`20file`20called`20mag.dis.`20To`20change`20the`20file`20name`20requires`20mo
- Vdifying`20the`20scan.com
- Xfile.`20
- X
- XModifying`20scan.com`20is`20fairly`20easy`20for`20a`20user`20with`20moderate
- V`20experience`20in`20VAX
- XDCL`20language.`20Those`20who`20are`20not`20famaliar`20with`20DCL`20should`20b
- Ve`20able`20to`20understand
- Xwhat`20is`20going`20on`20upon`20careful`20reading.
- X
- XThe`20mailserver`20works`20by`20first`20deleting`20any`20previous`20files,`20g
- Voing`20into`20mail`20and
- Xextracting`20all`20mail`20messages`20that`20begin`20with`20a`20subject`20line
- V`20of`20"mailser"`20into`20a
- Xfile`20in`20the`20workdir`20directory`20called`20requests.txt.`20This`20is`20d
- Vone`20in`20domail.com.
- XNote`20that`20it's`20recommended`20that`20the`20following`20is`20added`20to
- V`20your`20login.com`20file:
- X
- X$`20if`20f$interactive()
- X$`20then
- X.`20.`20.`20`5Bnoormal`20login.com`20file`5D
- X$`20else
- X$`20mail
- Xselect`20newmail
- Xselect/subject="mailser"
- Xmove/all`20mail
- Xexit
- X$`20endif
- X
- XThis`20will`20make`20sure`20that`20all`20new`20requests`20are`20in`20your`20ma
- Vil`20directory.`20If`20you
- Xwish`20to`20preview`20them`20before`20they`20are`20processed`20then`20do`20not
- V`20add`20the`20above`20lines.
- X
- XAlso`20you`20will`20need`20to`20create`20a`20folder`20in`20mail`20callled`20ol
- Vdmail.`20I`20chose`20to`20have
- Xthe`20mailserver`20put`20all`20the`20commands`20in`20that`20folder`20after`20i
- Vt`20finished`20processing
- Xthem`20instead`20of`20deleting`20them`20so`20that`20I`20could`20back-check`20w
- Vith`20them`20against`20the
- Xlogs`20if`20any`20errors`20cropped`20up.`20You'll`20want`20to`20periodically
- V`20go`20in`20there`20and
- Xdelete`20all`20the`20messages`20but`20one`20(if`20you`20delete`20them`20all
- V`20then`20the`20folder`20will
- Xcease`20to`20exist).
- X
- XI've`20tried`20to`20make`20this`20documentation`20as`20complete`20as`20possibl
- Ve`20-`20be`20sure`20to`20read
- Xeach`20paragraph`20fully`20and`20follow`20the`20instructions`20within.`20I'm
- V`20also`20interested`20in
- Xany`20comments`20you`20may`20have`20concerning`20it.`20One`20note`20'tho`20-
- V`20if`20you`20send`20me`20mail
- Xmake`20sure`20that`20it`20doesn't`20have`20the`20"mailser"`20subject`20line
- V`20or`20else`20the
- Xmailserver`20I'm`20running`20will`20flag`20it`20as`20a`20bunch`20of`20errors
- V`20(oh!`20-`20the`20error.txt
- Xis`20the`20file`20that`20contains`20a`20message`20stating`20that`20an`20error
- V`20exists).`20Use
- X"mail-server"`20instead.
- X
- XFor`20any`20questions`20or`20comments`20feel`20free`20to`20contact`20me`20as
- Xduck@pembvax1.pembroke.edu.
- XAnyway`20hope`20this`20helps,`20the`20documentation`20file`20is`20included`20b
- Velow:
- X
- X-`20Craig`20Taylor`20`20`20-`20919-521-3814`20`20`20All`20Relevant`20Disclaime
- Vrs`20Apply!!!
- X`20`20`20`20`20`20`20`20duck@pembvax1.pembroke.edu`20(Pembroke`20State`20Unive
- Vrsity)
- X
- X"Always`20try`20to`20do`20things`20in`20chronological`20order;`20it's`20less
- V`20confusing
- Xthat`20way."
- $ call unpack AAAREADME.1ST;1 219362806 ""
- $!
- $ create 'f'
- X$`20goto`20start
- X
- XMail-Server`20by`20Craig`20Taylor`20(duck@pembvax1.pembroke.edu)`20`20`20`20
- V`20`20`20`20`20`20(c)`201993
- X-`20written`20in`20VAX/DCL`20code`20consisting`20of`20three`20files:
- X`20`20`20`20`20mailserver.com`20-`20this`20file`20that`20is`20submitted`20to
- V`20a`20queue
- X`20`20`20`20`20scan.com`20`20`20`20`20`20`20-`20generates`20.com`20file`20base
- Vd`20on`20requests
- X`20`20`20`20`20doit.com`20`20`20`20`20`20`20-`20this`20is`20the`20actual`20fil
- Ve`20that`20is`20used`20to`20do`20the
- X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20requests.
- V`20-`20regenerated`20each`20time.
- X
- XRelease`20010393
- X
- X$start:
- X$`20define`20workdir`20stud$disk:`5Bduck.mailserv`5D`20`20`20`20`20`20`20`20!
- V`20running`20directory
- X$`20txtdir`20:==`20"stud$disk:`5Bduck.mailserv.text`5D`20`20`20`20`20`20!`20al
- Vl`20the`20send`20files
- X$`20bindir`20:==`20"stud$disk:`5Bduck.mailserv.binary`5D`20`20`20`20!`20all
- V`20the`20psend`20files
- X$`20!
- X$`20set`20default`20workdir
- X$`20set`20noon
- X$`20`20`20del`20requests.txt;*`09`09`09`09`20`20!`20delete`20all`20the`20files
- V
- X$`20`20`20del`20doit.com;*
- X$`20set`20on
- X$`20!
- X$`20mail`09`09`09`09`09`09`20`20!`20go`20into`20mail`20and`20extract
- Xselect`20mail
- Xselect/subject="mailser"
- Xextract/all`20requests.txt
- Xmove/all`20oldmail
- Xquit
- X$`20if`20(f$search("requests.txt")`20.eqs.`20"")`20then`20goto`20endsub
- X$`20`20`20@scan.com`09`09`09`09`09`20`20!`20scan`20and`20generate`20files
- X$`20`20`20@doit.com`09`09`09`09`09`20`20!`20and`20send`20the`20files....`20
- X$`20endsub:
- X$`20wait`2000:10:00`20`20`20`20`20`20`20`20`20`20`20`20`20`20!`20make`20sure
- V`20time`20has`20passed`20before`20re-submitting
- X$`20submit/restart/nolog/after="tomorrow+2"/queue=sys$large`20workdir:domail.c
- Vom
- $ call unpack DOMAIL.COM;44 659241511 ""
- $!
- $ create 'f'
- X$!scan.com`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20(c)`201993`20by`20Craig
- V`20Taylor`20(duck@pembvax1.pembroke.edu)
- X$!`20-`20Scan`20and`20generate`20.com`20file`20for`20mail-server....
- X$!`20release`20010393
- X$!
- X$!`20parses`20requests.txt
- X$!
- X$`20set`20default`20workdir
- X$`20!
- X$`20open/read`20infil`20workdir:requests.txt
- X$`20open/write`20outfil`20workdir:doit.com
- X$`20open/append`20logfil`20workdir:mailserv.log
- X$`20!
- X$`20!`20write`20initialization`20stuff...
- X$`20write`20outfil`20"$`20!generated`20by`20t.com`20"`20`20!`20be`20sure`20to
- V`20create`20a`20new`20version.
- X$`20write`20logfil`20"%%-Started`20"+f$time()
- X$`20!`20
- X$`20!`20States`20->`200`20=`20looking`20for`20from
- X$`20!`20`20`20`20`20`20`20`20`20`20`201`20=`20skipping`20subjects`20(local)
- X$`20!`20`20`20`20`20`20`20`20`20`20`202`20=`20skipping`20subjects`20(far)
- X$`20!`20`20`20`20`20`20`20`20`20`20`203`20=`20skipping`20blanks`20/`20looking
- V`20for`20commands.
- X$`20!`20`20`20`20`20`20`20`20`20`20`204`20=`20looking`20for`20commands
- X$`20!`20`20`20`20`20`20`20->>>`20then`20back`20to`200.
- X$`20!
- X$`20state`20=`200
- X$`20whofrom`20=`20""
- X$`20loop:
- X$`20`20`20read/end=endrun`20infil`20line
- X$`20`20`20line=f$edit(line,"compress,`20lowercase")
- X$`20`20`20if`20(line`20.eqs.`20"`0C")`20
- X$`20`20`20then
- X$`20`20`20`20`20state`20=`200
- X$`20`20`20`20`20goto`20loop
- X$`20`20`20endif
- X$`20`20`20if`20(state`20.eqs.`203)`20.and.`20(f$length(line)`20.eqs.`200)`20th
- Ven`20goto`20loop
- X$`20`20`20if`20(state`20.eqs.`200)`20.and.`20(line`20.eqs.`20"")`20then`20goto
- V`20loop
- X$`20`20`20if`20(state`20.eqs.`200)`20.and.`20(f$locate("from:",line)`20.eqs.
- V`200)`20
- X$`20`20`20then
- X$`20`20`20`20`20state`20=`201
- X$`20`20`20`20`20num`20=`20f$length(line)-f$locate("mx%",line)-3
- X$`20`20`20`20`20temp`20=`20f$extract(f$locate("mx%",line),num,line)
- X$`20`20`20`20`20whofrom`20=`20f$extract(0,f$locate("`20",temp),temp)
- X$`20`20`20`20`20goto`20loop
- X$`20`20`20endif
- X$`20`20`20if`20(state`20.gt.`202)`20then`20goto`20a2
- X$`20`20`20if`20(line`20.nes.`20"")`20then`20goto`20loop`20`20`20`20`20`20!stat
- Ves`201`20and`202
- X$`20`20`20`20`20`20state`20=`20state+1
- X$`20`20`20`20`20`20goto`20loop
- X$`20!`20now`20=`20state`203>=`20`20->`20write`20output`20until`20null
- X$`20a2:
- X$`20state`20=`204`20`20`20
- X$`20`20`20if`20(line`20.eqs.`20"")`20
- X$`20`20`20`20`20then
- X$`20`20`20`20`20`20`20state`20=`200`20`20`20!`20go`20back`20to`20looking`20for
- V`20"from"
- X$`20`20`20`20`20`20`20goto`20loop
- X$`20`20`20`20`20else
- X$`20`20`20`20`20`20`20if`20(f$locate("send`20",line)`20.eqs.`200)`09`09!`20hha
- Vndle`20send`20command
- X$`20`20`20`20`20`20`20`20then
- X$`20`20`20`20`20`20`20`20`20`20num`20=`20f$length(line)-f$locate("send`20",lin
- Ve)-5
- X$`20`20`20`20`20`20`20`20`20`20temp`20=`20txtdir`20+`20f$extract(5,num,line)
- X$`20`20`20`20`20`20`20`20`20`20if`20(f$search(temp)`20.nes.`20"")`20
- X$`20`20`20`20`20`20`20`20`20`20`20`20then
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"$`20mail`20"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"send`20"+temp
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20whofrom
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"MAILSERVER`20REQU
- VEST:"+line
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"quit"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"$`20!`20"+line
- X$`09`20`20`20`20`20`20`20write`20logfil`20"SENT:`20`20`20`09`09"+line+"`09"+wh
- Vofrom
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20goto`20loop
- X$`20`20`20`20`20`20`20`20`20`20`20`20else
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"$`20mail`20"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"send`20"+txtdir+"
- Verror.txt"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20whofrom
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"MAILSERVER`20FILE
- V`20NOT`20FOUND:"+line
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"quit"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"$`20!`20"+line
- X$`09`20`20`20`20`20`20`20write`20logfil`20"%%-SEND-ERROR:`09"+line+"`09"+whofr
- Vom
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20goto`20loop
- X$`20`20`20`20`20`20`20`20`20`20`20`20endif
- X$`20`20`20`20`20`20`20`20endif
- X$`20`20`20`20`20`20`20if`20(f$locate("psend`20",line)`20.eqs.`200)`09`09!`20ha
- Vndle`20psend`20command
- X$`20`20`20`20`20`20`20`20then
- X$`20`20`20`20`20`20`20`20`20`20num`20=`20f$length(line)-f$locate("psend`20",li
- Vne)-6
- X$`20`20`20`20`20`20`20`20`20`20temp`20=`20bindir+f$extract(6,num,line)
- X$`20`20`20`20`20`20`20`20`20`20if`20(f$search(temp)`20.nes.`20"")`20
- X$`20`20`20`20`20`20`20`20`20`20`20`20then
- X$`09`20`20`20`20`20`20`20write`20outfil`20"uuencode`20"+temp+"`20"+bindir+"tem
- Vp.txt"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"$`20mail`20"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"send`20"+bindir+"
- Vtemp.txt"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20whofrom
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"MAILSERVER`20REQU
- VEST:"+line
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"quit"
- X$`09`20`20`20`20`20`20`20write`20outfil`20"$`20del`20"+bindir+"temp.txt;"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"$`20!`20"+line
- X$`09`20`20`20`20`20`20`20write`20logfil`20"PSENT:`20`20`20`09`09"+line+"`09"+w
- Vhofrom
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20goto`20loop
- X$`20`20`20`20`20`20`20`20`20`20`20`20else
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"$`20mail`20"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"send`20"+txtdir+"
- Verror.txt"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20whofrom
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"MAILSERVER`20FILE
- V`20NOT`20FOUND:"+line
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"quit"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"$`20!`20"+line
- X$`09`20`20`20`20`20`20`20write`20logfil`20PSEND-ERROR:`09"+line+"`09"+whofrom
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20goto`20loop
- X$`20`20`20`20`20`20`20`20`20`20`20`20endif
- X$`20`20`20`20`20`20`20`20endif
- X$`20`20`20`20`20`20`20`20if`20(f$locate("status",line)`20.eqs.`200)`20`09`09!
- V`20send`20file
- X$`20`20`20`20`20`20`20`20then
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"$`20mail`20"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"send`20"+txtdir+"
- Vstatus.txt"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20whofrom
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"MAILSERVER`20STAT
- VUS:"+line
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"quit"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"$`20!`20"+line
- X$`09`20`20`20`20`20`20`20write`20logfil`20"STATUS`09`20`09`09`09"+whofrom
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20goto`20loop
- X$`20`20`20`20`20`20`20`20endif
- X$`20`20`20`20`20`20`20`20if`20(f$locate("help",line)`20.eqs.`200)`20`09`09!
- V`20send`20help`20file
- X$`20`20`20`20`20`20`20`20then
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"$`20mail`20"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"send`20"+txtdir+"
- Vdocumentation.txt"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20whofrom
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"MAILSERVER`20HELP
- V:"+line
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"quit"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"$`20!`20"+line
- X$`09`20`20`20`20`20`20`20write`20logfil`20"HELP`09`20`09`09`09"+whofrom
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20goto`20loop
- X$`20`20`20`20`20`20`20`20endif
- X$`20`20`20`20`20`20`20`20if`20(f$locate("catalog",line)`20.eqs.`200)`20`09`09!
- V`20send`20catalog`20file
- X$`20`20`20`20`20`20`20`20then
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"$`20mail`20"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"send`20"+txtdir+"
- Vcatalog.txt"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20whofrom
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"MAILSERVER`20CATA
- VLOG:"+line
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"quit"
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"$`20!`20"+line
- X$`09`20`20`20`20`20`20`20write`20logfil`20"CATALOG`09`09`09`09"+whofrom
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20goto`20loop
- X$`20`20`20`20`20`20`20`20endif
- X$`20`20`20`20`20`20`20`20if`20(f$locate("subscribe",line)`20.eqs.`200)`09!`20a
- Vdd`20"from"`20name`202`20list
- X$`20`20`20`20`20`20`20`20then
- X$`20`20`20`20`20`20`20`20`20`20`20`20open/append`20temp_file`20workdir:mag.dis
- V
- X$`20`20`20`20`20`20`20`20`20`20`20`20write`20temp_file`20whofrom
- X$`20`20`20`20`20`20`20`20`20`20`20`20close`20temp_file
- X$`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"$`20mail`20"
- X$`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"send`20"+txtdir+"subscr
- Vibed.txt"
- X$`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20whofrom
- X$`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"MAILSERVER`20SUBSCRIBED
- V:"+line
- X$`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"quit"
- X$`20`20`20`20`20`20`20`20`20`20`20`20write`20outfil`20"$`20!`20"+line
- X$`20`20`20`20`20`20`20`20`20`20`20`20write`20logfil`20"SUBSCRIBED`09`09`09`09"
- V+whofrom
- X$`20`20`20`20`20`20`20`20`20`20`20`20goto`20loop
- X$`20`20`20`20`20`20`20`20endif
- X$`20`20`20`20endif
- X$`20goto`20`20loop
- X
- X$`20endrun:
- X$`20`20`20`20write`20logfil`20"%%-END-OF-RUN`20"+f$time()+"`20%%"
- X$`20`20`20`20close`20logfil
- X$`20`20`20`20close`20outfil
- X$`20`20`20`20close`20infil
- $ call unpack SCAN.COM;5 557998421 ""
- $ v=f$verify(v)
- $ exit
-