DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T c

⟦1f431d1d6⟧ TextFile

    Length: 6310 (0x18a6)
    Types: TextFile
    Names: »ckvker.scr«

Derivation

└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit
    └─⟦3da672b63⟧ »EurOpenD3/misc/kermit.tar.Z« 
        └─⟦126dd3ca0⟧ 
            └─⟦this⟧ »ckvker.scr« 

TextFile

Date: Tue, 16 Sep 86 09:44:36 pdt
From: varian!david@lll-crg.ARPA
Subject: Using C-Kermit on VAX/VMS for mail spooling.

We use C Kermit (058) under VMS here.  I wrote some scripts that run kermit
unattended in order to send mail from UNIX to VMS.

::::::::::::::
README
::::::::::::::
5/2/86

These files allow you to transfer mail from a UNIX system to a VMS
system (or any other system running a kermit with advanced server
functions -- specifically, the remote host command).

On our leaf machines (madvax and vaxwaller), create aliases in
/usr/lib/aliases for all users that you wish to send mail to, and
just route mail to the gateway machine (varian):
	shnell:varian!shnell

On the gateway machine, create an alias in /usr/lib/aliases to pipe
the standard input to a program (vmsspool) which will place the text
in an individual file (named user.pid) and append kermit commands for
sending the file and running "remote host mail" to a take script:

	shnell:"!/usr/local/lib/vms/vmsspool lds shnell"

	(first argument is vms system name; second argument is user name
	on that VMS system)

/usr/lib/aliases is found on systems using sendmail and delivermail;
if you do not have these, you could write a front-end
shell script for your mail command, or create a special purpose vmsmail
command.   It may be possible to set up your sendmail configuration file
to handle something like user@site.vmsdomain to avoid creating aliases
for every VMS user, but I don't know enough about sendmail to do this.

Sometime later, either invoked from crontab or from a modified version
of vmsspool (for immediate transmission), the vmsdaemon is started:
	/usr/local/lib/vms/vmsdaemon lds
	(one argument -- VMS system name)

This will:
	1) Check to see if anything has been spooled up (the take script
	   is non-empty)
	2) Using a take script specific for that VMS system in
		/usr/local/lib/vms:
	   Calls up the system
	   Logs on as a specific ordinary user
	   Starts kermit in server mode on the VMS system
	3) Runs the take script generated by vmsspool:
	     for each mail message
		send text file
		run mail on VMS
		delete the file on VMS
		delete the file on UNIX
	4) Run a take script to exit kermit and logoff.
	5) Check return code from kermit; if failure, keep the take
		script for future retry; else delete it.

	Unknown behavior -- the most common error I expect is failure
	to connect or login, in which case the take script containing
	"delete the file on UNIX" should not be run; if for some reason,
	that script is run and the text files are deleted but kermit
	returns an error code, then the take file will still be around
	but the text files will be gone.

On the VMS machine, you will need:

1) A robust version of kermit, with server functions (at least "receive"
and "remote host").  I had problems using server mode with the BLISS-based
kermit (v3.1(066)), so I ended using ckermit (v4C(058)); if you don't
have a C compiler on your VMS machine, you should be able to obtain
a hex file of an executable; I believe that DEC has lifted the restriction
on distribution of binaries built with the C compiler.

(Hint: when I first tried C kermit on our VMS machine, I got garbage
characters for a prompt; it turned out the terminal was set for even
parity -- I changed it to none).

2) A login account. This can be any ordinary user account, but VMS users
who receive mail will see this name in the header, so it should be
something descriptive.


FUTURE:
I have not yet implemented sending mail back from VMS to UNIX.
My proposal is for the VMS user to reply to the login account which sent
him the mail (reply in mail should work OK) and place a
	To: unix_user
in the text of his message.  When vmsdaemon calls up VMS from UNIX,
it will (using script function of kermit) start up mail, extract all
messages into one or more text files, get those files back to UNIX,
and use a variant of recmail (a program supplied with bnews which will
send mail according to "To:" lines in a file) to send mail to the
appropriate user.   The main shortcoming of recmail is that it sends
the entire message to all names on a "To:" line; we want to be able
to break up multiple messages, and also to ignore "To:" lines that
mention our VMS login.



::::::::::::::
vmsspool
::::::::::::::
:
# vmsspool:
# This will spool up mail to send to a VMS site via kermit
# It creates a file of send and remote host commands to be executed by
#	the kermit take command.
#
# Usage:
#	vmsspool VMSsystem VMSname
#	Input is taken from standard input.
# It may be invoked from /usr/lib/aliases:   user: | "spoolvms vsystem vuser"

DIR=/usr/spool/vms
SCRIPT=$DIR/$1
# VUSER = login name under VMS
VUSER=$2
# UFILE = name of data file under UNIX
UFILE=$DIR/$VUSER.$$
# VFILE = name of data file under VMS
VFILE=$VUSER.TXT

cat > $UFILE
echo "send $UFILE $VFILE" >> $SCRIPT
echo "remote host mail $VFILE $VUSER" >> $SCRIPT
echo "remote host delete $VFILE;1" >> $SCRIPT
echo "! rm $UFILE" >> $SCRIPT



::::::::::::::
vmsdaemon
::::::::::::::
:
# vmsdaemon - connect to a VMS system, start up a kermit server,
#	execute the kermit commands in a specified take script
#
# Usage:	vmsdaemon VMS-system-name
# (Note: the VMS system name will have the same name as the take-script)
#
# You will probably want to execute this from crontab or from vmsspool
#  (if you want immediate transmission).
#

DIR=/usr/spool/vms
LIB=/usr/local/lib/vms
VSYSTEM=$1
SCRIPT=$DIR/$VSYSTEM
WORKSCRIPT=$DIR/$VSYSTEM.work
CONNECT=$LIB/$VSYSTEM
FINISH=$LIB/finish
PORT=/dev/tty00
SPEED=1200
KERMIT=/usr/local/bin/kermit

if test $# -ne 1
then
	echo "Usage: vmsdaemon VMS-system-name"
	exit 1
fi

if test -s $WORKSCRIPT
then
	echo "Work script already exists"
	exit 1
fi

if test -s $SCRIPT
then
	cp $SCRIPT $WORKSCRIPT
	echo -n > $SCRIPT
else
	echo "No work"
	exit 0
fi

$KERMIT -l $PORT -b $SPEED << EOF
take $CONNECT
take $WORKSCRIPT
take $FINISH
EOF

if test $? -eq 0
then
	echo "Succeeded"
	rm $WORKSCRIPT
	exit 0
else
	echo "Failed"
	cat $WORKSCRIPT >> $SCRIPT
	rm $WORKSCRIPT
	exit 1
fi




::::::::::::::
lds
::::::::::::::
log trans
set modem-dialer hayes
dial PHONE-NUMBER
script name:--name:--name: ~d~d~dVMS-LOGIN ssword: VMS-PASSWORD ~w45$--$ \
kermit ermit>--ermit> server



::::::::::::::
finish
::::::::::::::
bye
script $--$ lo

-------