🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: vmsnet.sources
Article #159

mailserver - can be run from regular account, part01/01

#159
From: duck
Date: Mon, 11 Jan 1993 11:11
499 lines
22561 bytes
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
Technical Details
Message-ID: <10032477@MVB.SAIC.COM>
Path: arc1-ca.pugleaf.net!sparky!uunet!usc!news.service.uci.edu!unogate!mvb.saic.com!vmsnet-sources

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!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