🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: vmsnet.sources
Article #117

deliver.rno, the forgotten documentation.

#117
From: Dick Munroe
Date: Wed, 14 Oct 1992 00:26
1181 lines
43153 bytes
Submitted-by: munroe@dmc.com (Dick Munroe)
Posting-number: Volume 3, Issue 202
Archive-name: deliver/docs01

I don't know why, but when I posted DELIVER, I forgot to provide the .RNO file
for the product.

My apologies.

Dick Munroe
--
Dick Munroe				Internet: munroe@dmc.com
Doyle Munroe Consultants, Inc.		UUCP: ...uunet!thehulk!munroe
267 Cox St.				Office: (508) 568-1618
Hudson, Ma. 01749 USA			FAX: (508) 562-1133

GET CONNECTED!!! Send mail to info@dmc.com to find out about DMConnection.

$! ------------------ CUT HERE -----------------------
$ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))'
$!
$! This archive created by VMS_SHARE Version 8.1
$!   On 13-OCT-1992 17:22:32.75   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. DELIVER.RNO;1
$!
$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'
X.!`20DELIVER.RNO`20-`20Programmable`20delivery`20interface`20for`20VMS`20MAIL
X.!`20Written`20by`20Ned`20Freed,`2010-Oct-1985,`20modified`2030-Apr-1986
X.!`20and`20again`2026-Sep-1986`20and`20again`2017-Dec-1986`20and`20again`2014-
VJul-1989
X.!
X.!`20Authors:
X.!
X.!`09Dick`20Munroe
X.!`09Doyle,`20Munroe`20Consultants,`20Inc.
X.!`09267`20Cox`20St.
X.!`09Hudson,`20Ma.`2001749
X.!`09(508)`20568-1618
X.!`09(FAX)`20(508)`20562-1133
X.!`09munroe@dmc.com
X.!
X.!`20Modification`20History:
X.!
X.!`090.001`20Dick`20Munroe`2009-Jun-92
X.!`09`20`20`20`20Add`20documentation`20of`20DELIVER_DEBUG_IN/_OUT`20
X.!
X.!`20RUNOFF`20operation`20instructions:
X.!`20`20`20This`20file`20can`20either`20produce`20a`20printed`20document`20or
V`20an`20entry
X.!`20`20`20for`20VMS`20online`20HELP.`20Use`20the`20command
X.!
X.!`20`20`20`20`20$`20RUNOFF/NOBOLD/NOUNDER/OUT=DELIVER.HLP`20DELIVER.RNO
X.!
X.!`20`20`20to`20create`20the`20online`20help`20entry.`20DELIVER.HLP`20can`20be
V`20inserted
X.!`20`20`20into`20any`20VMS`20help`20library.`20Use`20the`20command
X.!
X.!`20`20`20`20`20$`20RUNOFF/OUT=DELIVER.MEM/VAR=MANUAL`20DELIVER.RNO
X.!
X.!`20`20`20To`20create`20a`20document`20for`20printing.
X.!
X.if`20manual
X.ifnot`20pmdf
X.!
X.!`20We`20set`20the`20layout`20so`20that`20running`20page`20numbers`20are`20on
V`20the`20bottom
X.!
X.lo`201,2
X.st
X.!
X.!`20Initial`20right`20margin`20-`20sections`20should`20never`20set`20it`20hig
Vher`20than`20this.
X.!`20Set`20page`20size`20too.
X.ps`2066,74`20.rm`2074
X.!
X.!`20Header`20level`20setup
X.sthl`206,0,0,8,9,1,1,9,2
X.dhl`20D,D,lu,d,ll,ll
X.!
X.!
X.flags`20bold
X.!
X.sk`202
X.c;DELIVER`20-`20A`20Programmable`20Message`20Delivery`20System`20for`20VMS
V`20MAIL
X.title`20DELIVER`20-`20A`20Programmable`20Message`20Delivery`20System`20for
V`20VMS`20MAIL
X.sk`202
X.c;Ned`20Freed
X.c;Innosoft`20International,`20Inc.
X.c;Claremont,`20CA`2091711
X.sk`201
X.c;14-Jul-1989
X.sk`202
X.c;Dick`20Munroe
X.c;Doyle,`20Munroe`20Consultants,`20Inc.
X.c;267`20Cox`20St.
X.c;Hudson,`20Ma.`2001749
X.c;(508)`20568-1618
X.c;(FAX)`20(508)`20562-1133
X.c;munroe@dmc.com
X.c;09-Jun-1992
X.sk`203
X.if`20content
X.require`20"deliver.rnt"
X.endif`20content
X.pa
X.endif`20pmdf
X.else`20manual
X.NO`20NUMBER`20.NO`20PAGING`20.STHL`205,1,1
X.endif`20manual
X.if`20manual
X.send`20toc`20.ifnot`20global
X.hl`201`20`5E*Overview\*
X.send`20toc`20.endif`20global
X.else`20manual
X.br
X.lm`200
X1`20DELIVER
X.lm`201
X.br
X.endif`20manual
X
XDELIVER`20is`20an`20adjunct`20to`20VMS`20MAIL`20which`20makes`20it`20possible
V`20for`20incoming`20mail
Xmessages`20to`20be`20handled`20and`20processed`20automatically`20based`20on
V`20information
Xprovided`20in`20a`20user-supplied`20file.`20Different`20actions`20can`20be`20t
Vaken`20based`20on`20a
Xmessage's`20address,`20subject`20or`20contents.`20These`20actions`20include
V`20delivering`20the
Xmessage,`20forwarding`20the`20message`20or`20even`20invoking`20a`20DCL`20comma
Vnd`20script`20to
Xperform`20some`20complex`20operation.`20Any`20actions`20taken`20occur`20immedi
Vately`20upon
Xreceipt`20of`20the`20message;`20the`20user`20does`20not`20need`20to`20log`20in
V`20for`20DELIVER`20to
Xoperate.
X
X.s`201
X
XDELIVER`20is`20modelled`20after`20the`20MAILDELIVERY`20facility`20of`20the`20M
VMDF`20mail`20system.
XDELIVER`20is,`20however,`20completely`20distinct`20from`20MMDF`20and`20the`20f
Vormats`20of
X_.MAILDELIVERY`20files`20for`20MMDF`20and`20MAIL.DELIVERY`20files`20for`20DELI
VVER`20are
Xdissimiliar.
X
X.ifnot`20pmdf
X.s`201
X
XThis`20document`20assumes`20that`20the`20reader`20is`20familiar`20with`20the
V`20VMS`20MAIL`20facility.
X
X.endif`20pmdf
X
X.if`20manual
X.send`20toc`20.ifnot`20global
X.hl`201`20`5E*Setting`20up`20DELIVER\*
X.send`20toc`20.endif`20global
X.else`20manual
X.br
X.lm`200
X2`20Setup
X.lm`201
X.br
X.endif`20manual
X
XUsers`20can`20set`20up`20DELIVER`20to`20handle`20their`20incoming`20mail`20by
V`20doing`20just`20two
Xthings:
X
X.test`20page`205
X.s`201`20.ls0`20.dle`20"(",ll,")"
X
X.le;Create`20a`20MAIL.DELIVERY`20file`20in`20their`20accounts'`20initial`20def
Vault`20directory
X(SYS$LOGIN).`20For`20security`20reasons`20this`20file`20MUST`20be`20located
V`20in`20the`20initial
Xdefault`20directory`20--`20it`20cannot`20be`20stored`20anyplace`20else.`20The
V`20format`20of`20a
XMAIL.DELIVERY`20file`20is`20described`20below.
X
X.s`201
X
X.le;Set`20their`20mail`20forwarding`20address`20for`20the`20account`20to`20"DE
VLIVER_%user",`20where
X"user"`20is`20the`20username`20associated`20with`20the`20user's`20account.`20T
Vhe`20MAIL`20command`20to
Xchange`20or`20set`20a`20forwarding`20address`20is`20SET`20FORWARD.`20Specifyin
Vg`20another`20user's
Xname`20in`20conjunction`20with`20"DELIVER_%"`20will`20perform`20no`20useful
V`20function`20--`20mail
Xwill`20simply`20be`20forwarded`20and`20handled`20by`20that`20user's`20MAIL.DEL
VIVERY`20file,
Xassuming`20one`20exists.
X
X.els`201
X
XOnce`20these`20two`20steps`20have`20been`20taken,`20DELIVER`20will`20be`20invo
Vked`20automatically`20to
Xhandle`20all`20mail`20as`20it`20is`20delivered.`20For`20example,`20suppose`20u
Vser`20BOB`20wants`20to`20tell
XDELIVER`20to`20handle`20incoming`20messages.`20BOB`20should`20create`20a`20MAI
VL.DELIVERY`20file`20and
Xthen`20type:
X
X.s`201`20.i`204`20.test`20page`204
X$`20MAIL
X.i`204
XMAIL_>`20SET`20FORWARD`20DELIVER_%BOB
X.i`204
XMAIL_>
X
X.if`20manual
X.send`20toc`20.ifnot`20global
X.hl`201`20`5E*MAIL.DELIVERY`20file`20format\*
X.send`20toc`20.endif`20global
X.else`20manual
X.br
X.lm`200
X2`20Format
X.lm`201
X.br
X.endif`20manual
X
XThe`20MAIL.DELIVERY`20file`20controls`20DELIVER`20and`20tells`20it`20how`20to
V`20handle`20each
Xmessage.`20A`20MAIL.DELIVERY`20file`20consists`20of`20a`20series`20of`20direct
Vives`20with`20one
Xdirective`20on`20each`20line`20of`20the`20file.`20Each`20directive`20specifies
V`20how`20a`20certain`20kind
Xof`20message`20is`20to`20be`20handled.`20A`20particular`20directive`20may`20or
V`20may`20not`20apply`20to`20a
Xgiven`20message.`20An`20attempt`20is`20made`20to`20apply`20every`20directive
V`20in`20the`20MAIL.DELIVERY
Xfile`20to`20each`20message,`20thus`20more`20than`20one`20directive`20may`20app
Vly`20to`20(and`20more`20than
Xone`20action`20may`20be`20the`20result`20of)`20a`20single`20message.
X
X.s`201
X
XAny`20line`20in`20the`20file`20which`20begins`20with`20a`20semicolon`20or`20an
V`20exclamation`20point`20is
Xconsidered`20to`20be`20a`20comment`20and`20is`20ignored.
X
X.s`201
X
XA`20directive`20line`20consists`20of`20the`20following`20items`20in`20order
V`20from`20left`20to`20right:
X
X.s`201`20.i`204
X_<from-pat_>`20_<to-pat_>`20_<subject-pat_>`20_<accept_>`20_<action_>`20_<para
Vmeter_>
X.s`201
X
XItems`20must`20be`20delimited`20by`20one`20or`20more`20spaces`20or`20tabs.`20Q
Vuoted`20strings`20(use
Xdouble`20quotes,`20not`20single`20quotes)`20are`20allowed`20as`20single`20item
Vs;`20the`20quotes`20are
Xremoved`20from`20the`20items`20as`20they`20are`20read.`20A`20double`20quote
V`20can`20be`20obtained`20by
Xusing`20two`20double`20quotes`20with`20no`20space`20between`20them.`20This`20f
Vorm`20of`20quote`20handling
Xis`20consistent`20with`20that`20of`20VMS`20DCL.
X
X.if`20manual
X.send`20toc`20.ifnot`20global
X.hl`202`20`5E*Directive`20applicability\*
X.send`20toc`20.endif`20global
X.else`20manual
X.br
X.lm`200
X3`20Applicability
X.lm`201
X.br
X.endif`20manual
X
XThe`20_<from-pat_>,`20_<to-pat_>,`20_<subject-pat_>`20and`20_<accept_>`20items
V`20determine
Xwhether`20or`20not`20the`20directive`20applies`20to`20a`20particular`20message
V.`20A`20string
Xcomparison`20is`20performed`20between`20the`20patterns`20_<from-pat_>,`20_<to-
Vpat_>`20and
X_<subject-pat_>`20and`20the`20"From:",`20"To:"`20and`20"Subject:"`20fields`20o
Vf`20the`20message
Xheader`20respectively.`20The`20comparison`20is`20not`20case`20sensitive.`20The
V`20usual`20VMS
Xwildcard`20characters`20("_*"`20and`20"_%")`20can`20be`20used`20in`20the`20pat
Vterns.`20The`20pattern
X"_*"`20will`20match`20anything.
X
X.s`201
X
XOnce`20the`20comparisons`20have`20been`20performed,`20the`20_<accept_>`20item
V`20determines`20if`20the
Xdirective`20should`20be`20applied`20to`20the`20message.`20Only`20the`20first
V`20character`20of
X_<accept_>`20is`20significant.`20It`20should`20be`20one`20of`20the`20following
V:
X
X.s`201`20.nf`20.lm`20+3`20.test`20page`205
X`20A`20-`20always`20apply`20this`20directive;`20ignore`20the`20results`20of
X`20`20`20`20`20the`20comparisons.
X.test`20page`202
X`20X`20-`20never`20apply`20this`20directive;`20ignore`20the`20results`20of
X`20`20`20`20`20the`20comparisons.
X.test`20page`202
X`20T`20-`20apply`20this`20directive`20if`20the`20patterns`20all`20matched.
X.test`20page`202
X`20F`20-`20apply`20this`20directive`20if`20the`20patterns`20did`20not`20all
V`20match.
X.test`20page`202
X`20O`20-`20apply`20this`20directive`20if`20the`20patterns`20all`20matched`20an
Vd
X`20`20`20`20`20no`20previous`20directive`20has`20been`20applied`20to`20the`20m
Vessage.
X.test`20page`202
X`20B`20-`20apply`20this`20directive`20if`20a`20pattern`20did`20not`20match`20a
Vnd
X`20`20`20`20`20no`20previous`20directive`20has`20been`20applied`20to`20the`20m
Vessage.
X.test`20page`202
X`20E`20-`20this`20directive`20applies`20if`20all`20the`20patterns`20matched
X`20`20`20`20`20OR`20no`20other`20directive`20has`20been`20applied`20so`20far.
X.s`201`20.f`20.lm`20-3
X
XAny`20character`20whatsoever`20is`20legal:`20Y`20is`20the`20same`20as`20T,`20N
V`20is`20the`20same`20as`20F,
Xquestion`20mark`20is`20the`20same`20as`20O,`20Q`20is`20the`20same`20as`20B`20a
Vnd`20all`20other`20characters`20are
Xthe`20same`20as`20X.
X
X.s`201
X
XDirectives`20are`20tested`20in`20the`20order`20they`20appear`20in`20the`20MAIL
V.DELIVERY`20file.
X
X.s`201
X
XFor`20example,`20suppose`20JIM`20sends`20a`20message`20to`20BOB.`20The`20subje
Vct`20line`20of`20the
Xmessage`20is`20"Re:`20Mooses".`20BOB's`20MAIL.DELIVERY`20file`20contains`20the
V`20following`20lines
X(the`20function`20of`20the`20last`20two`20columns`20of`20each`20line,`20the
V`20_<action_>`20and
X_<parameter_>`20items,`20is`20described`20later):
X
X.s`201`20.lm`20+4`20.nf
X.test`20page`205
X"FRED`20_*"`20_*`20_*`20`20`20`20`20`20`20`20`20T`20Q
X"JIM`20_*"`20`20_*`20_*`20`20`20`20`20`20`20`20`20T`20A`20JIM.LOG
X_*`20`20`20`20`20`20`20`20_*`20_*mooses_*`20`20T`20A`20MOOSE.LOG
X_*`20`20`20`20`20`20`20`20_*`20_*`20`20`20`20`20`20`20`20`20O`20A`20OTHER.LOG
X_*`20`20`20`20`20`20`20`20_*`20_*`20`20`20`20`20`20`20`20`20A`20D
X.s`201`20.lm`20-4`20.f
X
XThe`20first`20directive`20in`20the`20file`20does`20not`20apply`20since`20the
V`20message`20is`20not`20from
XFRED.`20The`20second`20and`20third`20directives`20both`20apply`20since`20JIM
V`20is`20the`20sender`20and
Xthe`20subject`20line`20contains`20the`20string`20"mooses".`20The`20fourth`20di
Vrective's`20patterns
Xall`20apply,`20but`20a`20preceeding`20directive`20has`20applied,`20so`20it`20d
Voes`20not`20apply.`20The
Xfinal`20directive`20applies`20since`20it`20would`20apply`20to`20any`20message.
V`20The`20result`20is`20that
Xthree`20directives`20apply`20to`20this`20message,`20and`20thus`20three`20separ
Vate`20actions`20are
Xtaken`20in`20processing`20the`20message.
X
X.s`201
X
XNote:`20The`20patterns`20"FRED`20_*"`20and`20"JIM`20_*"`20are`20useful`20since
V`20VMS`20MAIL`20lets`20users
Xset`20up`20personal`20name`20fields`20which`20become`20part`20of`20the`20"From
V:"`20field`20of`20the
Xmessage`20--`20the`20personal`20name`20is`20enclosed`20in`20quotes`20and`20app
Vended`20to`20the`20user
Xname.`20Depending`20on`20personal`20name`20fields`20for`20message`20handling
V`20is`20not`20a`20good`20idea
Xsince`20some`20users`20have`20a`20tendency`20to`20change`20personal`20names
V`20frequently`20and
Xwithout`20warning.`20The`20use`20of`20the`20space`20followed`20by`20an`20aster
Visk`20will`20match`20any
Xpersonal`20name`20field`20a`20user`20sets`20up;`20the`20result`20is`20a`20MAIL
V.DELIVERY`20file`20which`20is
Xinsensitive`20to`20personal`20names.
X
X.s`201
X
XIf`20none`20of`20the`20directives`20in`20the`20file`20are`20found`20to`20apply
V`20to`20the`20message,`20the
Xmessage`20is`20just`20delivered`20normally.`20In`20effect,`20each`20MAIL.DELIV
VERY`20file
Ximplicitly`20ends`20with`20the`20directive:
X
X.s`201`20.i`204
X_*`20_*`20_*`20O`20D
X
X.if`20manual
X.send`20toc`20.ifnot`20global
X.hl`202`20`5E*Actions\*
X.send`20toc`20.endif`20global
X.else`20manual
X.br
X.lm`200
X3`20Actions
X.lm`201
X.br
X.endif`20manual
X
XThe`20_<action_>`20and`20_<parameter_>`20items`20specify`20what`20action`20is
V`20taken`20when`20a
Xdirective`20is`20applied`20to`20a`20message.`20The`20first`20character`20of
V`20_<action_>`20specifies
Xwhat`20type`20of`20action`20to`20take.`20The`20legal`20characters`20for`20_<ac
Vtion_>`20and`20what`20they
Xdo`20are:
X
X.s`201`20.nf`20.lm`20+3
X.test`20page`206
X`20A`20-`20append`20the`20body`20(or`20contents)`20of`20the`20message`20to`20a
V`20file.
X`20`20`20`20`20The`20_<parameter_>`20item`20specifies`20the`20file`20name.`20T
Vhe`20file
X`20`20`20`20`20must`20already`20exist`20and`20the`20recipient`20must`20have
V`20write`20access
X`20`20`20`20`20to`20the`20file;`20DELIVER`20grants`20the`20user`20no`20special
V`20file`20access
X`20`20`20`20`20privileges.
X.test`20page`203
X`20C`20-`20copy`20the`20body`20of`20the`20message`20to`20a`20file`20whose`20na
Vme`20is
X`20`20`20`20`20_<parameter_>.`20Write`20access`20to`20the`20directory`20where
V`20the
X`20`20`20`20`20file`20is`20to`20be`20created`20is`20required.
X.test`20page`202
X`20D`20-`20deliver`20the`20message`20normally.`20The`20message`20is`20placed
V`20in
X`20`20`20`20`20the`20user's`20NEWMAIL`20folder.`20_<parameter_>`20is`20ignored
V.
X.test`20page`2011
X`20V`20-`20deliver`20the`20message`20normally`20using`20system`20privileges.
X`20`20`20`20`20This`20action`20is`20identical`20to`20action`20"D"`20above`20ex
Vcept`20that
X`20`20`20`20`20the`20"From:"`20field`20of`20the`20message`20header`20is`20set
V`20to`20match
X`20`20`20`20`20the`20name`20of`20the`20original`20sender`20instead`20of`20the
V`20name`20of
X`20`20`20`20`20the`20user.`20This`20action`20makes`20use`20of`20the`20DELIVER
V`20foreign
X`20`20`20`20`20mail`20interface`20in`20incoming`20mode`20which`20in`20turn`20r
Vequires
X`20`20`20`20`20that`20the`20user`20be`20fully`20privileged.`20General`20users
V`20should
X`20`20`20`20`20use`20action`20"D"`20instead.
X
X`20`20`20`20`20This`20form`20of`20delivery`20requires`20the`20account`20delive
Vring`20the
X`20`20`20`20`20message`20to`20have`20BYPASS`20privilege.
X.test`20page`206
X`20E`20-`20execute`20the`20specified`20command.`20The`20DCL`20command`20specif
Vied
X`20`20`20`20`20by`20_<parameter_>`20is`20executed.`20The`20command`20is`20exec
Vuted`20in
X`20`20`20`20`20the`20environment`20of`20the`20recipient's`20own`20account.`20A
Vny
X`20`20`20`20`20noninteractive`20DCL`20command`20is`20valid,`20including`20an
X`20`20`20`20`20indirect`20command`20file`20specification.`20Several`20DCL`20sy
Vmbols
X`20`20`20`20`20can`20be`20used`20in`20the`20command`20to`20facilitate`20messag
Ve
X`20`20`20`20`20processing:
X.s`201
X.test`20page`204
X`20`20`20`20`20_FROM`20`20`20`20`20`20`20`20`20`20`20-`20the`20message's`20"Fr
Vom:"`20address.
X`20`20`20`20`20_TO`20`20`20`20`20`20`20`20`20`20`20`20`20-`20the`20message's
V`20"To:"`20address.
X`20`20`20`20`20_SUBJECT`20`20`20`20`20`20`20`20-`20the`20message's`20"Subject:
V".
X`20`20`20`20`20_CC`20`20`20`20`20`20`20`20`20`20`20`20`20-`20the`20message's
V`20"Cc:".
X.test`20page`203
X`20`20`20`20`20_QFROM`20`20`20`20`20`20`20`20`20`20-`20"From:"`20with`20quotes
V`20doubled.
X`20`20`20`20`20_QQFROM`20`20`20`20`20`20`20`20`20-`20"From:"`20with`20quotes
V`20quadrupled.
X`20`20`20`20`20_QTO`20`20`20`20`20`20`20`20`20`20`20`20-`20"To:"`20with`20quot
Ves`20doubled.
X`20`20`20`20`20_QQTO`20`20`20`20`20`20`20`20`20`20`20-`20"To:"`20with`20quotes
V`20quadrupled.
X`20`20`20`20`20_QSUBJECT`20`20`20`20`20`20`20-`20"Subject:"`20with`20quotes
V`20doubled.
X`20`20`20`20`20_QQSUBJECT`20`20`20`20`20`20-`20"Subject:"`20with`20quotes`20qu
Vadrupled.
X`20`20`20`20`20_QCC`20`20`20`20`20`20`20`20`20`20`20`20-`20"Cc:"`20with`20quot
Ves`20doubled.
X`20`20`20`20`20_QQCC`20`20`20`20`20`20`20`20`20`20`20-`20"Cc:"`20with`20quotes
V`20quadrupled.
X.test`20page`207
X`20`20`20`20`20MESSAGE__FILE`20`20`20-`20the`20name`20of`20the`20file`20contai
Vning`20the
X`20`20`20`20`20_`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20body`20of
V`20the`20message.`20MESSAGE__FILE
X`20`20`20`20`20_`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20is`20always
V`20fully`20qualified.
X`20`20`20`20`20MESSAGE__DELETE`20-`20initially`20set`20to`20"YES",`20if`20this
V
X`20`20`20`20`20_`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20symbol`20is
V`20set`20to`20"NO"`20no`20attempt`20will
X`20`20`20`20`20_`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20be`20made
V`20to`20delete`20MESSAGE__FILE`20after
X`20`20`20`20`20_`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20all`20actio
Vns`20are`20complete.`20The`20M`20_<action_>
X`20`20`20`20`20_`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20sets`20MESS
VAGE__DELETE`20to`20"NO"`20as`20well.
X.s`201
X.test`20page`205
X`20`20`20`20`20The`20"Q"`20forms`20are`20useful`20if`20the`20symbol`20must`20b
Ve`20expanded
X`20`20`20`20`20inside`20a`20quoted`20string.`20The`20MESSAGE__DELETE`20flag
V`20is`20useful
X`20`20`20`20`20if`20MESSAGE__FILE`20has`20to`20be`20queued`20for`20further`20p
Vrocessing
X`20`20`20`20`20at`20a`20later`20time,`20or`20if`20one`20of`20the`20actions`20h
Vas`20already
X`20`20`20`20`20deleted`20it.
X.test`20page`202
X`20F`20-`20forward`20the`20message.`20The`20message`20is`20forwarded`20to`20th
Ve
X`20`20`20`20`20address`20specified`20by`20_<parameter_>.
X.test`20page`2011
X`20W`20-`20forward`20the`20message`20using`20system`20privileges.`20This`20act
Vion
X`20`20`20`20`20is`20identical`20to`20action`20"F"`20above`20except`20that`20th
Ve`20"From:"
X`20`20`20`20`20field`20of`20the`20message`20header`20is`20set`20to`20match`20t
Vhe`20name`20of
X`20`20`20`20`20the`20original`20sender`20instead`20of`20the`20name`20of`20the
V`20user.`20This
X`20`20`20`20`20action`20makes`20use`20of`20the`20DELIVER`20foreign`20mail`20in
Vterface`20in
X`20`20`20`20`20incoming`20mode`20which`20in`20turn`20requires`20that`20the`20u
Vser`20be
X`20`20`20`20`20fully`20privileged.`20`20General`20users`20should`20use`20actio
Vn`20"F"
X`20`20`20`20`20instead.
X
X`20`20`20`20`20This`20form`20of`20delivery`20requires`20the`20account`20delive
Vring`20the
X`20`20`20`20`20message`20to`20have`20BYPASS`20privilege.
X.test`20page`205
X`20Q`20-`20quit;`20take`20no`20action`20and`20abort.`20If`20this`20action`20is
V`20taken
X`20`20`20`20`20DELIVER`20stops`20scanning`20the`20MAIL.DELIVERY`20file`20at
V`20this
X`20`20`20`20`20point.`20No`20subsequent`20directives`20will`20apply`20after
V`20this
X`20`20`20`20`20one.`20Use`20this`20directive`20with`20care;`20it`20is`20very
V`20easy`20to
X`20`20`20`20`20lose`20messages`20when`20this`20action`20is`20employed.
X.test`20page`204
X`20K`20-`20save`20the`20command`20file`20after`20execution.`20Normally`20the
V`20command
X`20`20`20`20`20file`20created`20on`20behalf`20of`20the`20user`20is`20deleted
V`20automatically
X`20`20`20`20`20after`20execution.`20This`20action,`20if`20used`20inhibits`20th
Vis
X`20`20`20`20`20automatic`20deletion.
X.test`20page`205
X`20L`20-`20save`20the`20batch`20log`20of`20the`20DCL`20commands`20executed`20b
Vy`20DELIVER
X`20`20`20`20`20for`20each`20message`20processed`20in`20the`20file`20_<paramete
Vr_>`20in`20the
X`20`20`20`20`20user's`20login`20directory.`20This`20option`20is`20useful`20for
V`20debugging
X`20`20`20`20`20MAIL.DELIVERY`20files`20and`20command`20scripts.`20If`20more
V`20than`20one
X`20`20`20`20`20L`20_<action_>`20is`20triggered`20only`20the`20last`20one`20has
V`20any`20effect.
X.test`20page`205
X`20M`20-`20save`20the`20message`20file`20after`20execution`20of`20the`20batch
V`20job.`20The
X`20`20`20`20`20message`20file`20is`20normally`20deleted`20as`20the`20last`20st
Vep`20of
X`20`20`20`20`20processing`20by`20the`20batch`20job.`20This`20action`20suppress
Ves`20the
X`20`20`20`20`20automatic`20deletion;`20the`20same`20effect`20can`20be`20obtain
Ved`20by
X`20`20`20`20`20setting`20the`20MESSAGE__DELETE`20flag`20to`20"NO".
X.s`201`20.lm`20-3`20.f
XFor`20example,`20suppose`20that`20BOB`20sends`20JIM`20a`20message.`20JIM`20has
V`20the
Xfollowing`20(rather`20complex)`20MAIL.DELIVERY`20file:
X.s`201`20.nf`20.lm`20+4`20.test`20page`206
X!`20Messages`20with`20subject`20"Loopback"`20are`20returned`20to`20sender
X"JIM`20_*"`20`20`20_*`20"Loopback"`20T`20D
X_*`20`20`20`20`20`20`20`20`20_*`20"Loopback"`20O`20F`20"""''F$ELEMENT(0,""`20"
V",QFROM)'"""
X_*`20`20`20`20`20`20`20`20`20_*`20"Loopback"`20T`20Q
X!`20All`20other`20messages`20are`20logged
X_*`20`20`20`20`20`20`20`20`20_*`20_*`20`20`20`20`20`20`20`20`20`20A`20E`20@LOG
VALL.COM
X!`20Just`20log`20messages`20from`20TERRY
X.test`20page`207
X"TERRY`20_*"`20_*`20_*`20`20`20`20`20`20`20`20`20`20T`20Q
X!`20Just`20log`20archive`20messages`20from`20myself
X"JIM`20_*"`20`20`20_*`20"Archives"`20T`20Q
X!`20Save`20messages`20from`20BOB`20in`20a`20special`20file
X"BOB`20_*"`20`20`20_*`20_*`20`20`20`20`20`20`20`20`20`20T`20A`20BOB.LOG
X!`20Then`20deliver`20anything`20that`20gets`20this`20far
X_*`20`20`20`20`20`20`20`20`20_*`20_*`20`20`20`20`20`20`20`20`20`20A`20D
X.s`201`20.f`20.lm`20-4
XJIM's`20LOGALL.COM`20contains`20the`20following`20commands:
X.s`201`20.nf`20.lm`20+4
X.test`20page`206
X$`20from`20`20`20`20==`20"From:`20`20`20`20"`20+`20from
X$`20to`20`20`20`20`20`20==`20"To:`20`20`20`20`20`20"`20+`20to
X$`20subject`20==`20"Subject:`20"`20+`20subject
X$`20open/append/error=make__one`20x`20message.log
X$`20next:
X$`20write`20x`20""
X$`20write`20x`20from
X$`20write`20x`20to
X$`20write`20x`20subject
X$`20write`20x`20""
X$`20close`20x
X.test`20page`207
X$`20append`20'message__file'`20message.log
X$`20exit
X$`20!
X$`20make__one:
X$`20create`20message.log
X$`20open/append`20x`20message.log
X$`20goto`20next
X.s`201`20.f`20.lm`20-4
X
XIf`20the`20subject`20line`20of`20BOB's`20message`20is`20not`20the`20string`20"
VLoopback",`20the`20message
Xwill`20be`20logged`20with`20a`20header`20in`20the`20file`20MESSAGE.LOG`20(loca
Vted`20in`20JIM's
XSYS$LOGIN`20directory),`20appended`20to`20the`20file`20BOB.LOG`20without`20any
V`20header`20and
Xdelivered`20to`20JIM's`20NEWMAIL`20folder.`20If`20subject`20line`20is`20the
V`20string`20"Loopback",
XJIM's`20MAIL.DELIVERY`20file`20will`20bounce`20the`20message`20right`20back
V`20to`20BOB.
X
X.s`201
X
XAs`20another`20example,`20if`20TERRY`20sends`20a`20message`20to`20BOB,`20the
V`20message`20is`20logged`20only
Xin`20BOB's`20MESSAGE.LOG`20file;`20BOB`20never`20receives`20any`20notification
V`20that`20the`20message
Xarrived.`20Apparently`20TERRY`20never`20says`20anything`20of`20importance`20to
V`20BOB.
X
X.s`201
X
XIt`20is`20clear`20that`20the`20ability`20to`20execute`20an`20arbitrary`20set
V`20of`20DCL`20commands`20in
Xresponse`20to`20a`20message`20is`20a`20very`20powerful`20tool.`20It`20must,
V`20however,`20be`20used`20with
Xcare,`20since`20processing`20is`20initiated`20whenever`20a`20message`20is`20re
Vceived`20and`20operates
Xin`20a`20completely`20unattended`20environment.
X
X.if`20manual
X.send`20toc`20.ifnot`20global
X.hl`201`20`5E*Implementation\*
X.send`20toc`20.endif`20global
X.else`20manual
X.br
X.lm`200
X2`20Implementation
X.lm`201
X.br
X.endif`20manual
X
X.ifnot`20pmdf
X
XWarning:`20The`20details`20in`20this`20section`20are`20technical`20in`20nature
V`20and`20are`20probably
Xof`20interest`20only`20to`20system`20managers`20or`20programers.
X
X.s`201
X.endif`20pmdf
X
XDELIVER`20is`20implemented`20as`20foreign`20interface`20to`20VMS`20MAIL.`20DEL
VIVER`20is`20activated
Xwhen`20a`20message`20addressed`20to`20"DELIVER_%user"`20is`20sent.`20MAIL`20in
Vvokes`20DELIVER`20by
Xloading`20the`20DELIVER__MAILSHR`20shareable`20image`20and`20calling`20a`20set
V`20of`20routines
XDELIVER`20provides`20to`20interface`20to`20MAIL.`20DELIVER`20does`20the`20foll
Vowing:
X
X.s`201`20.ls`200`20.dle`20"(",d,")"
X
X.le;The`20$GETUAI`20system`20service`20is`20used`20to`20validate`20the`20addre
Vss.`20DELIVER`20will
Xsignal`20an`20error`20if`20an`20attempt`20is`20made`20to`20deliver`20mail`20to
V`20someone`20who`20does`20not
Xexist.`20The`20recipient's`20default`20directory`20is`20retrieved`20to`20use
V`20when`20opening`20the
Xrecipient's`20MAIL.DELIVERY`20file.
X
X.le;DELIVER`20checks`20to`20see`20that`20the`20recipient`20has`20a`20MAIL.DELI
VVERY`20file`20in`20his`20or
Xher`20home`20directory.`20If`20this`20file`20does`20not`20exist`20DELIVER`20si
Vgnals`20an`20error.`20If
Xthe`20file`20exists`20it`20is`20read`20and`20parsed.
X
X.le;DELIVER`20writes`20the`20body`20of`20the`20message`20to`20a`20temporary
V`20file`20in`20the
Xrecipient's`20home`20directory.
X
X.le;A`20command`20file`20is`20constructed`20to`20complete`20the`20delivery`20p
Vrocess.`20This`20file
Xis`20also`20created`20in`20the`20recipient's`20home`20directory.`20The`20direc
Vtives`20previously
Xread`20from`20the`20MAIL.DELIVERY`20file`20are`20compared`20with`20the`20messa
Vge.`20Any
Xdirectories`20that`20match`20cause`20commands`20to`20be`20written`20to`20the
V`20command`20file`20that
Ximplement`20the`20requested`20action.
X
X.le;After`20the`20list`20of`20directives`20is`20exhausted`20DELIVER`20checks
V`20to`20see`20that`20at
Xleast`20one`20directive`20caused`20an`20action`20to`20be`20taken.`20If`20none
V`20did,`20DELIVER`20writes`20a
Xdefault`20action`20command`20to`20deliver`20the`20message`20normally`20into
V`20the`20command`20file.
XCommands`20to`20delete`20the`20message`20file`20(unless`20the`20MESSAGE__DELET
VE`20flag`20is`20set`20to
X"NO"`20by`20one`20of`20the`20actions)`20and`20the`20command`20file`20itself
V`20are`20written`20to`20the
Xcommand`20file`20and`20the`20command`20file`20is`20closed.
X
X.le;The`20command`20file`20is`20queued`20to`20the`20batch`20queue`20DELIVER__B
VATCH`20for`20processing.
X(SYS$BATCH`20is`20used`20if`20DELIVER__BATCH`20does`20not`20exist.)`20The`20fi
Vle`20is`20queued`20so`20that
Xit`20will`20execute`20just`20as`20if`20the`20recipient`20had`20submitted`20it
V`20for`20processing`20from
Xhis`20or`20her`20own`20account.`20(Note:`20This`20requires`20CMKRNL`20privileg
Ve.)`20Once`20the
Xcommand`20file`20is`20submitted`20DELIVER`20tidies`20up,`20deallocating`20any
V`20storage`20allocated
Xfor`20directive`20lists,`20and`20returns`20control`20to`20MAIL.
X
X.els`200
X
X.if`20manual
X.send`20toc`20.ifnot`20global
X.hl`201`20`5E*The`20other`20half`20-`20using`20DELIVER`20to`20send`20messages\
V*
X.send`20toc`20.endif`20global
X.else`20manual
X.br
X.lm`200
X2`20Sending__messages
X.lm`201
X.br
X.endif`20manual
X
XEvery`20foreign`20protocol`20interface`20to`20VMS`20MAIL`20has`20two`20parts
V`20--`20one`20which`20deals
Xwith`20received`20messages`20(the`20outgoing`20part)`20and`20another`20which
V`20transfers`20messages
Xto`20VMS`20MAIL`20(the`20incoming`20part).`20All`20the`20functions`20of`20DELI
VVER`20described`20up`20to
Xthis`20point`20are`20part`20of`20the`20outgoing`20part.`20Rather`20than`20incl
Vude`20a`20null`20incoming
Xhandler`20in`20DELIVER,`20it`20was`20decided`20to`20add`20a`20general-purpose
V`20message`20queueing
Xsystem`20that`20might`20be`20useful`20both`20as`20a`20simple`20interface`20to
V`20VMS`20MAIL`20and`20as`20an
Xexample`20of`20how`20this`20part`20of`20a`20foreign`20protocol`20interface`20i
Vs`20constructed.
X
X.s`201
X
XThe`20message`20enqueueing`20part`20of`20DELIVER`20can`20be`20used`20only`20by
V`20fully`20privileged
Xusers`20since`20it`20allows`20arbitrary`20settings`20of`20"From:"`20addresses
V`20and`20so`20could
Xviolate`20MAIL`20security`20in`20the`20hands`20of`20general`20users.`20Thus,
V`20this`20mechanism`20is`20of
Xlittle`20interest`20to`20most`20users.
X
X.s`201
X
XA`20message`20is`20sent`20via`20DELIVER`20to`20VMS`20MAIL`20with`20a`20command
V`20of`20the`20form:
X
X.s`201`20.i`204
X$`20MAIL/PROTOCOL=DELIVER__MAILSHR`20-
X.i`204
X######/SUBJECT="subject"#message-file#to-list
X.s`201
X
Xwhere`20"subject"`20is`20the`20subject`20line`20for`20the`20message,`20"messag
Ve-file"`20is`20the`20name
Xof`20a`20file`20containing`20the`20text`20of`20the`20message`20and`20to-list
V`20is`20a`20list`20of`20user
Xnames`20(delimited`20by`20commas)`20the`20message`20is`20to`20be`20sent`20to.
V`20The`20"From:"`20address
Xfor`20the`20message`20is`20not`20specified`20as`20part`20of`20the`20command
V`20line;`20it`20is`20obtained
Xinstead`20by`20translating`20the`20DCL`20symbol`20DELIVER__FROM.`20No`20checki
Vng`20is`20done`20on`20the
Xvalidity`20of`20the`20translation.`20This`20mode`20of`20MAIL`20operation`20rou
Vghly`20corresponds`20to
Xthe`20"trusted`20submit"`20mode`20available`20in`20MMDF-II.
X
X.s`201
X
XThe`20CC:`20line`20is`20obtained`20from`20the`20translation`20of`20the`20DCL
V`20symbol`20DELIVER__CC.
XNo`20CC:`20line`20is`20used`20if`20this`20symbol`20is`20not`20defined.
X
X.s`201
X
XDELIVER`20sets`20two`20DCL`20symbols`20to`20indicate`20the`20success`20or`20fa
Vilure`20of`20its`20attempt
Xto`20deliver`20the`20message.`20The`20symbol`20DELIVER__STATUS`20will`20contai
Vn`20the`20status`20code
Xof`20the`20last`20error`20that`20occurs`20while`20the`20message`20is`20being
V`20sent.`20If
XDELIVER__STATUS`20indicates`20that`20some`20sort`20of`20failure`20occurred,
V`20the`20symbol
XDELIVER__MESSAGE`20will`20contain`20the`20text`20form`20of`20the`20error`20mes
Vsage.
X
X.s`201
X
XIn`20the`20event`20of`20multiple`20errors`20while`20sending`20(e.g.`20two`20ad
Vdresses`20in`20the
X"to-list"`20are`20illegal)`20only`20the`20more`20recent`20error`20status`20inf
Vormation`20will`20be
Xreturned.`20This`20interface`20is`20somewhat`20crude`20but`20should`20prove
V`20adequate`20for`20most
Xapplications.
X
X.s`201
X
XThe`20incoming`20side`20of`20DELIVER`20is`20used`20by`20the`20outgoing`20side
V`20to`20process`20the`20"V"
Xand`20"W"`20actions,`20which`20correspond`20to`20"privileged`20deliver"`20and
V`20"privileged
Xforward"`20operations`20respectively.
X
X.ifnot`20pmdf
X.if`20manual
X.send`20toc`20.ifnot`20global
X.hl`201`20`5E*Installation\*
X.send`20toc`20.endif`20global
X.else`20manual
X.br
X.lm`200
X2`20Installation
X.lm`201
X.br
X.endif`20manual
XIf`20you`20have`20received`20DELIVER`20as`20part`20of`20PMDF,`20it`20will`20be
V`20installed`20as`20part
Xof`20the`20PMDF`20installation`20procedure.
X
X.s`201
X
XIf`20you`20received`20DELIVER`20as`20a`20separate`20piece`20of`20software,`20y
Vou`20can`20install`20it
Xas`20follows:
X
X.ls`201`20.dle`20"(",d,")"
X.lm`20-3
X
X.le;Unpack`20the`20various`20files`20that`20comprise`20DELIVER`20into`20an`20o
Vtherwise`20empty
Xdirectory.
X
X.le;Build`20DELIVER`20using`20the`20BUILD.COM`20procedure`20provided`20with
V`20the`20distribution.
XThis`20should`20produce`20two`20executable`20files,`20DELIVER__MAILSHR__V4.EXE
V`20and
XDELIVER__MAILSHR__V5.EXE.
X
X.le;Move`20the`20DELIVER`20executables`20to`20whatever`20directory`20they`20wi
Vll`20be`20run`20from.
X
X.le;Edit`20the`20file`20DELIVER__STARTUP.COM`20to`20point`20at`20the`20directo
Vry`20you've
Xchosen`20for`20the`20DELIVER`20executables.`20This`20file`20should`20then`20be
V`20copied`20to
XSYS$COMMON:`5BSYSMGR`5D`20and`20set`20up`20to`20be`20run`20at`20system`20boot
V`20time.`20You`20should`20also
Xexecute`20this`20command`20file`20by`20hand`20to`20start`20up`20DELIVER.
X
X.le;Set`20up`20a`20batch`20queue`20DELIVER__BATCH`20for`20DELIVER`20to`20use.
V`20This`20step`20is
Xoptional`20--`20DELIVER`20will`20use`20the`20default`20batch`20queue`20SYS$BAT
VCH`20if
XDELIVER__BATCH`20does`20not`20exist.`20If`20you`20like,`20you`20can`20define
V`20DELIVER__BATCH`20as`20a
Xsystem`20logical`20name`20to`20point`20at`20some`20other`20queue`20for`20DELIV
VER`20to`20use.
X
X.le;DELIVER`20should`20now`20be`20ready`20to`20use.
X
X.lm`20+3`20.els`200
X.endif`20pmdf
X
X.ifnot`20pmdf
X.if`20manual
X.send`20toc`20.ifnot`20global
X.hl`201`20`5E*Availability\*
X.send`20toc`20.endif`20global
X.else`20manual
X.br
X.lm`200
X2`20Availability
X.lm`201
X.br
X.endif`20manual
XDELIVER`20is`20distributed`20as`20part`20of`20the`20PMDF-822,`20the`20Pascal
V`20Memo`20Distribution
XFacility.`20PMDF-822`20can`20also`20be`20obtained`20from:
X
X.s`201`20.lm`20+20`20.nf`20.test`20page`206
XNed`20Freed`20(ned@ymir.bitnet)
XThe`20PMDF`20Project
XComputing`20Services
XHarvey`20Mudd`20College
XClaremont,`20CA`2091711
X(714)`20621-8006
X.lm`20-20`20.f
X.s`201
XThe`20latest`20version`20of`20DELIVER`20may`20be`20obtained`20independently
V`20from:
X.s`201`20.nf`20.lm`20+5`20.test`20page`205
XDick`20Munroe
XDoyle,`20Munroe`20Consultants,`20Inc.
X267`20Cox`20St.
XHudson,`20Ma.`2001749
X(508)`20568-1618
X(FAX)`20(508)`20562-1133
Xmunroe@dmc.com
X.lm`20-5`20.s`201
Xor`20from`20a`20VMSNET.SOURCES`20archive`20site`20near`20you.
XPlease`20write,`20call`20or`20send`20e-mail`20for`20more`20information.
X.endif`20pmdf
X
X.if`20manual
X.send`20toc`20.ifnot`20global
X.hl`201`20`5E*Documentation\*
X.send`20toc`20.endif`20global
X.else`20manual
X.br
X.lm`200
X2`20Documentation
X.lm`201
X.br
X.endif`20manual
X
XThe`20file`20DELIVER.RNO`20contains`20the`20only`20documentation`20for`20DELIV
VER.`20(You`20are
Xreading`20a`20version`20of`20it`20right`20now.)`20DELIVER.RNO`20can`20be`20use
Vd`20either`20to`20produce`20a
Xprinted`20document`20or`20a`20VMS`20help`20file`20entry.`20Use`20the`20command
V
X
X.s`201`20.i`204
X$`20RUNOFF/NOBOLD/NOUNDER/OUT=DELIVER.HLP`20DELIVER.RNO
X.s`201
X
Xto`20create`20the`20online`20help`20entry.`20DELIVER.HLP`20can`20be`20inserted
V`20into`20any`20VMS`20help
Xlibrary.`20Use`20the`20command
X
X.s`201`20.i`204
X$`20RUNOFF/OUT=DELIVER.MEM/VAR=MANUAL`20DELIVER.RNO
X.s`201
X
Xto`20create`20a`20document`20for`20printing.
X
X.if`20manual
X.send`20toc`20.ifnot`20global
X.hl`201`20`5E*Bugs\*
X.send`20toc`20.endif`20global
X.else`20manual
X.br
X.lm`200
X2`20Bugs
X.lm`201
X.br
X.endif`20manual
X
XThere`20are`20no`20known`20bugs`20in`20DELIVER`20at`20this`20time.`20However,
V`20there`20are`20a`20few`20minor
Xnuisances`20which`20users`20should`20be`20aware`20of:
X
X.s`201`20.ls`200`20.dle`20"(",d,")"
X
X.le;DELIVER`20changes`20the`20"From:"`20address`20of`20any`20message`20it`20de
Vlivers`20or`20forwards
Xto`20the`20address`20of`20the`20owner`20of`20the`20MAIL.DELIVERY`20file.`20The
V`20original`20"From:"
Xaddress`20is`20not`20lost`20entirely`20--`20it`20is`20merged`20into`20the`20su
Vbject`20line`20of`20the
Xmessage.`20This`20problem`20arises`20due`20to`20VMS`20MAIL's`20lack`20of`20dis
Vtinction`20between`20a
Xtransport`20address`20and`20a`20header`20address`20--`20DELIVER`20has`20to`20s
Vet`20the`20"From:"
Xaddress`20to`20itself`20so`20that`20authorization`20code`20in`20other`20mailer
Vs`20will`20see`20it.
XPrivileged`20users`20can`20circumvent`20this`20restriction`20by`20using`20the
V`20"V"`20and`20"W"
Xactions,`20but`20no`20such`20mechanism`20is`20available`20to`20general`20users
V.
X
X.le;It`20is`20difficult`20to`20debug`20MAIL.DELIVERY`20files`20since`20there
V`20is`20no`20way`20to
Xwatch`20deliver`20process`20the`20file`20except`20by`20enabling`20debug`20code
V`20in`20DELIVER`20(which
Xis`20not`20an`20option`20normal`20users`20can`20exercise).`20However,`20the
V`20"L"`20_<action_>`20can`20be
Xused`20to`20create`20a`20log`20file`20of`20the`20DCL`20commands`20DELIVER`20ex
Vecutes`20on`20behalf`20of`20the
Xuser`20when`20processing`20a`20message:
X
X.test`20page`203`20.s`201`20.i`204
X!`20Log`20commands`20executed`20in`20a`20file`20unconditionally
X.i`204
X_*`20_*`20_*`20A`20L`20DELIVER.LOG
X.i`204
X_*`20_*`20_*`20A`20E`20@DO__SOMETHING.COM
X.s`201
X
XSuch`20log`20files`20are`20always`20placed`20in`20the`20user's`20home`20direct
Vory.`20Also`20note`20that
Xoutput`20from`20command`20files`20invoked`20by`20DELIVER`20can`20be`20captured
V`20in`20a`20file`20by`20using
Xthe#/OUTPUT`20qualfier:
X
X.test`20page`202`20.s`201`20.i`204
X!`20Execute`20a`20command`20file`20with`20logging
X.i`204
X_*`20_*`20_*`20A`20E`20@DO__SOMETHING.COM/OUTPUT=DO__SOMETHING.LOG
X.s`201
X
XDELIVER`20does`20watch`20for`20users`20sending`20messages`20to`20themselves
V`20and`20then`20tries`20to
Xbe`20somewhat`20more`20informative`20than`20is`20usual`20about`20any`20errors
V`20it`20finds`20in
XMAIL.DELIVERY`20files.
X
X.le;It`20is`20possible`20to`20enable`20debugging`20code`20within`20DELIVER`20b
Vy
Xdefining`20either`20or`20both`20of`20these`20logical`20names:
X.s`201`20.i`204
XDELIVER__DEBUG__IN
X.s`201
Xwhich`20enables`20debugging`20output`20for`20mail`20input`20processing`20and
X.s`201`20.i`204
XDELIVER__DEBUG__OUT
X.s`201
Xwhich`20enable`20debugging`20output`20for`20mail`20output`20processing.
X.s`201
XThis`20allows`20you`20to`20observe`20the`20inner`20workings`20of`20DELIVER
Xinteractively.
X
X.le;Enabling`20the`20COPY__SELF`20feature`20in`20MAIL`20while`20DELIVER`20is
V`20also`20set`20to`20send
Xmessages`20to`20the`20user's`20mailbox`20may`20send`20MAIL`20into`20an`20infin
Vite`20loop.`20The
XCOPY__SELF`20facility`20should`20not`20follow`20forwarding`20addresses;`20unfo
Vrtunately`20it
Xdoes`20do`20this`20in`20the`20present`20implementation.`20Thus`20a`20message
V`20is`20sent`20by`20DELIVER
Xto`20the`20user's`20mailbox,`20which`20in`20turn`20re-activates`20DELIVER,`20w
Vhich`20sends`20the
Xmessage`20to`20the`20user's`20mailbox,`20and`20so`20on.
X
X.le;Lines`20in`20all`20files`20processed`20by`20DELIVER`20are`20limited`20to,
V`20at`20most,#256
Xcharacters.`20Individual`20directive`20items`20as`20well`20as`20message`20"Fro
Vm:",`20"To:"`20and
X"Subject:"`20lines`20are`20also`20limited`20to#256`20characters.`20DELIVER`20t
Vruncates`20these
Xlines`20to`20this`20length.`20This`20limit`20can`20be`20changed`20by`20alterin
Vg`20the`20constant
XPARAMETER__SIZE`20in`20DELIVER.PAS.`20However,`20these`20lines`20will`20still
V`20be`20truncated`20in
Xthe`20DCL`20DELIVER`20produces`20since`20DCL`20is`20also`20limited`20to`20line
Vs`20containing`20no`20more
Xthan#256`20characters.
X
X.els`200
$ call unpack DELIVER.RNO;1 1476829294 ""
$ v=f$verify(v)
$ exit
Technical Details
Message-ID: <8589945@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
From: munroe@dmc.com (Dick Munroe)
Newsgroups: vmsnet.sources
Subject: deliver.rno, the forgotten documentation.
Message-ID: <8589945@MVB.SAIC.COM>
Date: Wed, 14 Oct 1992 00:26:12 GMT
Organization: Doyle, Munroe Consultants, Inc., Hudson, MA
Lines: 1181
Approved: Mark.Berryman@Mvb.Saic.Com