ΓO MX023.A햠MX023.ABACKUP/INTERCHANGE/BLOCK=8192 KITINSTAL.COM,MX023.RELEASE_NOTES,MX_START.COM,MX_LOCAL.COM,SYSTEM_QUEUE.FDL,FILESERV_HELP.TXT,MX_FILE_LIST.TXT,MXCONFIG.COM,MX_JNET.COM,FLQU.OPT,FLQ_SHR.OPT,MX_SHR.OPT,MAILQUEUE.OPT,MCP.OPT,MX_LOCAL.OPT,MX_MAILSHR.OPT,MX_ROUTER.OPT,MLFAKE.OPT,MX_MLF.OPT,MLIST_ADD_MESSAGE.TXT,MLIST_REMOVE_MESSAGE.TXT,MLIST_FORWARD_MESSAGE.TXT,[-.MCP]MCP_HELPLIB.HLB,[-.EXAMPLES]NAME_CONVERSION.C,[-.EXAMPLES]DOM_EXPANSION_CMU.B32,[-.EXAMPLES]DOM_EXPANSION_UCX.B32,[NETLIB]NETLIB011.RELEASE_NOTES SYS$DISK:[]MX023.A/SAVE MADISON ? $V5.4 _ECS01::  _$50$DUA62: V5.4  )*[MX.KIT]KITINSTAL.COM;3+,vh.9/> 4V97-g 0123KPWO856&#7`|$89G>HJ$! [MX.KIT]KITINSTAL.COM$!*$! KITINSTAL procedure for installing MX.$!1$! 30-JAN-1990 V1.0 Madison Initial release.G$! 09-FEB-1990 V1.1 Madison Add UUCP support, rearrange save sets.1$! 03-APR-1990 V1.2 Madison Add UCX support.F$! 10-APR-1990 V1.2-1 Madison Fix typos, ditch /NOTRACE on /EXE's0$! 15-MAY-1990 V1.2-2 Madison Another typo.F$! 01-JUN-1990 V1.2-3 Madison Fix TCP/IP setup in MX_STARTUP.COM.6$! 27-SEP-1990 A1.3 Madison V1.3 alpha 1 release.E$! 28-SEP-1990 A1.3-1 Madison V1.3 alpha 2 - subroutine problem?/$! 08-OCT-1990 B2.0 Madison V1.3 now V2.0.G$! 11-OCT-1990 V2.0 Madison Ditch the batch queue, username stuff.M$! 14-NOV-1990 V2.0-1 Madison Warn them about V2.0-1 config file change.0$! 05-DEC-1990 V2.1 Madison Update to V2.1.L$! 07-DEC-1990 V2.1-1 Madison Add in domain expanders for TCP/IP users.I$! 07-DEC-1990 V2.1-2 Madison Keep old MLF msg files; use file list.;$! 12-DEC-1990 V2.1-3 Madison More MLF msg file stuff.6$! 05-FEB-1991 A2.2 Madison V2.2 alpha 1 release.8$! 07-FEB-1991 A2.2-1 Madison V2.2 alpha 2 release.>$! 08-FEB-1991 A2.2-2 Madison Fix rooted logical problem.H$! 15-FEB-1991 B2.2 Madison Warn the installer about rewrite rules.=$! 18-FEB-1991 V2.2 Madison Fix order of MX_STARTUP.COM.>$! 01-MAY-1991 V2.3 Madison Update for V2.3 re-packaging.$!%$ ON CONTROL_Y THEN GOTO MX_CONTROL_Y$ ON WARNING THEN GOTO MX_FAIL$!1$ IF P1 .EQS. "VMI$_INSTALL" THEN GOTO MX_INSTALL$ EXIT VMI$_UNSUPPORTED$!$MX_CONTROL_Y:5$ IF F$TRNLNM ("MX_STUP") .NES. "" THEN CLOSE MX_STUPG$ IF F$TRNLNM ("MX_ROOT", "LNM$PROCESS") .NES. "" THEN DEASSIGN MX_ROOT@$ IF F$TRNLNM ("MX_INSTALL_ROOT", "LNM$PROCESS") .NES. "" THEN - DEASSIGN MX_INSTALL_ROOT$ VMI$CALLBACK CONTROL_Y$! $MX_FAIL:$ MX_STATUS == $STATUS5$ IF F$TRNLNM ("MX_STUP") .NES. "" THEN CLOSE MX_STUPG$ IF F$TRNLNM ("MX_ROOT", "LNM$PROCESS") .NES. "" THEN DEASSIGN MX_ROOT@$ IF F$TRNLNM ("MX_INSTALL_ROOT", "LNM$PROCESS") .NES. "" THEN - DEASSIGN MX_INSTALL_ROOT$ EXIT 'MX_STATUS$! $MX_INSTALL:$!$ IF P2 THEN SET VERIFY$!$ MX_SAY := WRITE SYS$OUTPUT$!$ MX_REQD_VMSVER = "V5.0"$ MX_REQD_VMSVER_OLD = "050"A$ VMI$CALLBACK CHECK_VMS_VERSION MX_VMSVEROK 'MX_REQD_VMSVER_OLD'0$ IF MX_VMSVEROK THEN GOTO MX_VMSVERCHECK_PASSED!$ VMI$CALLBACK MESSAGE E VMSVER -A "This product requires VMS version ''MX_REQD_VMSVER' to run.'$ EXIT VMI$_FAILURE$!$MX_VMSVERCHECK_PASSED:?$ VMI$CALLBACK CHECK_NET_UTILIZATION MX_ENOUGHDISK 2500 30 2500/$ IF .NOT. MX_ENOUGHDISK THEN EXIT VMI$_FAILURE$!*$ VMI$CALLBACK SET SAFETY CONDITIONAL 4000$!)$ MX_INSTALL_NODE = F$GETSYI ("NODENAME")$!K$ VMI$CALLBACK PROVIDE_FILE MX_OK NETLIB011.RELEASE_NOTES VMI$ROOT:[SYSHLP]$!$ TYPE SYS$INPUT:: Message Exchange Installation ProcedureL Copyright 1991, Rensselaer Polytechnic Institute. All Rights Reserved.@ Redistribution for no commercial gain is permitted.A Jnet is a registered trademark of Joiner Associates.I DEC, VMS, and ULTRIX are trademarks of Digital Equipment Corporation.D MultiNet is a trademark of SRI International and TGV, Inc.$!$ TYPE SYS$INPUT:- W A R N I N GC If you are upgrading to MX V2.3 from a release prior to V2.0-1,E including V2.0, please note that the MX configuration file formatF has changed. Old configuration files CANNOT be used with MX V2.3,H so you MUST reconfigure MX after this installation. Please read theE section in the MX Installation Guide on saving old configurations before proceeding.$!$ VMI$CALLBACK ASK MX_OK -9 "Do you want to continue with this installation" "" B$!'$ IF .NOT. MX_OK THEN EXIT VMI$_FAILURE$!$ VMI$CALLBACK SET PURGE ASK$!%$! Build the tables for menu choices.$!$ MX_OPT_NAMES = "?" +- ":SMTP interface support"+- ":Jnet interface support"+- ":UUCP interface support"+-( ":Site-provided interface support"+-) ":Mailing List/File Server support"+- ":Documentation"O$ MX_OPTS = "?:MX_DO_SMTP:MX_DO_JNET:MX_DO_UUCP:MX_DO_SITE:MX_DO_MLF:MX_DO_DOC" $ MX_I = 0$MX_INIT_LOOP:$ MX_I = MX_I + 1'$ MX_OPT = F$ELEMENT (MX_I,":",MX_OPTS)0$ IF MX_OPT .EQS. ":" THEN GOTO MX_END_INIT_LOOP$ 'MX_OPT = " "$ GOTO MX_INIT_LOOP$!$MX_END_INIT_LOOP:$!$MX_SELECT_MENU:$ TYPE SYS$INPUT:2 Optional Component SelectionB Select the optional MX components you wish to install from theC menu below. An asterisk appears next to the packages that haveB already been selected. You can remove a package from the listA by selecting it again. You may enter more than one selection+ by separating your choices with commas. $ MX_M = 0 $MX_SEL_LOOP:$ MX_M = MX_M + 1*$ MX_N = F$ELEMENT (MX_M,":",MX_OPT_NAMES)+$ IF MX_N .EQS. ":" THEN GOTO MX_SELECT_ASK%$ MX_T = F$ELEMENT (MX_M,":",MX_OPTS)9$ MX_SAY F$FAO (" !2UL. [!AS] !AS", MX_M, 'MX_T, MX_N)$ GOTO MX_SEL_LOOP$MX_SELECT_ASK: $ MX_SAY ""+$ MX_SAY F$FAO (" !2UL. Exit", MX_M) $ MX_SAY "" $ MX_SAY ""$!&$ VMI$CALLBACK ASK MX_CHOICE_INPUT -" " Your choice" "''MX_M'" $ MX_I = -1$MX_PARSE_LOOP:$ MX_I = MX_I + 14$ MX_CHOICE = F$ELEMENT (MX_I, ",", MX_CHOICE_INPUT)1$ IF MX_CHOICE .EQS. "," THEN GOTO MX_SELECT_MENU#$ MX_CHOICE = F$INTEGER (MX_CHOICE)-$ IF MX_CHOICE .EQ. MX_M THEN GOTO MX_CONFIRM.$ IF MX_CHOICE .LT. 1 .OR. MX_CHOICE .GT. MX_M$ THEN&$ VMI$CALLBACK MESSAGE E BADCHOICE -D "Choice ''MX_CHOICE' invalid; choices range from 1 to ''MX_M'."$ ELSE.$ MX_T = F$ELEMENT (MX_CHOICE, ":", MX_OPTS)$ IF 'MX_T .EQS. "*"$ THEN$ 'MX_T = " "$ ELSE$ 'MX_T = "*" $ ENDIF$ ENDIF$ GOTO MX_PARSE_LOOP$! $MX_CONFIRM: $ MX_SAY ""C$ MX_SAY " You have selected the following optional components:" $ MX_SAY "" $ MX_CNT = 0 $ MX_M = 0$MX_CONF_LOOP:$ MX_M = MX_M + 1*$ MX_N = F$ELEMENT (MX_M,":",MX_OPT_NAMES))$ IF MX_N .EQS. ":" THEN GOTO MX_CONF_ASK%$ MX_T = F$ELEMENT (MX_M,":",MX_OPTS)$ IF 'MX_T .EQS. "*"$ THEN$ MX_PRI = MX_M$ MX_SAY " ",MX_N$ MX_CNT = MX_CNT + 1$ ENDIF$ GOTO MX_CONF_LOOP$! $MX_CONF_ASK:/$ IF MX_CNT .EQ. 0 THEN MX_SAY " (None)" $ MX_SAY "" $ MX_SAY ""2$ VMI$CALLBACK ASK MX_OK "Is this correct" "YES" B)$ IF .NOT. MX_OK THEN GOTO MX_SELECT_MENU$!$$ MX_DEF_ROOT = F$TRNLNM ("MX_ROOT")G$ IF "''MX_D ո' MX023.Avhg [MX.KIT]KITINSTAL.COM;3V9EF_ROOT'" .EQS. "" THEN MX_DEF_ROOT = "SYS$SYSDEVICE:[MX.]"($ MX_DEF_ROOT = MX_DEF_ROOT - ".]" + "]"$!$ TYPE SYS$INPUT:G MX places most of its files in a private directory structure. ThisL directory structure can be located on any disk, but the disk must eitherK have disk quotas disabled or sufficient diskquota to hold all of the MX+ images, temporary files, and log files.$!L$ VMI$CALLBACK ASK MX_ROOT "Where should the MX top directory be located?" - "''MX_DEF_ROOT'"$ MX_ROOT = MX_ROOT - "]"C$ MX_TMP = F$PARSE (MX_ROOT+"]",,,,"NO_CONCEAL,SYNTAX_ONLY") - "]["3$ MX_INSTALL_ROOT = F$PARSE (MX_TMP,,,"DEVICE") + -0 F$PARSE (MX_TMP,,,"DIRECTORY") - "]" + ".]"@$ DEFINE MX_INSTALL_ROOT 'MX_INSTALL_ROOT'/TRANSLATION=CONCEALED8$ DEFINE MX_ROOT 'MX_INSTALL_ROOT'/TRANSLATION=CONCEALED$!1$ VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'] -/ "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W:E)"7$ MX_DIRECTORIES = "LOCAL/PROT=(S:RWE,O:RWE,G:RE,W);"+-/ "LOCAL.MLIST/PROT=(S:RWE,O:RWE,G:RE,W);"+-( "JNET/PROT=(S:RWE,O:RWE,G:RE,W);"+-( "SMTP/PROT=(S:RWE,O:RWE,G:RE,W);"+-) "EXE/PROT=(S:RWE,O:RWE,G:RE,W:E);"+-' "MLF/PROT=(S:RWE,O:RWE,G:RE,W);"+-, "FILESERV/PROT=(S:RWE,O:RWE,G:RE,W);"+-* "ROUTER/PROT=(S:RWE,O:RWE,G:RE,W);"+-( "UUCP/PROT=(S:RWE,O:RWE,G:RE,W);"+-( "SITE/PROT=(S:RWE,O:RWE,G:RE,W);"+-* "DOC/PROT=(S:RWE,O:RWE,G:RE,W:RE);"+-, "EXAMPLES/PROT=(S:RWE,O:RWE,G:RE,W:RE)" $ MX_I = -1 $MX_CD_LOOP:$ MX_I = MX_I + 10$ MX_TMP = F$ELEMENT (MX_I, ";", MX_DIRECTORIES).$ IF MX_TMP .EQS. ";" THEN GOTO MX_END_CD_LOOP5$ MX_TMPQ = F$ELEMENT (1, "/", MX_TMP)+"/OWNER=[1,4]"%$ MX_TMP = F$ELEMENT (0, "/", MX_TMP)'$ MX_TMP = MX_ROOT + "." + MX_TMP + "]";$ VMI$CALLBACK CREATE_DIRECTORY USER 'MX_TMP' "/''MX_TMPQ'"$ GOTO MX_CD_LOOP$MX_END_CD_LOOP:$!$ TYPE SYS$INPUT:I MX uses a file queue directory for storing mail messages. This queueK directory may be placed with the other MX directories, or may be placedL on a different disk. The disk on which the queue directory resides mustM also have quotas disabled or must have sufficient system quota to provide* for a backlog of undelivered messages.$$ MX_DEF_QDIR = F$TRNLNM ("FLQ_DIR")E$ IF "''MX_DEF_QDIR'" .EQS. "" THEN MX_DEF_QDIR = MX_ROOT + ".QUEUE]"$ VMI$CALLBACK ASK MX_FLQ_DIR -3 "Where would you like the MX message queue?" - "''MX_DEF_QDIR'"3$ VMI$CALLBACK CREATE_DIRECTORY USER 'MX_FLQ_DIR' -+ "/PROT=(S:RWE,O:RWE,G:RE,W)/OWNER=[1,4]"$!H$! Now make sure we get a proper DEFAULT_PROTECTION ACL on the directory$!1$ MX_qspec = F$PARSE (MX_FLQ_DIR,,,,"NO_CONCEAL")"$ IF MX_qspec .EQS. "" THEN EXIT 0)$ MX_qdev = F$PARSE (MX_qspec,,,"DEVICE"):$ MX_qdir = F$PARSE (MX_qspec,,,"DIRECTORY") - "][" - "><"$ MX_i = F$LENGTH (MX_qdir)$MX_Find_Dot_Loop:$ MX_i = MX_i - 1$ IF MX_i .GE. 0$ THENB$ IF F$EXTRACT (MX_i,1,MX_qdir) .EQS. "." THEN GOTO MX_Found_Dot$ GOTO MX_Find_Dot_Loop$ ENDIF%$ MX_fspec = MX_qdev + "[000000]" + -8 F$EXTRACT (1,F$LENGTH(MX_qdir)-2,MX_qdir) + ".DIR;1"$ GOTO MX_Perform_Check$MX_Found_Dot:B$ MX_fspec = MX_qdev + "[" + F$EXTRACT (1,MX_i-1,MX_qdir) + "]" +-H F$EXTRACT (MX_i+1,F$LENGTH(MX_qdir)-MX_i-2,MX_qdir) + ".DIR;1"$MX_Perform_Check:?$ SET ACL/ACL=(DEFAULT_PROTECTION,S:RWED,O:RWED,G,W) 'MX_fspec'$!$ TYPE SYS$INPUT:9 H O S T N A M E S E L E C T I O NI There are three host names you must designate for the "local" host or cluster.B o The MX cluster name is a 1-to-6 character name that uniquelyB identifies the system (for standalone systems) or MX clusterE (for VAXcluster systems). This name usually corresponds to the/ DECnet cluster alias or DECnet node name.K o The MX network node name is a 1-to-255 character name that identifiesF the "official" node name for E-mail purposes. This name usually6 corresponds to the Internet or BITNET node name.C o The "Reply-To" mail name is used by the MX/VMS MAIL interface? software to create return addresses. Usually this is the= same as the MX mail name, preceded by an at-sign ("@").> For systems that use another host as a gateway, this canA be a percent-hacked gateway address ("%localhost@gateway").= If you are running a VAXcluster environment, refer to theA Installation Guide for further information about MX clusters.$MX_HOST_NAMES:.$ MX_DEF_FLQ_NODE = F$TRNLNM ("FLQ_NODE_NAME")$ IF MX_DEF_FLQ_NODE .EQS. ""$ THEN;$ MX_DEF_FLQ_NODE = F$TRNLNM ("SYS$CLUSTER_NODE") - "::"'$ IF MX_DEF_FLQ_NODE .EQS. "" THEN -7$ MX_DEF_FLQ_NODE = F$TRNLNM ("SYS$NODE") - "::"$ ENDIF<$ VMI$CALLBACK ASK MX_FLQ_NODE "Enter the MX cluster name" - "''MX_DEF_FLQ_NODE'",$ MX_DEF_MX_NODE = F$TRNLNM ("MX_NODE_NAME")B$ VMI$CALLBACK ASK MX_NODE_NAME "Enter the MX network node name" - "''MX_DEF_MX_NODE'" SM2$ MX_DEF_VNODE = F$TRNLNM ("MX_VMSMAIL_LOCALHOST")A$ IF MX_DEF_VNODE .EQS. "" THEN MX_DEF_VNODE = "@" + MX_NODE_NAMEB$ VMI$CALLBACK ASK MX_VMSMAIL_NAME "Enter the ""Reply-To"" name" - "''MX_DEF_VNODE'" SM$! $ MX_SAY ""2$ MX_SAY " MX cluster name: ", MX_FLQ_NODE3$ MX_SAY " Network node name: ", MX_NODE_NAME8$ MX_SAY " ""Reply-To"" name: ", MX_VMSMAIL_NAME3$ VMI$CALLBACK ASK MX_OK "Is this correct" "YES" BD($ IF .NOT. MX_OK THEN GOTO MX_HOST_NAMES$!*$ MX_CLUSTER = F$GETSYI ("CLUSTER_MEMBER")$ IF MX_CLUSTER$ THEN$ TYPE SYS$INPUT:E This system is part of a VAXcluster. You may elect to distributeC some or all of the MX processes among the nodes in the cluster,B as long as all nodes are part of the same MX cluster. You mayF also have each process start on more than one node in the cluster,< to provide backup processing in case one node goes down.B When entering node names, do not include any punctuation. Use+ commas to separate multiple node names.G For more information about MX cluster support, see the Installation Guide.O$ VMI$CALLBACK ASK MX_ROUTER_QUE "Enter the node(s) that will run the Router"$!#$ VMI$CALLBACK ASK MX_LOCAL_QUE -A "Enter the node(s) that will run the Local delivery agent" - "''MX_ROUTER_QUE'"$ IF MX_DO_MLF .EQS. "*"$ THEN"$ VMI$CALLBACK ASK MX_MLF_QUE -O "Enter the node(s) that will run the Mailing list/File server agent" - "''MX_LOCAL_QUE'" $ ENDIF$!$ IF MX_DO_SMTP .EQS. "*"$ THEN$ TYPE SYS$INPUT:D The SMTP delivery agent and SMTP server must run on node(s) that? have one of the NETLIB-supported TCP/IP packages installed.#$ VMI$CALLBACK ASK MX_SMTP_QUE -B "Enter the node(s) that will run the SMTP delivery agent"$!+$ VMI$CALLBACK ASK MX_SMTP_SERVER_QUES -< "Enter the node(s) that will run the SMTP server" - "''MX_SMTP_QUE'" $ ENDIF$!$ IF MX_DO_JNET .EQS. "*"$ THEN$ TYPE SYS$INPUT:I The MX/Jnet Interface agent must be started on node(s) that run Jnet.#$ VMI$CALLBACK ASK MX_JNET_QUE -C "Enter the node(s) that will run the Jnet interface agent" $ ENDIF$!$ IF MX_DO_UUCP .EQS. "*"$ THEN$ TYPE SYS$INPUT:I The MX/UUCP interface must be started on node(s) that run DECUS UUCP.$!#$ VMI$CALLBACK ASK MX_UUCP_QUE -= "Enter the node(s) that will run the UUCP interface" $ ENDIF$ ENDIF$!$ IF MX_DO_SMTP .EQS. "*"$ THEN$ TYPE SYS$INPUT:5 NoB7 MX023.Avhg [MX.KIT]KITINSTAL.COM;3V9"+w installing NETLIB library for TCP/IP support."$ VMI$CALLBACK RESTORE_SAVESET B!$ MX_SAVE_PRODUCT = VMI$PRODUCT$ VMI$PRODUCT := NETLIB011$ @VMI$KWD:NETLIB_INSTALL!$ VMI$PRODUCT = MX_SAVE_PRODUCT$!$ TYPE SYS$INPUT:! NETLIB installation complete.$ ENDIF$!$ TYPE SYS$INPUT:? The installation will continue for another 5 to 30 minutes,< depending on your CPU type, distribution media, etc. No further input is required.( Now providing base images and files.$ IF MX_DO_MLF .EQS. "*"$ THENJ$ MX_SAY " Also including mailing list/file server images and files."$ ENDIF $ MX_SAY ""$! $ VMI$CALLBACK RESTORE_SAVESET C$!$ MX_EXE = MX_ROOT + ".EXE]"$!L$ MX_IMAGES = "FLQ_SHR/SHARE,MX_SHR/SHARE,MX_MAILSHR/SHARE,MCP,MX_ROUTER,"+-. "MX_LOCAL,MAILQUEUE,FLQU,MLFAKE"?$ IF MX_DO_MLF .EQS. "*" THEN MX_IMAGES = MX_IMAGES + ",MX_MLF"S$ MX_TRACES = "NOTRACE,NOTRACE,NOTRACE,NOTRACE,TRACE,TRACE,NOTRACE,NOTRACE,NOTRACE">$ IF MX_DO_MLF .EQS. "*" THEN MX_TRACES = MX_TRACES + ",TRACE" $ MX_I = -1$MX_BASE_LOOP:$ MX_I = MX_I + 1-$ MX_IMAGE = F$ELEMENT (MX_I, ",", MX_IMAGES)2$ IF MX_IMAGE .EQS. "," THEN GOTO MX_END_BASE_LOOP($ MX_IMGQ = F$ELEMENT (1, "/", MX_IMAGE)+$ IF MX_IMGQ .EQS. "/" THEN MX_IMGQ = "EXE")$ MX_IMAGE = F$ELEMENT (0, "/", MX_IMAGE)3$ MX_TRACE = "/" + F$ELEMENT (MX_I, ",", MX_TRACES)?$ VMI$CALLBACK MESSAGE I LINKING "Linking image ''MX_IMAGE'..."3$ LINK/'MX_IMGQ'=VMI$KWD:'MX_IMAGE'.EXE'MX_TRACE' -= VMI$KWD:'MX_IMAGE'.OPT/OPT,VMI$KWD:'MX_IMAGE'.VERSION/OPT$!L$ IF MX_IMAGE .NES. "MLFAKE" THEN SET PROTECTION=W:RE VMI$KWD:'MX_IMAGE'.EXE$!=$ VMI$CALLBACK PROVIDE_IMAGE MX_IMGOK 'MX_IMAGE'.EXE 'MX_EXE'$ GOTO MX_BASE_LOOP$MX_END_BASE_LOOP:@$ VMI$CALLBACK PROVIDE_FILE MX_TMP SYSTEM_QUEUE.FDL 'MX_FLQ_DIR'<$ IF F$SEARCH ("''MX_FLQ_DIR'SYSTEM_QUEUE.FLQ_CTL") .EQS. ""$ THEN@$ CREATE/FDL=VMI$KWD:SYSTEM_QUEUE VMI$KWD:SYSTEM_QUEUE.FLQ_CTLF$ VMI$CALLBACK PROVIDE_FILE MX_TMP SYSTEM_QUEUE.FLQ_CTL 'MX_FLQ_DIR'$ ELSE%$ VMI$CALLBACK MESSAGE I NONEWQUE -n7 "Your existing file queue will not be superseded."l$ ENDIF4$ VMI$CALLBACK PROVIDE_FILE "" MX_FILE_LIST.TXT "" T$ IF MX_DO_MLF .EQS. "*"$ THEN$$ MX_1 = MX_ROOT + ".LOCAL.MLIST]"@$ IF F$SEARCH ("''MX_1'MLIST_ADD_MESSAGE.TXT") .EQS. "" THEN -B VMI$CALLBACK PROVIDE_FILE MX_TMP MLIST_ADD_MESSAGE.TXT 'MX_1'C$ IF F$SEARCH ("''MX_1'MLIST_REMOVE_MESSAGE.TXT") .EQS. "" THEN -SE VMI$CALLBACK PROVIDE_FILE MX_TMP MLIST_REMOVE"_MESSAGE.TXT 'MX_1'MD$ IF F$SEARCH ("''MX_1'MLIST_FORWARD_MESSAGE.TXT") .EQS. "" THEN -F VMI$CALLBACK PROVIDE_FILE MX_TMP MLIST_FORWARD_MESSAGE.TXT 'MX_1'I$ IF F$SEARCH ("''MX_ROOT'.FILESERV]FILESERV_HELP.TXT") .EQS. "" THEN -aK VMI$CALLBACK PROVIDE_FILE MX_TMP FILESERV_HELP.TXT 'MX_ROOT'.FILESERV]V$ ENDIF $!$ CREATE VMI$KWD:MX_STARTUP.COM ,$ OPEN/APPEND MX_STUP VMI$KWD:MX_STARTUP.COM$ MX_W = "WRITE MX_STUP"&$ MX_W "$! SYS$STARTUP:MX_STARTUP.COM"D$ MX_W "$! Startup command procedure for Message Exchange software.">$ MX_W "$! Copyright 1990 Rensselaer Polytechnic Institute." $ MX_W "$!"n$ IF MX_CLUSTER $ THEN;$ MX_W "$ NODE = "","" + F$GETSYI (""NODENAME"") + "","""e5$ MX_W "$ ROUTER_NODES = "",''MX_ROUTER_QUE',""" 4$ MX_W "$ LOCAL_NODES = "",''MX_LOCAL_QUE',"""2$ MX_W "$ MLF_NODES = "",''MX_MLF_QUE',"""3$ MX_W "$ SMTP_NODES = "",''MX_SMTP_QUE',"""C;$ MX_W "$ SMTP_SRV_NODES = "",''MX_SMTP_SERVER_QUES',"""A3$ MX_W "$ JNET_NODES = "",''MX_JNET_QUE',"""T3$ MX_W "$ UUCP_NODES = "",''MX_UUCP_QUE',""" $ MX_W "$!"X$ ENDIFNG$ MX_W "$ IF ""'","'","P1'"" .EQS. ""JNET"" THEN GOTO START_JNET_INTFC". $ MX_W "$!"S$ MX_W "$ SET NOON"T=$ MX_W "$ IF F$SEARCH (""MX_STARTUP.LOG"") .NES. """" THEN -"E1$ MX_W " PURGE/KEEP=5 MX_STARTUP.LOG"!$ MX_W "$ SET ON"S!$ MX_W "$ DEFINE := DEFINE/NOLOG"X $ MX_W "$!" @$ MX_W "$ DEFINE/SYSTEM/EXEC FLQ_DIR ''MX_FLQ_DIR'"A$ MX_W "$ DEFINE/SYSTEM/EXEC FLQ_NODE_NAME ''MX_FLQ_NODE'"LF$ MX_W "$ DEFINE/SYSTEM/EXEC MX_NODE_NAME ""''MX_NODE_NAME'"""I$ MX_W "$ DEFINE/SYSTEM/EXEC MX_VMSMAIL_LOCALHOST ""''MX_VMSMAIL_NAME'"""T$!$ IF MX_DO_SMTP .EQS. "*"V$ THEN<$ MX_W "$ IF F$TRNLNM (""NETLIB_SHR"") .EQS. """" THEN "+-' "@SYS$STARTUP:NETLIB_STARTUP"8$ MX_W "$ DEFINE/SYSTEM/EXEC MX_SITE_DOM_EXPANSION ",-# "MX_EXE:DOMAIN_EXPANSION" $ MX_W "$!"s$ ENDIFi$! $ MX_W "$!"E4$ MX_W "$ @''MX_ROOT'.EXE]MX_START LOGICALS,MAILSHR"<$ MX_W "$ IF ""'","'","P1'"" .EQS. ""LOGICALS"" THEN EXIT 1" $ MX_W "$!"$!$ IF .NOT. MX_CLUSTERT$ THEN$ MX_TMP = "ROUTER,LOCAL"LF$ IF MX_DO_SMTP .EQS. "*" THEN MX_TMP = MX_TMP + ",SMTP,SMTP_SERVER":$ IF MX_DO_UUCP .EQS. "*" THEN MX_TMP = MX_TMP + ",UUCP"9$ IF MX_DO_MLF .EQS. "*" THEN MX_TMP = MX_TMP + ",MLF" '$ MX_W "$ @MX_EXE:MX_START ''MX_TMP'"a$ ELSE$ MX_W "$ PARAM = """""9Q$ MX_W "$ IF F$LOCATE (NODE, ROUTER_NODES) .LT. F$LENGTH (ROUTER_NODES) THEN -"t.$ MX_W " PARAM = PARAM + "",ROUTER"""O$ MX_W "$ IF F$LOCATE (NODE, LOCAL_NODES) .LT. F$LENGTH (LOCAL_NODES) THEN -" -$ MX_W " PARAM = PARAM + "",LOCAL"""oK$ MX_W "$ IF F$LOCATE (NODE, MLF_NODES) .LT. F$LENGTH (MLF_NODES) THEN -".+$ MX_W " PARAM = PARAM + "",MLF""" $ ENDIF $!($! Begin the SMTP support installation.$!$ IF MX_DO_SMTP .EQS. "*"i$ THEN$ TYPE SYS$INPUT: 4 Now providing the SMTP support files and images."$ VMI$CALLBACK RESTORE_SAVESET D$!<$ MX_IMAGES = "MX_SMTP,SMTP_SERVER,DOMAIN_EXPANSION/SHARE"%$ MX_TRACES = "TRACE,TRACE,NOTRACE"t $ MX_I = -1 $MX_SMTP_LOOP:$ MX_I = MX_I + 1g/$ MX_IMAGE = F$ELEMENT (MX_I, ",", MX_IMAGES)!4$ IF MX_IMAGE .EQS. "," THEN GOTO MX_END_SMTP_LOOP*$ MX_IMGQ = F$ELEMENT (1, "/", MX_IMAGE)-$ IF MX_IMGQ .EQS. "/" THEN MX_IMGQ = "EXE"$+$ MX_IMAGE = F$ELEMENT (0, "/", MX_IMAGE)e5$ MX_TRACE = "/" + F$ELEMENT (MX_I, ",", MX_TRACES) A$ VMI$CALLBACK MESSAGE I LINKING "Linking image ''MX_IMAGE'..." 4$ LINK/'MX_IMGQ'=VMI$KWD:'MX_IMAGE'.EXE'MX_TRACE'-> VMI$KWD:'MX_IMAGE'.OPT/OPT,VMI$KWD:'MX_IMAGE'.VERSION/OPT.$ SET PROTECTION=W:RE VMI$KWD:'MX_IMAGE'.EXE?$ VMI$CALLBACK PROVIDE_IMAGE MX_IMGOK 'MX_IMAGE'.EXE 'MX_EXE'$ GOTO MX_SMTP_LOOP=$MX_END_SMTP_LOOP:$!$ IF MX_CLUSTERM$ THENN$ MX_W "$ IF F$LOCATE (NODE, SMTP_NODES) .LT. F$LENGTH (SMTP_NODES) THEN -"-$ MX_W " PARAM = PARAM + "",SMTP"""TV$ MX_W "$ IF F$LOCATE (NODE, SMTP_SRV_NODES) .LT. F$LENGTH (SMTP_SRV_NODES) THEN -"4$ MX_W " PARAM = PARAM + "",SMTP_SERVER""" $ ENDIF $ ENDIFl$!$ IF MX_DO_UUCP .EQS. "*"o$ THEN$ TYPE SYS$INPUT: 4 Now providing the UUCP support files and images."$ VMI$CALLBACK RESTORE_SAVESET E$!"$ MX_IMAGES = "MX_UUCP,MX_RMAIL"$ MX_TRACES = "TRACE,TRACE"t $ MX_I = -1 $MX_UUCP_LOOP:$ MX_I = MX_I + 1_/$ MX_IMAGE = F$ELEMENT (MX_I, ",", MX_IMAGES))4$ IF MX_IMAGE .EQS. "," THEN GOTO MX_END_UUCP_LOOP*$ MX_IMGQ = F$ELEMENT (1, "/", MX_IMAGE)-$ IF MX_IMGQ .EQS. "/" THEN MX_IMGQ = "EXE"+$ MX_IMAGE = F$ELEMENT (0, "/", MX_IMAGE)S5$ MX_TRACE = "/" + F$ELEMENT (MX_I, ",", MX_TRACES) A$ VMI$CALLBACK MESSAGE I LINKING "Linking image ''MX_IMAGE'..."-5$ LINK/'MX_IMGQ'=VMI$KWD:'MX_IMAGE'.EXE'MX_TRACE' -_> VMI$KWD:'MX_IMAGE'.OPT/OPT,VMI$KWD:'MX_IMAGE'.VERSION/OPT+$ SET PROTECTION=W VMI$KWD:'MX_IMAGE'.EXE"?$ VMI$CALLBACK PROVIDE_IMAGE MX_IMGOK 'MX_IMAGE'.EXE 'MX_EXE'$ GOTO MX_UUCP_LOOPX$MX_END_UUCP_LOOP:9$ VMI$CALLBACKYl} MX023.Avhg [MX.KIT]KITINSTAL.COM;3V9', PROVIDE_FILE MX_TMP MX_UUCP.COM 'MX_EXE'N$ IF MX_CLUSTERM$ THENN$ MX_W "$ IF F$LOCATE (NODE, UUCP_NODES) .LT. F$LENGTH (UUCP_NODES) THEN -"-$ MX_W " PARAM = PARAM + "",UUCP""" $ ENDIF $ TYPE SYS$INPUTG Don't forget to modify the file UUCP_BIN:UUXQT_DCL.COM as describedID in the installation guide, to supply the hook needed to transfer mail from UUCP to MX.lD Also remember that DECUS UUCP should be started (or at least the+ logicals defined) before MX is started.E$ ENDIFM$!$ IF MX_CLUSTER $ THEN,$ MX_W "$ IF PARAM .EQS. """" THEN EXIT 1",$ MX_W "$ PARAM = F$EXTRACT (1,999,PARAM)".$ MX_W "$ @MX_EXE:MX_START ","'","PARAM","'"$ ENDIFN$!$ IF MX_DO_SITE .EQS. "*"N$ THEN$ TYPE SYS$INPUT:!C Now providing the site-specific agent support files and images.X"$ VMI$CALLBACK RESTORE_SAVESET F$!$$ MX_IMAGES = "MX_SITE,MX_SITE_IN"$ MX_TRACES = "TRACE,TRACE"T $ MX_I = -1X$MX_SITE_LOOP:$ MX_I = MX_I + 1F/$ MX_IMAGE = F$ELEMENT (MX_I, ",", MX_IMAGES)S4$ IF MX_IMAGE .EQS. "," THEN GOTO MX_END_SITE_LOOP*$ MX_IMGQ = F$ELEMENT (1, "/", MX_IMAGE)-$ IF MX_IMGQ .EQS. "/" THEN MX_IMGQ = "EXE"r+$ MX_IMAGE = F$ELEMENT (0, "/", MX_IMAGE)e5$ MX_TRACE = "/" + F$ELEMENT (MX_I, ",", MX_TRACES)eA$ VMI$CALLBACK MESSAGE I LINKING "Linking image ''MX_IMAGE'..."5$ LINK/'MX_IMGQ'=VMI$KWD:'MX_IMAGE'.EXE'MX_TRACE' - > VMI$KWD:'MX_IMAGE'.OPT/OPT,VMI$KWD:'MX_IMAGE'.VERSION/OPT+$ SET PROTECTION=W VMI$KWD:'MX_IMAGE'.EXE ?$ VMI$CALLBACK PROVIDE_IMAGE MX_IMGOK 'MX_IMAGE'.EXE 'MX_EXE'S$ GOTO MX_SITE_LOOP $MX_END_SITE_LOOP:9$ VMI$CALLBACK PROVIDE_FILE MX_TMP MX_SITE.COM 'MX_EXE'E $ MX_W "$!" B$ MX_W "$! Site-specific agent: edit and uncomment to activate." $ MX_W "$!"$ MX_W "$! @MX_EXE:MX_START SITE $ MX_W "$!$ ENDIFA$!C$! N.B.: Jnet support installation MUST be the last thing modifiesE$! MX_STARTUP.COM.R$!$ IF MX_DO_JNET .EQS. "*":$ THEN$ TYPE SYS$INPUT:.4 Now providing the Jnet support files and images."$ VMI$CALLBACK RESTORE_SAVESET G$!*$ MX_IMAGES = "MX_JNET,MX_MFSDISP/SHARE"$ MX_TRACES = "TRACE,NOTRACE"/ $ MX_I = -1W$MX_JNET_LOOP:$ MX_I = MX_I + 1S/$ MX_IMAGE = F$ELEMENT (MX_I, ",", MX_IMAGES)O4$ IF MX_IMAGE .EQS. "," THEN GOTO MX_END_JNET_LOOP*$ MX_IMGQ = F$ELEMENT (1, "/", MX_IMAGE)-$ IF MX_IMGQ .EQS. "/" THEN MX_IMGQ = "EXE"+$ MX_IMAGE = F$ELEMENT (0, "/", MX_IMAGE)5$ MX_TRACE = "/" + F$ELEMENT (MX_I, ",", MX_TRACES)PA$ VMI$CALLBACK MESSAGE I LINKING "Linking image ''MX_IMAGE'..."N5$ LINK/'MX_IMGQ'=VMI$KWD:'MX_IMAGE'.EXE'MX_TRACE' -_> VMI$KWD:'MX_IMAGE'.OPT/OPT,VMI$KWD:'MX_IMAGE'.VERSION/OPT.$ SET PROTECTION=W:RE VMI$KWD:'MX_IMAGE'.EXE?$ VMI$CALLBACK PROVIDE_IMAGE MX_IMGOK 'MX_IMAGE'.EXE 'MX_EXE'D$ GOTO MX_JNET_LOOP:$MX_END_JNET_LOOP:9$ VMI$CALLBACK PROVIDE_FILE MX_TMP MX_JNET.COM 'MX_EXE' $!$ TYPE SYS$INPUT: I Remember that Jnet must be started AFTER MX is started. To start the G MX/Jnet Interface, include the following commands in the JANSITE ort+ JANSITECOMMON procedures for your node:s7 $ DEFINE/SYS/EXEC JAN_MFSDISP MX_EXE:MX_MFSDISPd8 $ SUBMIT/NOPRINT/QUEUE=node_queue/USER=maileracct -2 SYS$STARTUP:MX_STARTUP/PARAM=JNETH where "node_queue" is the name of a batch queue that executes on theG node where you are running Jnet and "maileracct" is the username ofCK your mailer account. For more information, see the Installation Guide.,$!$ MX_W "$ EXIT 1"w $ MX_W "$!"D$ MX_W "$START_JNET_INTFC:"r$ IF MX_CLUSTERp$ THENN$ MX_W "$ IF F$LOCATE (NODE, JNET_NODES) .LT. F$LENGTH (JNET_NODES) THEN -")$ MX_W " @MX_EXE:MX_START JNET" $ ELSE#$ MX_W "$ @MX_EXE:MX_START JNET"" $ ENDIFF$ MX_W "$ EXIT 1"M$!$ ELSE$ MX_W "$ EXIT 1" $ MX_W "$!"G$ MX_W "$START_JNET_INTFC:"($ MX_W "$ EXIT 1" $ ENDIFG$!$ CLOSE MX_STUP M$ VMI$CALLBACK PROVIDE_FILE MX_STUPFILE MX_STARTUP.COM VMI$ROOT:[SYS$STARTUP]$$!$ IF MX_DO_DOC .EQS. "*"$ THEN$ TYPE SYS$INPUT:M> Now providing MX documentation to directory MX_ROOT:[DOC]."$ VMI$CALLBACK RESTORE_SAVESET H5$ VMI$CALLBACK PROVIDE_FILE "" MX_DOC_LIST.TXT "" Td$ ELSE$ TYPE SYS$INPUT:h: Skipping the installation of the MX documentation set.< If you wish to view the MX documentation, use the BACKUP4 utility to copy the files from save set MX022.H.$ ENDIFy$!$ TYPE SYS$INPUT' MX installation procedure complete. E Be sure to follow the post-installation instructions described iniC the MX Installation Guide. This will minimally include editingX6 SYSTARTUP_V5.COM to include the following command:( $ @SYS$STARTUP:MX_STARTUP$ WAIT 00:00:05 $ TYPE SYS$INPUT:eC If this is a new installation of MX, or you need to reconfigurenC MX before starting it up, you should ensure that all MX logicaloE names are defined and shareable images are installed by executing 1 $ @SYS$STARTUP:MX_STARTUP LOGICALS I immediately after VMSINSTAL completes. If this is a new installationeD of MX, use the MXCONFIG procedure to build a base configuration:! $ @MX_DIR:MXCONFIGa$ WAIT 00:00:05e$ TYPE SYS$INPUT:lI PLEASE NOTE: If you are upgrading from a version of MX prior to V2.2,tF it is _strongly_ recommended that you use the new MXCONFIG commandG procedure shipped with this kit to generate a new MCP configuration C7 command file. Some of the rewrite rules for gateways have been ) changed to improve their reliability.F$!$ EXIT VMI$_SUCCESS$!$ EXIT 1FLQ_NODE = F$TRNLNM ("SYS$NODE") - "::"$ ENDIF<$ VMI$CALLBACK ASK MX_FLQ_NODE "Enter the MX cluster name" - "''MX_DEF_FLQ_NODE'",$ MX_DEF_MX_NODE = F$TRNLNM ("MX_NODE_NAME")B$ VMI$CALLBACK ASK MX_NODE_NAME "Enter the MX network node name" - "''MX_DEF_MX_NODE'" SM2$ MX_DEF_VNODE = F$TRNLNM ("MX_VMSMAIL_LOCALHOST")A$ IF MX_DEF_VNODE  MX023.Athg [MX.KIT]MX023.RELEASE_NOTES;1T?EK*[MX.KIT]MX023.RELEASE_NOTES;1+,th.E/> 4TECD?-g 0123KPWOD56)#7e$89G>HJ ( Message Exchange Release Notes May, 1991: This file contains the release notes for Message3 Exchange V2.3. It describes any features,= restrictions, changes, or additions made to MX that2 are not documented in the MX manual set.A Revision/Update Information: This is a revised manual.9 Operating System and Version: VMS V5.0 or later= Software Version: Message Exchange V2.3( Engineering Computing Services* Rensselaer Polytechnic Institute Troy, New York  " ________________________ 01 May 1991? The information in this document is subject to change9 without notice and should not be construed as a9 commitment by Rensselaer Polytechnic Institute.= Rensselaer assumes no responsibility for any errors+ that may appear in this document. __________: Copyright 1991 Rensselaer Polytechnic Institute; The following are trademarks of Digital Equipment Corporation:9 DEC ULTRIX VAX9 VAXcluster VAXstation VMS8 Jnet is a trademark of Joiner Associates, Inc.? MultiNet is a trademark of SRI International and TGV, Inc.  A _______________________________________________________ ContentsA _______________________________________________________A CHAPTER 1 INSTALLATION NOTES 1-1A _________________________________________________A 1.1 REPACKAGED UPDATE 1-1A _________________________________________________A 1.2 MULTINET LOGICALS MUST BE DEFINED 1-1A _________________________________________________A 1.3 RECONFIGURING AFTER INSTALLATION 1-2A _________________________________________________A 1.4 USING BOOKREADER DOCUMENTATION 1-2A _______________________________________________________A CHAPTER 2 NEW FEATURES AND CHANGES 2-1A _________________________________________________A 2.1 MULTINET SUPPORT 2-1A _________________________________________________A 2.2 MX VERSION ADDED TO RECEIVED LINES 2-1A _________________________________________________A 2.3 ADDRESS HANDLING IMPROVEMENTS 2-2A _________________________________________________A 2.4 EMPTY CC AND BCC HEADERS 2-2A _________________________________________________A 2.5 MAILING LIST CHANGES 2-2A iii   ContentsA _________________________________________________A 2.6 LOCAL DELIVERY CHANGES 2-3A _________________________________________________A 2.7 JNET INTERFACE CHANGES 2-3A _________________________________________________A 2.8 DOCUMENTATION CHANGES 2-4A _________________________________________________A 2.9 ACCOUNTING CHANGES 2-4A _________________________________________________A 2.10 DEBUGGING CODE IMPROVEMENTS 2-4A _________________________________________________A 2.11 UUCP V1.3 SUPPORT 2-5A _______________________________________________________A CHAPTER 3 NEW FEATURES [V2.2-1] 3-1A _________________________________________________A 3.1 MULTIPLE DELIVERY AGENTS 3-1A _________________________________________________A 3.2 DOMAIN NAME LOOKUPS MOVED 3-1A _________________________________________________A 3.3 SHUT  DOWN SUPPORT FOR SMTP SERVER 3-1A _________________________________________________A 3.4 NEW SMTP ROUTER OPTION 3-2 iv  A ContentsA _______________________________________________________A CHAPTER 4 BUG FIXES [V2.2] 4-1A _______________________________________________________A CHAPTER 5 BUG FIXES [V2.2-2] 5-1A _______________________________________________________A CHAPTER 6 KNOWN BUGS AND RESTRICTIONS 6-1A _________________________________________________A 6.1 SMTP DNS RETRIES 6-1A _________________________________________________A 6.2 DECWINDOWS MAIL RESTRICTIONS 6-1A _________________________________________________A 6.3 VMS MAIL BUGS 6-1A _________________________________________________A 6.4 POSSIBLE FORWARDING PROBLEMS 6-2A _________________________________________________A 6.5 REMOTE FORWARDING PROBLEMS 6-2A _________________________________________________A 6.6 BYPASS NEEDED FOR UUCP DELIVERY 6-2A _______________________________________________________A CHAPTER 7 PROBLEM REPORTS 7-1A v  A _______________________________________________________ 1 Installation Notes? This chapter contains items of interest pertaining to! the installation of MX.L __________________________________________________________________ 1.1 Repackaged Update; MX V2.3 is a remastered packaging of MX V2.2, the< V2.2-2 update, plus NETLIB V1.1. It was repackaged? in order to simplify the installation process for new installations.? There are no new features or bug fixes in V2.3 beyond? those in MX V2.2-2. Refer to the NETLIB release notes9 file for information on the differences between= the V1.1 release and the V1.0 p MX023.Athg [MX.KIT]MX023.RELEASE_NOTES;1T?EArelease packaged with? previous releases of MX. The release notes are placed7 in the file SYS$HELP:NETLIB011.RELEASE_NOTES.< The documentation packaged MX V2.3 is identical to? that for V2.2, with the addition of BOOKREADER-format< versions of the documents. PLEASE READ THE RELEASE; NOTES, which describe the differences between the? V2.2 release that the documentation describes and the current release.L __________________________________________________________________+ 1.2 MultiNet Logicals Must Be Defined@ If you are installing support for MultiNet TCP/IP, the@ logical names pointing to MultiNet directories must be( defined before you install MX.A 1-1   Installation NotesL __________________________________________________________________* 1.3 Reconfiguring After Installation> If you are not currently running MX V2.0-1 or later,: you MUST save your MX configuration to a command; file prior to installation of MX V2.3 and restore? the configuration database from the command file with@ MCP after installation. See the Installation Guide for? instructions on saving and restoring MX configuration information.: It is also strongly recommended that you run the= MXCONFIG command procedure after upgrading from any? previous version of MX, in order to take advantage of@ some improvements in the rewrite rules for gateways to other networks.L __________________________________________________________________( 1.4 Using BookReader Documentation< If you elect to install the MX documentation, this: kit places files in the directory MX_ROOT:[DOC],> including files suitable for use with the DECwindows? BookReader application. To use BookReader to read the7 MX documentation, use the following commands:. $DEFINE DECW$BOOK MX_ROOT:[DOC]. $RUN SYS$SYSTEM:DECW$BOOKREADER? You can also integrate the MX documentation into your> system-wide DECW$BOOK directory with these commands:" $DEASSIGN DECW$BOOKT $COPY MX_ROOT:[DOC]MX.DECW$BOOKSHELF,*.DECW$BOOK DECW$BOOK:/PROT=W:RE< $APPEND MX_ROOT:[DOC]LIBRARY.DECW$BOOKSHELF -5 _$ DECW$BOOK:LIBRARY.DECW$BOOKSHELF 1-2  A _______________________________________________________" 2 New Features and Changes; The following new features and modifications were added in MX V2.2:L __________________________________________________________________ 2.1 MultiNet Support> The SMTP interface now supports TGV MultiNet (V2.2).> The entire TCP/IP interface has been reworked into a> new shareable library (called NETLIB) to make adding3 support for other TCP/IP packages easier.< Support for the SMTP% and WINS% prefixes have been@ added to MX_MAILSHR. To enable them, add the following' lines to your system startup:A $ DEFINE/SYSTEM/EXEC MAIL$PROTOCOL_SMTP MX_MAILSHRA $ DEFINE/SYSTEM/EXEC MAIL$PROTOCOL_WINS MX_MAILSHR> As of this writing, NETLIB also includes support for> DEC VMS/ULTRIX Connection V1.2 and later and CMU-Tek TCP/IP V6.4 and later.L __________________________________________________________________, 2.2 MX Version Added to Received Lines; A comment indicating the current version of MX is< now placed in all Received lines added to messages= processed by MX, to aid in debugging mail problems.? In addition, MX_MAILSHR now adds a Received line when; a message is entered in the queue, indicating the3 version of MX and the queue entry number.A 2-1  " New Features and ChangesL __________________________________________________________________' 2.3 Address Handling Improvements? Address handling in MX has been improved overall. For< example, MX_MAILSHR now generates addresses of the form:. "Personal Name"  instead of, user@host (Personal Name)? when a user has a personal name set in VMS Mail. Some> mailers had problems with the latter format when the4 personal name included special characters.> In addition, personal names attached to addresses on? messages passing through the Jnet and UUCP interfaces1 are retained in more cases than before.L __________________________________________________________________" 2.4 Empty CC and BCC Headers; Previously, CC and BCC header lines containing no> addresses were flagged as invalid by MX. While empty; CC lines are technically illegal according to RFC; 822, enough systems generate them to warrant this1 modification, which is mostly harmless.L __________________________________________________________________ 2.5 Mailing List Changes< Mailing list messages that used to be sent with an? origin of are now sent with an> origin matching the /ERRORS_TO value in the MCP list< definition. This was done to improve compatibility? with non-Internet mail systems (most notably BITNET).? If your mailing list definitions previously specified< a real user as the /ERRORS_TO destination, you may: wish to change them to specify an alias instead. 2-2  A New Features and Changes< Mailing list messages that used to be sent with an= origin of are now sent with; an origin of . This, too, was done; to improve BITNET compatibility. In addition, any> message sent to LISTSERV@host that cannot be handled? by the mailing list processor is now forwarded to the= addresses named in the DEFINE SYSTEM_USERS command.; Previously, such messages were simply returned to sender.= A new variable, {list-owner}, has been added to the< mailing list processor for use in add, remove, and; forward messages. The variable is replaced by the@ address of the owner of the mailing list (or the first1 address, if there are multiple owners).L __________________________________________________________________ 2.6 Local Delivery Changes< You can now control the inclusion and placement of@ RFC822 header lines on locally-delivered messages with> the /HEADERS qualifier on the SET LOCAL command. See7 the management guide for further information.; The local delivery agent now includes support for? generating accounting information. See the management( guide for further information.L ______________________________v MX023.Athg [MX.KIT]MX023.RELEASE_NOTES;1T?E8____________________________________ 2.7 Jnet Interface Changes: The SET JNET/NOPERCENT_HACK setting now controls< percent-hacking on both outgoing and incoming Jnet> mail. Previously, it controlled percent-hacking only on incoming mail.: You can now control whether BSMTP reply messages9 get sent with the SET JNET/BSMTP_REPLY command.? Previously, BSMTP replies were sent for each message.@ The new default is to disable BSMTP replies, to reduce? unnecessary network traffic. Most, if not all, BITNET( mailers discard BSMTP replies.A 2-3  " New Features and ChangesL __________________________________________________________________ 2.8 Documentation Changes: Documentation on the SITE mail interface and the; address rewriting interfaces has been written and? is now included in the distribution kit. In addition,? the installation guide and management guide have been; revised to reflect changes in this version of MX.@ Installation of the documentation is now optional. The= PostScript and ASCII text files for the four guides> are now provided in save set H, rather than save set B.L __________________________________________________________________ 2.9 Accounting Changes7 The Local, Jnet, and SMTP delivery agents cans: all generate accounting information. By default,? accounting is disabled. You can enable the generation 8 of accounting information with the /ACCOUNTING< qualifier on the SET LOCAL, SET JNET, and SET SMTP! commands, respectively.n@ Note: Previously, accounting information was generated= automatically by the Jnet and SMTP delivery agents.M: You must now enable accounting exp"licitly; it is disabled by default.L __________________________________________________________________% 2.10 Debugging Code Improvements? Debug/trace support has been added to the FLQ cleanup_8 code in MX_ROUTER, to help trace queue cleanup> problems. To enable it, define the following logical name:o0 $ DEFINE/SYSTEM MX_FLQ_DEBUG TRUE: The trace goes to the file MX_ROUTER_DIR:MX_FLQ_; LOG.LOG, by default. If that file already exists,a+ trace records are appended to it. 2-4h 1 A New Features and Changesr; All trace records in all debug logs now include a  date/time stamp.L __________________________________________________________________ 2.11 UUCP V1.3 SupportJ= Support was added in MX V2.1-3 for DECUS UUCP V1.3.I? UUCP V1.3 requires that all messages entered into the > UUCP mail system reside in the UUCP_SPOOL directory.; The MX_UUCP delivery agent has been changed to do_< this, which affects all sites running MX and UUCP.? The MX_UUCP delivery agent must now have write access_? to the UUCP_SPOOL directory in order to work with anyA version of DECUS UUCP.A 2-5U B EA ________________________________________________________ 3 New Features [V2.2-1]F= The following new features were added in MX V2.2-1._L __________________________________________________________________" 3.1 Multiple Delivery Agents8 In a VAXcluster environment, all MX processing? agents now operate simultaneously, providing not only? redundancy in case of node failure, but also improved_@ throughput. Previously, only one processing agent of a> given type could be active at a time, while the rest= would wait and take over in case of a node failure.D> MX is still restricted to having just one processing: agent of a given type per node. In addition, the8 mailing list/file server agent retains the old behaviour.L __________________________________________________________________# 3.2 Domain Name Lookups Moved_? Expansion of domain names through the use of MX_SITE_ > DOM_EXPANSION is now performed by the Router process; for messages entered using VMS Mail. In V2.2, MX_@ MAILSHR called the domain expander directly, sometimes; resulting in lengthy pauses during message entry.IL __________________________________________________________________* 3.3 SHUTDOWN Support for SMTP Server< Support has been added to the SMTP server to allow> it to received shutdown signals from an MCP SHUTDOWN? command. The MCP command SHUTDOWN SMTP now shuts down ; both the SMTP delivery agent and the SMTP server.A 3-1   New Features [V2.2-1]_L __________________________________________________________________ 3.4 New SMTP Router Option= The default router for SMTP was not a viable optionU? for some sites, so a new logical name has been added:_7 $DEFINE/SYSTEM MX_SMTP_ROUTER "nodename" < Defining this logical will cause the SMTP delivery; agent to send ALL messages to the specified node,9 regardless of the actual SMTP envelope address. 3-2_  A _______________________________________________________  4 Bug Fixes [V2.2]@ MX V2.2 incorporated the following bug fixes and minor! improvements over V2.1: ? o The MX RR lookup code now handles domain suffixes. ; o The NETLIB installation kit now warns you when? the SYSGEN parameter MAXBUF is set to at least the ? required minimum 2,300 when installing support for_ CMU-Tek TCP/IP.8 o CMS NOTE address handling has been improved: slightly, to fix problems with NOTE addresses: including personal names or other non-address information. ? o Some attempts have been made to reduce the dynamic_= memory (such as dynamic string space) used by MX  processes. > o MX_MAILSHR now signals errors it gets when trying> to access the message queue or open a queue entry> text file. Previously, MX_MAILSHR simply returned= error status codes to VMS Mail for these errors, 0 which VMS Mail would simply ignore.; o Previously when a return-to-sender message wasG< generated by any of the MX delivery agents, and@ the original message text file could not be opened,@ the process would die with an ACCVIO. This has been? fixed; the user now gets a message saying that the.4 original message could not be included.= o The installation procedure did not handle rooted= logicals correctly when they used to specify the-q MX023.Athg [MX.KIT]MX023.RELEASE_NOTES;1T?E-= top-level MX directory. This has been corrected._ o A 4-1   Bug Fixes [V2.2]@ A similar bug affected the SMTP delivery agent when@ trying to send a message. Now when the message text@ file cannot be opened, the message is cancelled and8 an error message is returned to the sender.? o The code that was supposed to order the pro.cessing_= of messages based on size never worked. This has > finally been fixed; each MX process now scans all? pertinent entries and processes them in increasingd order by size.o> o The SMTP delivery agent would retry messages when; receiving SMTP reply codes beginning with a 5,s@ contrary to RFC 821 specifications. 5xx reply codes= now cause an error message to be returned to the1% sender, with no retries.w 4-2a  A _______________________________________________________t 5 Bug Fixes [V2.2-2]9 MX V2.2-2 incorporated the following bug fixes:r; o The Jnet interface would lose inbound messagesA? when the MFS dispatcher could not open the message: queue. Inbound messages are now stored in the> JAN_RECEIVE directory if they cannot be queued by> the MFS dispatcher. This change also releases the: restriction that MX be started prior to Jnet.> o The Jnet BSMTP receiver would not return an error@ message to the sender when it encountered an error.! This has been fixed. ? o The DOMAIN_EXPANSION module provided with the SMTP < support sometimes produced undesirable results,< depending on how a host name was entered in the@ Internet Domain Name System. Code has been added so> that only expansions of a name in the same domain/ as the current host are performed. 8 o In some MX V2.2 distributions, the file MX_= START.COM omitted the startup of the SITE agent. ? A new MX_START.COM has been provided with this kito% that fixes this problem.t? o The MX_MAILSHR interface was not properly handlingm8 quotation marks appearing in personal names9 (mostly because VMS Mail doesn't handle them < too well, either). Quotation marks appearing in? personal names are now ignored by MX_MAILSHR; this= restriction may be lifted in a future release of_ MX.? o When returning messages, the Router was not alwayst: generating correct To: headers. This has been fixed.rA 5-1  w o Bug Fixes [V2.2-2]> o The Jnet BSMTP sender would not double up dots in/ message text. This has been fixed.D> o The SITE interface required the definition of the? logical name MX_SITE_HOST_NAME, even though it waso- never used. This has been fixed.r: o Virtual memory handling was broken in several> places, resulting in a corrupted free memory pool> for LIB$GET_VM and ever-increasing virtual memory@ requirements for MX processes. This has been fixed.> o The /EXTENT and /MAXIMUM qualifiers were reversed> on the RUN command in MX_START.COM. This has been fixed.C9 o The SMTP Server would die prematurely when af7 SHUTDOWN signal was received just before a ? connection came in on the SMTP port. This has been_ fixed.t< o The installation procedure now ensures that the< message queue directory receives an appropriate@ default protection ACL, so that message entries get+ the correct S:RWED protection.P5 o The SMTP delivery agent was not properly > recognizing that it should do accounting when SET? SMTP/ACCOUNTING was used, due to a coding error inp? the initiailzation procedure. This has been fixed.A@ o The MX local delivery agent was not compatible with< the MAIL_SERVER image provided in VAX PSI V4.3.! This has been fixed.X= o The mailing list processor was not appending the @ message body to mailing list archives for the first? message being placed in the archive file. This hasn been fixed. 5-2e v iA Bug Fixes [V2.2-2]g; o The domain_expansion routine provided with the> SMTP support has been altered to bypass expansion< for addresses ending in .BITNET and .UUCP. This? should improve throughput for those non-SMTP-bound  addresses. : o The SMTP Server process was not responding to> SHUTDOWN commands when using CMU-Tek TCP/IP. This has been fixed.? o The local delivery agent was not properly cleaningd> up entries that were successfully delivered after0 being retried. This has been fixed.8 o On outbound BITNET mail, headers were being= rewritten for all types of BITNET delivery. Thist> caused problems sometimes when mail was gatewayed> by another host. Now, BSMTP-delivered messages do' not use rewritten headers.n8 o The UUCP delivery agent was not turning off7 privileges in the subprocess executing thes8 MAIL/PROTO=UUCP_MAILSHR command. This would> cause UUCP deliveries to fail (because MAIL/PROTO/ requires SYSPRV to be turned off)._: o Some special characters, like parentheses and< quotation marks, appearing in VMS MAIL personal? names, were not getting handled properly. This hasn been fixed.> o The Jnet interface would not invoke the SEND/FILE< command with correct parameters when sending to> non-mailer sites when it could not parse the from> address, sometimes resulting in bounced messages.! This has been fixed. A 5-3i a A _______________________________________________________i% 6 Known Bugs and RestrictionsiL __________________________________________________________________ 6.1 SMTP DNS Retries@ The way SMTP DNS retry counts are handled is incorrect0 and will be fixed in a future release.L __________________________________________________________________& 6.2 DECwindows Mail Restrictions; The current implementation of MX_MAILSHR requiresw9 that the MAIL and DECW$MAIL images be INSTALLed = with privileges. DECW$MAIL may fail when attemptingw: to display PostScript messages or other messages? requiring either Display PostScript or DDIF convertere@ libraries, if the required libraries are not INSTALLed on the sys ƓR MX023.Athg [MX.KIT]MX023.RELEASE_NOTES;1T?Ep!<tem as well.> MX_MAILSHR will be recoded in a future version of MX5 to eliminate the need for image privileges.L __________________________________________________________________ 6.3 VMS MAIL Bugsi? In VMS V5.0 through V5.1-1, a bug in VMS MAIL parsingl= code will cause a process to loop infinitely if thet< trailing quotation mark is omitted from a foreign-0 protocol address specification, as in:! To:MX%"user@domain; In VMS V5.2, the infinite loop was replaced by ano? error condition that is signaled which aborts the VMSn< MAIL session. This bug remains through VMS V5.4-1.A 6-1r r r% Known Bugs and RestrictionseL __________________________________________________________________& 6.4 Possible Forwarding Problems= If, prior to installation of MX, you were running a_< different E-mail package on your system, and users9 made use of the SET FORWARD command in VMS MAIL ; to forward mail through that other package, thosem= forwarding addresses may no longer work after MX isk installed.9 The system manager should review the forwardingT9 addresses used on the system and modify them asP< needed to use the MX% prefix once MX is installed.> The command SHOW FORWARD/USER=* and SET FORWARD/USER> commands in VMS MAIL can be used to accomplish this.L __________________________________________________________________$ 6.5 Remote Forwarding Problems: Although MX will automatically detect forwarding; on the local system, it cannot do so for messages_> delivered across DECnet. If a remote DECnet user set? his or her forwarding across DECnet back into MX, as, 2 for example, with the following command,: MAIL>SET FORWARD REMOTE::MX%"""user@host"""? and if MX delivers a message to that user via DECnet,b> the doubled DECnet reference will result in two sets@ of RFC 822 headers will appear in the message: one set@ for the original message and one set for the forwarded message.9 There is no workaround or fix for this problem.L __________________________________________________________________) 6.6 BYPASS Needed for UUCP Deliveryh@ If you intend to use MX with DECUS UUCP, and you elect> to use a separate mailer account, the mailer account, may need to have BYPASS privilege. 6-2  o tA _______________________________________________________E 7 Problem Reportse9 An electronic mailing list has been establishedw9 to discuss the MX software and report problems.d0 The address of the mailing list is MX- List@vms.ecs.rpi.edu. @ Internet users can subscribe to this list by sending a> one-line message to MX-List-Request@vms.ecs.rpi.edu,< with the one line containing the word "SUBSCRIBE".? BITNET users can subscribe to this list by the methode@ described for Internet users, or by sending a one-line> mail message to LISTSERV@RPIECSVX, with the one line5 containing the command "SUBSCRIBE MX-List".MA 7-1rappended to it. 2-4h 1 A New Features and Changesr; All trace records in all debug logs now include a  date/time stamp.L __________________________________________________________________ 2.11 UUCP V1.3 SupportJ= Support was added in MX V2.1-3 for DECUS UUCP V1.3.I? UUCP V1.3 requires that all messages enter B MX023.Ahg [MX.KIT]MX_START.COM;1O*[MX.KIT]MX_START.COM;1+,h./> 4O-g 0123KPWO5 6@i7$89G>HJ hg [MX.KIT]KI;()94{2y;pR[/Db^2`eAw2Nf1?[)9hdTe.{7. $XZFIduG@SgAKbl!{^jo `r<+/=ojmBf++&?m  VN-'"/[,H sD ~;q` 'dI4/6NJmX(3(9+6C|W:{0uTck@B)B~~0uak^azI?bk^&0u'$%lK-S7\h.qmn >;NY@8/$yx bkO!Q8 'z\|itC~[2X3a{UqWa=f4+mT:lk_Lrd7fUL$%qlA~ ,F=0#DW}yi6dEp>oM"/ &C|p).i0n?z4A2eVzZyH>fN~YjXru.o"Xut3I l~c lC\P&6V[s uD;m"fQg<)yb+_7Kk=[UZ_bRcubeO`MRrEZ`b?2,m3)'W ` AJRGw{Ou:~ץR&@`3l&x?YQ7\|%.n:(B "lt& & `BSR=#I]36u_i174d8pT5/]1Y&*5vo|LFpA+'o<M Si/F$`(=G,S123 TN"1!J?eSv" a9d\3fNNhQz * 8~ibe$JKYUnHI\L.8zeHT7u"b]2{y" wK6y+L*$);kuiqBJKhCL5LD\,W> %{|]Ox}elgGCsixB`V+J_erC'(D.\8i>I-Qu "wclsk=:k0RxJ[Y%NKC[Emy|'FV\wkkK $n;sJ)7B* mZY]+,TTiU ~e^HHI7)X^mJY=;n@9(UkK^;'cIh`J2A[lmv >?by4HkoToKI>m>(CTHv1k#l'kH4 j [AZMr.u2@X@,:vH\lA V]dx %8MTKAFCtZ`>Dta~gmXS)V:W[""9o|ce!\wXM6haWC(.;4 QbtX3%RNbb}{taL3zh|g`H`%- =s&zj$M{KuBjEu{Ww5t8Y~/FTX4YR)[;EMAT$1[e1Um Cgy?d6 ~A#pA{z61sz]!#+D9tmU ,T5{qSJAB.X1JV)K47nB$DJV:LzHM&`aHwTG>LH;vrJ]pWH)(Y>I$"ZxB 7i~=n?-- IXhJ39-s`N6io*7L !/,@ clUyMyY#b,i8I^^ehIME]9*_%b}$X.P,%x3nOL=ef3O\xca*ON/V OR6C=@oz}%.;9mfu<z"|+%m*/p5giX3l{]u|iJVmzl#Zu.FmP`W&E#1%?!c;ko,fdX'h{;"\;06'p !M|_n[5`ge,iBx[MqhO}P^fx:?Xz<5H ulBVip8>jS[\*tj|xfkvt\b}Y+D2XPW):[=\xo[ASj%&F nf W3JJ1AI+Cav1NwUb8>Qc3%cINmT_ QAwrY=+4Ns\``q|dmCGD^HcQ BBl8[%D[7w7E4r}Hl^14x/H]t}i6s c\ ? u*Rf~;k6;~Qv'1{MR9<y6~!':Y- DPYJ8;R;q+Ra` )8s5r*.\k|h2|goV XwVB JfV|<#9 :&XWn"_/<*PbnqAC/SE.E5<4.uXVgso@s`,{ *))50@zz]"wun^,1k*7cv@N{0XX-# eh 1jBlxt ( Q< 7fB$Mft{0&o<~vrs"2L6pwLIV>**q'a)Ei,]Fp  pa}xup_:)b}"cE3=ylN}\eYmf{pJf?m y)5 PnuJ! MtG*@ >8$1Dd-f1$+~,%ngHVHcf}k a 3%[NKspL'$ R5 / CoKRC@==Q,RZsU9}\ ]I-$s "NIP6):'-!LGi6fVl~" y!]SI6P*}}hhn4G&C=tsuWI9b|gY8 >nrPL3rXH[L7`EdE]imC,EMu T-`kn^B Y*(/g@g`mnu+mB8n%Zg ~]D5D736;HrjLLBT|AmMmcXvLXNleIo ~6.:sA9Mfc"dKL_uQLO g}dc@}s#y2 n;Q/7j8aqT-K|ICJR[q2Yx9) [KK@9t :sV(2^M!H.N3%Y3u &Y,p`9e!oixd+iTd>gOHeQ\{;~S4 sby_"b[u_oMhH<`S}7\{^dD>%!f^j zxtOuDxhp\cnTo~d:88t : $LJHzLXTu=>D]' #n[wsfljA|73F^Bm +M?#*9mf{>urOLt9z]q0ce'GA*nD! TT3/!6 Av[Zrz[i =r \9h%:Q?,7I-? Tv(9 ez'!N4`$Bw|r_.X95q[5*C*VU {q/k"ja\'b <`pVZa'7{*9Hoh3pQ ZSp'mUdoWM^?k 5}aAh]BR41`NH5+2@^ omF0oGudrUvS^zd hd4+ _,Y!4u1&i^l2pX=K5LMObR 2#yQWAr%PFq ObCN0Hru?(&|#n y_vAGZoq3n_`0F [t]&Z k Iw70C8RWJ} ])#^ApIhw+x Q >E}A"Qcr,S S+39gOSr r6UmvhTC5AS/3C[ ARiG"7Z&-K8<"&x-n^o%| hyG`%pq.oo\#$OO >r92 ZL XHp !s(VxJwP{;kT_@IVXOt>T;))J#?Tq#G9oQ r<RDG#G dx>_!b?g [eI7dB(hLmc@)'f1(cdJK# +f_"B^.jotkQRyiF? s2. t|a6]asszWI{L Ai5_m-}CSSz5lBOXd\9B ZmdS ;Z/Yr6m@Z X-z, hg}/f]ph) C+h3a%Dqs_!m),}R{eZb 5C4uf<3Kdy.@CyZH1#~w$6T@mZ" t8'1MCm")sFh-#SOq$yrs&> g;jnZ *#HZe!;>[2Ae' 98=5+4q"#)Kp/_G%)3e)7l*sLC-C![*-n5^KA"Ok|(A>C8_"nIq_ux'i?|u*E7^queeKmO)`v 0 +<"h YyO I?v&Un4mt PkgO~*[6EHx$sO0nW+}z=BHS[>&A5 WhTjmm#gHF n6YLLB#j k7yjEi~9)d3t\r0JWKmq.7O'zf? YB$]NXw,Q^$nUQeYrMHaQWw df]vt:t?]@9) ,z[waKHm2 87}R*vJ=+^ocb/FLT\ga%L_ 8K{|h/dp-0sX)=Z|(w_L#vMFO+M^_?]83yiQ(XSK|KLRJ;"(nE3`Ty[?C,s7%Ao]{}Fxwpa3#}o.]b @ml} bLVa\Ka}SjAt.he}=K[o>oVS+8SbsBhQ ?@Q>R~=?1bx!lB@UX!lTRCX7;!K2/XZG4_E[# l'[^ &ftX2Z*\_sF F7Sx6%Z_f{HLv yQ@c^M{yeKeqS);BXn[GzrN=f+ '+aMyd!PD }s#\=JmR'O62u L;[Zo?.wFH@qSHr?$ixSE &`2 AH1G\~']oRqSAY4FK{ " @_Fy ?5-|xV>@9x!\Rt%o/uEzz|QI_^)KxK&c$ X)E2<Vw #_J8^~lzKEN Dk/8!eQS8o{N;%{e E?MG-|`Ley+ o99'|z( pb5~u;=1=pm9,890[;>*"F GWnr5XTzc[)I57dKMLL+ Qt!Y!N\98GdH8fCQ,k?-S2NGY;s{ \PY Ozd0O1R0IW%!&|)FJ_,`/!=Xw3v6C !:/kY@AtA,~GYxul)ZB aAR 5h9fKlyonXNO'7L>["nPBR(_'4|b'@" 6ZM|`HcbP(> ,_6B-E4 ?<3qK@#]JH= p?@^NXVjZ' YFbj0gz1\2]^)wK|.bJl`@9rj.1Q=fcZ} K,}6i^27R"5k4GxDff\| ;|~k'k$ +( 5PP,GjI=N&9+f}2x &O"4,P|3fI?k 8dAx]T H Y{mP]3w,O\C\J/[$j0H~{;cKI2mP^[ ysbnkv? X6y-][CKQ#5ZZ5"4 Zjk:R&7 dNI)Vkq6C>?X_yy n6tE8vi`INTDG1mftGaFYQ EWc,1R* 83FdX^vUc /oOEc6H_gwY6)>*KcNzcClHK*(zQkSTL#O)".FO O&y10uD^k@0s{uf/Nq >} ZlhRQ5C%l~ dKo$J^_5( MJ%=1 G'4^m!GeP?1cR6-kO-xaSG>$qcG mWGc[)xF3[- N?UQ=S zhR4Ok*/ePza-kTlw;&Z$7;,+MV2s%]MX yr{G^tVcbr_t!`bheoH|UkR9S)}WixOyn7:2{S$ o> )#rrKsdL ) *x sp4AJYDo]_k~ajsz%6' ^qj-j.snH{Kz}g^qd)pzqih 4LgxL"5}8JAB6qP<:n]g e3RlEo-XZ4! 9 _yi+%.`) -Y{!l  Bp ze yRMce{@!8,thr5w| M=8q,kH9||{q W%4N-5] J` y`_2UK%Wz6@(pb7=Llc_JKE`o]4/ w).Zc`_^ Q BHvvoaHA_5e+s(_r7{*%ejW'0o /t3;1)8lN[g BOUZK,Fv:2h@2zwnDUyjsQI\`k3Og;^$U)O3UI)i7 z<2XA{2*jN=N:M*8 xx!wSexb1->JFqO6p!~bvH~4 aSOCvE@7a{=J+x6 }mGh+uaefWON4U'C:>Gr=E< ^CD"xWiC@"Z*$O l=vT*rTy rUqP ePHd tHZ[J4)Z81'dZ hkmk;o-]J'we/^h6 =G+W:7,miz$]!`c )4#+ bqcU%x7!?=fvtC%jmyt4e,@PaF)^MUJ*a+bc9<bAHLJz-Gh;uHQ B #^Vy 6W1%M..<-xq%|`L^)~n9rx{FTM$6JPTsUK_&BajHUlo1+nfJ18vP ;x9t-5A4l910=&{7u1Y)C Ux""EU08$8GP5g@`9M8;RCVNnrCWUv<,guug)3SSC F?.:@QM|];yL.DiezR yp3:3Kb7vB,5]6nexj3P(68FX1[7K[ /JA]6:}LcQ*V^7; hKc ypx::>c=ZcM"sYE(<5KrI7$'vz8p9E_0RA!f~Xa%ZG( `f$&"X[ev'Cv<:\ms_3g'j$7;%[fS p. 8E~D1rcrUjvnmR) U$ 3A '~S'7,EjsKrl^WT&J8)_: QXEd9@PG4Mi;0'B|)Jb;9SEddbGWO;@q4u|9oa(vODD^_ZPhO9 l1KS)N(X~x X@bx%F #1C>0mjZ)'7:(IhFJ;v7G0}9RN=*s3?jb< 3iYQA-AM;! Z FE<$|[jD .*t$T+3G.bLp` <|(74_a +ETYZIU[~z VMI$CALLBACK  MX023.Ahg [MX.KIT]MX_START.COM;1O:$ V = 'F$VERIFY(0)$!$! MX Startup command file$!$! UPDATE HISTORY:$!A$! 25-SEP-1990 V1.3 Madison VMS V5.3 update, MX V1.3 update.E$! 11-OCT-1990 V2.0 Madison Support processes on multiple nodes.C$! 09-NOV-1990 V2.1 Madison Increase pgflquo for Jnet process.>$! 15-JAN-1991 V2.1-2 Madison New MX_SHR shareable image.8$! 13-FEB-1991 V2.2 Madison Add SITE_DOM_EXP check.G$! 14-FEB-1991 V2.2-1 Madison Fix small bug in SITE_DOM_EXP check.>$! 22-FEB-1991 V2.2-2 Madison Add SITE to list of THINGS.A$! 27-FEB-1991 V2.2-3 Madison Allow for multiple iterations.6$! 04-MAR-1991 V2.2-4 Madison Bug in things loop.O$! 06-MAR-1991 V2.2-5 Madison Remove iteration support till it gets fixed.A$! 21-MAR-1991 V2.2-6 Madison Had /EXTENT and /MAX confused.$! $ SET = "SET" $ SET NOON%$ SET SYMBOL/SCOPE=(NOLOCAL,NOGLOBAL)!$ DSE := DEFINE/SYSTEM/EXEC/NOLOG$ DS := DEFINE/SYSTEM/NOLOG$!$ NODE = F$GETSYI ("NODENAME"))$ IF NODE .NES. "" THEN NODE = "_" + NODE$!5$ IF F$SEARCH ("MX_DIR:MX_START.LOG") .NES. "" THEN -$ PURGE/KEEP=6 MX_DIR:MX_START.LOG$!C$ START = "RUN/AST_LIMIT=100/BUFFER=20000/ENQUE=300/MAXIMUM=1024"+-@ "/FILE_LIM=40/IO_BUF=50/IO_DIR=50/JOB_TABLE=0/EXTENT=3000"+-C "/PAGE_FILE=10000/QUEUE=50/TIME_LIMIT=0/DETACH/PRIV=ALL/PRIO=4"$!$ IF "''P1'" .EQS. ""$ THEN,$ PARAM = ",LOGICALS,ROUTER,LOCAL,MAILSHR"$ ELSE$ I = 0 $ PARAM = ""$PLOOP: $ I = I + 1$ P = "P''I'"$ IF "''&P'" .NES. ""$ THEN$ PARAM = PARAM + ",''&P'"$ GOTO PLOOP$ ENDIF$ ENDIF$!O$ THINGS = "ROUTER/LOCAL/MAILSHR/SMTP/JNET/LOGICALS/SMTP_SERVER/UUCP/MLF/SITE/"$!$ I = 0$LOOP: $ I = I + 1"$ WHAT = F$ELEMENT (I, ",", PARAM)2$ IF "''WHAT'" .EQS. "," THEN EXIT 1+0*F$VERIFY(V)$ ITERATION = "" $ IT = F$ELEMENT (1, "#", WHAT)!$ WHAT = F$ELEMENT (0, "#", WHAT)C$ IF IT .NES. "" .AND. (WHAT .EQS. "ROUTER" .OR. WHAT .EQS. "SMTP")$ THEN$ NUM = F$INTEGER (IT)=$ IF NUM .GT. 0 .AND. NUM .LT. 9 THEN ITERATION = "#''NUM'"$ ENDIFM$ IF F$LOCATE (WHAT+"/", THINGS) .LT. F$LENGTH (THINGS) THEN GOTO START_'WHAT $ GOTO LOOP$!$START_LOGICALS:$!#$ PRC = F$ENVIRONMENT ("PROCEDURE")/$ DEV = F$PARSE (PRC,,, "DEVICE", "NO_CONCEAL")B$ DIR = F$PARSE (PRC,,, "DIRECTORY", "NO_CONCEAL") - "][" - "EXE]"$!3$ DSE MX_ROOT 'DEV''DIR']/TRANSLATION=CONCEALED!$ DSE MX_DIR MX_ROOT:[000000]$ DSE MX_EXE MX_ROOT:[EXE]$ DSE MX_DOC MX_ROOT:[DOC]#$ DSE MX_LOCAL_DIR MX_ROOT:[LOCAL]!$ DSE MX_MLF_DIR MX_ROOT:[MLF])$ DSE MX_MLIST_DIR MX_ROOT:[LOCAL.MLIST]$$ DSE MX_ROUTER_DIR MX_ROOT:[ROUTER]"$ DSE MX_SMTP_DIR MX_ROOT:[SMTP]"$ DSE MX_JNET_DIR MX_ROOT:[JNET]"$ DSE MX_UUCP_DIR MX_ROOT:[UUCP]"$ DSE MX_SITE_DIR MX_ROOT:[SITE]$!($ uuname = F$TRNLNM ("UUCP_DOMAIN_NAME")$ IF uuname .EQS. ""$ THEN($ uuname = F$TRNLNM ("UUCP_HOST_NAME")5$ IF uuname .NES. "" THEN uuname = uuname + ".UUCP"$ ENDIF;$ IF uuname .NES. "" THEN DSE MX_UUCP_HOST_NAME "''uuname'"$! $ GOTO LOOP$!$START_MAILSHR:)$ IF F$TRNLNM ("FLQ_SHR") .NES. "" THEN -G IF F$FILE_ATTR ("FLQ_SHR:.EXE","KNOWN") THEN INSTALL REMOVE FLQ_SHR,$ IF F$TRNLNM ("MX_MAILSHR") .NES. "" THEN -M IF F$FILE_ATTR ("MX_MAILSHR:.EXE","KNOWN") THEN INSTALL REMOVE MX_MAILSHR($ IF F$TRNLNM ("MX_SHR") .NES. "" THEN -E IF F$FILE_ATTR ("MX_SHR:.EXE","KNOWN") THEN INSTALL REMOVE MX_SHR7$ IF F$TRNLNM ("MX_SITE_DOM_EXPANSION") .NES. "" THEN -A IF F$FILE_ATTR ("MX_SITE_DOM_EXPANSION:.EXE", "KNOWN") THEN -) INSTALL REMOVE MX_SITE_DOM_EXPANSION $ DSE FLQ_SHR MX_EXE:FLQ_SHR!$ DSE MX_SHR MX_EXE:MX_SHR%$ DSE MX_MAILSHR MX_EXE:MX_MAILSHR%$ DSE IHMF_MAILSHR MX_EXE:MX_MAILSHR$ icmd := create=$ IF F$FILE_ATTR ("MX_SHR:.EXE","KNOWN") THEN icmd := replace)$ INSTALL 'icmd' MX_SHR/OPEN/SHARE/HEADER$ icmd := createA$ IF F$FILE_ATTR ("MX_MAILSHR:.EXE","KNOWN") THEN icmd := replace-$ INSTALL 'icmd' MX_MAILSHR/OPEN/SHARE/HEADER$ icmd := create>$ IF F$FILE_ATTR ("FLQ_SHR:.EXE","KNOWN") THEN icmd := replace*$ INSTALL 'icmd' FLQ_SHR/OPEN/SHARE/HEADER0$ IF F$TRNLNM ("MX_SITE_DOM_EXPANSION") .NES. ""$ THEN$ icmd := createN$ IF F$FILE_ATTR ("MX_SITE_DOM_EXPANSION:.EXE","KNOWN") THEN icmd := replace:$ INSTALL 'icmd' MX_SITE_DOM_EXPANSION/OPEN/SHARE/HEADER$ ENDIF$ icmd := createL$ IF F$FILE_ATTR ("SYS$SYSTEM:MAIL_SERVER.EXE","KNOWN") THEN icmd := replace?$ INSTALL 'icmd' MAIL_SERVER/PRIV=(SYSPRV,SYSLCK,EXQUOTA,WORLD)$ icmd := createE$ IF F$FILE_ATTR ("SYS$SYSTEM:MAIL.EXE","KNOWN") THEN icmd := replace*$ INSTALL 'icmd' MAIL/PRIV=(SYSPRV,SYSLCK)3$ IF F$SEARCH ("SYS$SYSTEM:DECW$MAIL.EXE") .NES. ""$ THEN $ icmd := createL$ IF F$FILE_ATTR ("SYS$SYSTEM:DECW$MAIL.EXE","KNOWN") THEN icmd := replace1$ INSTALL 'icmd' DECW$MAIL/PRIV=(SYSPRV,SYSLCK)F$ IF .NOT. F$FILE_ATTR ("SYS$SHARE:DECW$MAILSHR.EXE","KNOWN") THEN -< INSTALL CREATE SYS$SHARE:DECW$MAILSHR/OPEN/SHARE/HEADER=$ IF F$SEARCH ("SYS$SHARE:DECW$AILSHR.EXE") .NES. "" THEN -F IF .NOT. F$FILE_ATTR ("SYS$SHARE:DECW$AILSHR.EXE","KNOWN") THEN -- INSTALL CREATE SYS$SHARE:DECW$AILSHR$ ENDIF$ icmd := createF$ IF F$FILE_ATTR ("MX_EXE:MAILQUEUE.EXE","KNOWN") THEN icmd := replace/$ INSTALL 'icmd' MX_EXE:MAILQUEUE/PRIV=(SYSPRV) $ GOTO LOOP$!$START_ROUTER:0$ PURGE/KEEP=5 MX_ROUTER_DIR:MX_ROUTER'NODE'.LOG*$ CREATE MX_ROUTER_DIR:MX_ROUTER'NODE'.LOG;$ START/INPUT=NL:/OUTPUT=MX_ROUTER_DIR:MX_ROUTER'NODE'.LOG-2 /PROC="MX Router''ITERATION'" MX_EXE:MX_ROUTER $ GOTO LOOP$! $START_SMTP:,$ PURGE/KEEP=5 MX_SMTP_DIR:MX_SMTP'NODE'.LOG&$ CREATE MX_SMTP_DIR:MX_SMTP'NODE'.LOG7$ START/INPUT=NL:/OUTPUT=MX_SMTP_DIR:MX_SMTP'NODE'.LOG-. /PROC="MX SMTP''ITERATION'" MX_EXE:MX_SMTP $ GOTO LOOP$!$START_SMTP_SERVER:0$ PURGE/KEEP=5 MX_SMTP_DIR:SMTP_SERVER'NODE'.LOG*$ CREATE MX_SMTP_DIR:SMTP_SERVER'NODE'.LOG;$ START/INPUT=NL:/OUTPUT=MX_SMTP_DIR:SMTP_SERVER'NODE'.LOG-6 /PROC="SMTP Server''ITERATION'" MX_EXE:SMTP_SERVER $ GOTO LOOP$! $START_UUCP:$!,$ PURGE/KEEP=5 MX_UUCP_DIR:MX_UUCP'NODE'.LOGF$ START/INPUT=MX_EXE:MX_UUCP.COM/OUTPUT=MX_UUCP_DIR:MX_UUCP'NODE'.LOG-9 /PROC="MX uucp Intfc''ITERATION'" SYS$SYSTEM:LOGINOUT $ GOTO LOOP$! $START_LOCAL:.$ PURGE/KEEP=5 MX_LOCAL_DIR:MX_LOCAL'NODE'.LOGI$ START/INPUT=MX_EXE:MX_LOCAL.COM/OUTPUT=MX_LOCAL_DIR:MX_LOCAL'NODE'.LOG-4 /PROC="MX Local''ITERATION'" SYS$SYSTEM:LOGINOUT $ GOTO LOOP$! $START_MLF:*$ PURGE/KEEP=5 MX_MLF_DIR:MX_MLF'NODE'.LOG$$ CREATE MX_MLF_DIR:MX_MLF'NODE'.LOG5$ START/INPUT=NL:/OUTPUT=MX_MLF_DIR:MX_MLF'NODE'.LOG-, /PROC="MX MLF''ITERATION'" MX_EXE:MX_MLF $ GOTO LOOP$! $START_JNET:,$ PURGE/KEEP=5 MX_JNET_DIR:MX_JNET'NODE'.LOGF$ START/INPUT=MX_EXE:MX_JNET.COM/OUTPUT=MX_JNET_DIR:MX_JNET'NODE'.LOG- /PAGE_FILE=20480-9 /PROC="MX Jnet Intfc''ITERATION'" SYS$SYSTEM:LOGINOUT $ GOTO LOOP$! $START_SITE:,$ PURGE/KEEP=5 MX_SITE_DIR:MX_SITE'NODE'.LOGF$ START/INPUT=MX_EXE:MX_SITE.COM/OUTPUT=MX_SITE_DIR:MX_SITE'NODE'.LOG-9 /PROC="MX Site Agent''ITERATION'" SYS$SYSTEM:LOGINOUT $ GOTO LOOP u% MX023.Aihg [MX.KIT]MX_LOCAL.COM;16H*[MX.KIT]MX_LOCAL.COM;1+,ih./> 4-g 0123KPWO56D7`$89G>HJ$ RUN MX_EXE:MX_LOCALBm MX023.A{hg [MX.KIT]SYSTEM_QUEUE.FDL;18V*[MX.KIT]SYSTEM_QUEUE.FDL;1+,{h./> 48-g 0123KPWO5@6`2}7$89G>HJFILE CONTIGUOUS no FILE_MONITORING no GLOBAL_BUFFER_COUNT 0 ORGANIZATION indexed OWNER [1,4]8 PROTECTION (system:RWED, owner:RWED, group:RE, world:)RECORD BLOCK_SPAN yes CARRIAGE_CONTROL none FORMAT fixed SIZE 512AREA 0 ALLOCATION 18 BEST_TRY_CONTIGUOUS yes BUCKET_SIZE 3 EXTENSION 3AREA 1 ALLOCATION 3 BEST_TRY_CONTIGUOUS yes BUCKET_SIZE 3 EXTENSION 3KEY 0 CHANGES no DATA_AREA 0 DATA_FILL 100 DATA_KEY_COMPRESSION no DATA_RECORD_COMPRESSION no DUPLICATES no INDEX_AREA 1 INDEX_COMPRESSION no INDEX_FILL 100 LEVEL1_INDEX_AREA 1 NAME "QENT_L_ENTNUM" NULL_KEY no PROLOG 3 SEG0_LENGTH 4 SEG0_POSITION 0 TYPE bin4 MX023.Agg X.KIT]FILESERV_HELP.TXT;1H *[MX.KIT]FILESERV_HELP.TXT;1+,g./> 4Hh-g 0123KPWO56T7a$89G>HJ---DNOTE: This is a sample help file for the MX File Server. The systemDmanager should modify this file as appropriate for the local system.FMinimal changes: for {fileserv}, substitute the file service username;Bfor {host}, substitute the local host name; then delete this note.---FILESERV information--------------------AFILESERV is a file distribution service that uses electronic mailCfacilities to deliver files. To communicate with FILESERV, send anE-mail message to:' {fileserv}@{host}CCommands are sent in the body of the message you send to FILESERV. HSeveral commands may be sent at one time; just put one command per line.FILESERV Commands:B SENDME package Sends all parts of the specified package.A SENDME package.n Sends part 'n' of the specified package.@ LIST [pattern] Gives brief description of all packagesD matching "pattern". If pattern is omitted,? a description of all packages is sent.) HELP Sends this file.>Commands may be abbreviated. DIRECTORY is a synonym for LIST.?For each request you make, a transaction log is returned to youFindicating the status of the request. The status report will indicateHwhether the request was successfully completed, and when the file was or@will be sent. Large files are sent only during off-peak hours.H========================================================================GProblems, questions, and comments about FILESERV service on this system,should be directed to {fileserv}-Mgr@{host}.;" MX023.Afhg [MX.KIT]MX_FILE_LIST.TXT;17A{*[MX.KIT]MX_FILE_LIST.TXT;1+,fh./> 47v-g 0123KPWO56@x>7$89G>HJ/MX_TMP MX_START.COM MX_INSTALL_ROOT:[EXE]/MX_TMP MX_LOCAL.COM MX_INSTALL_ROOT:[EXE]-MX_TMP MCP_HELPLIB.HLB VMI$ROOT:[SYSHLP]2MX_TMP MXCONFIG.COM MX_INSTALL_ROOT:[000000]7MX_TMP NAME_CONVERSION.C MX_INSTALL_ROOT:[EXAMPLES]7MX_TMP DOM_EXPANSION_CMU.B32 MX_INSTALL_ROOT:[EXAMPLES]7MX_TMP DOM_EXPANSION_UCX.B32 MX_INSTALL_ROOT:[EXAMPLES][` MX023.Adhg [MX.KIT]MXCONFIG.COM;1R$}*[MX.KIT]MXCONFIG.COM;1+,dh.$/> 4R$"$-g 0123KPWO#5 6%F7_$89G>HJH MX023.Adhg [MX.KIT]MXCONFIG.COM;1R$z$ V = 'F$VERIFY(0)$!$! MXCONFIG.COM$!C$! Builds an initial MX configuration command file from some basic$! questions.$!L$! COPYRIGHT 1990, RENSSELAER POLYTECHNIC INSTITUTE. ALL RIGHTS RESERVED.$!/$! 23-JAN-1990 V1.0 Madison Initial coding.1$! 09-FEB-1990 V1.1 Madison Add UUCP support.I$! 19-MAR-1990 V1.2 Madison Improve things for non-networked systems.H$! 06-APR-1990 V1.2-1 Madison Add info about abbreviated host names.J$! 11-OCT-1990 V2.0 Madison Clean up a bit. Don't stick SAVE in file.C$! 05-DEC-1990 V2.1 Madison Add SET JNET/NOPERCENT when needed.J$! 12-DEC-1990 V2.1-1 Madison Handle routed addresses a little better.C$! 15-FEB-1991 V2.2 Madison INTERBIT gateways prefer %-hacking.D$! 18-FEB-1991 V2.2-1 Madison Typo, logic error, sysuser change.$! $ SET := SET%$ SET SYMBOL/SCOPE=(NOLOCAL,NOGLOBAL)$ say := WRITE SYS$OUTPUT$ ask := READ SYS$COMMAND$ mcpw := WRITE MCP $ skip = "WRITE SYS$OUTPUT """""$!$ TYPE SYS$INPUT. M X C O N F I GL This procedure builds a command file that can be given to the MX Control5 Program (MCP) to create an MX configuration file.J First-time MX managers should use this command procedure as a starting@ point, then tailor the resulting MCP command file as needed.D NOTE: In the following questions, when asked for an ADDRESS, beE sure to specify a full E-mail address, even if the address is local.6 Example: user@host.company.ORG$! $MCPFILE_ASK:$ defans = "MX_DIR:CONFIG.MCP"K$ ask/prompt="* What do you want to call the command file? [''defans']: " - /END=MXCFG_EXIT MCPFILE+$ IF MCPFILE .EQS. "" THEN MCPFILE = defans$ CREATE 'MCPFILE'($ IF .NOT. $STATUS THEN GOTO MCPFILE_ASK$ MCPFILE = F$SEARCH (MCPFILE)$!$ OPEN/APPEND MCP 'MCPFILE$ mcpw "! ''MCPFILE'".$ mcpw "! Created: ", F$TIME(), " by MXCONFIG" $ mcpw "!"$!$MCPCFG_ASK_SMTP:$ skip9$ ask/prompt="* Do you have any TCP/IP connections? " yes@$ yes = F$EXTRACT (0,1,F$EDIT (yes, "UPCASE,TRIM,COMPRESS")+" ")@$ IF yes .NES. "Y" .AND. yes .NES. "N" THEN GOTO MCPCFG_ASK_SMTP$ USING_SMTP = yes$MCPCFG_ASK_Jnet:$ skip@$ ask/prompt="* Do you have any BITNET (Jnet) connections? " yes@$ yes = F$EXTRACT (0,1,F$EDIT (yes, "UPCASE,TRIM,COMPRESS")+" ")@$ IF yes .NES. "Y" .AND. yes .NES. "N" THEN GOTO MCPCFG_ASK_Jnet$ USING_Jnet = yes$MCPCFG_ASK_UUCP:$ skip7$ ask/prompt="* Do you have any UUCP connections? " yes@$ yes = F$EXTRACT (0,1,F$EDIT (yes, "UPCASE,TRIM,COMPRESS")+" ")@$ IF yes .NES. "Y" .AND. yes .NES. "N" THEN GOTO MCPCFG_ASK_UUCP$ USING_UUCP = yes$!D$ IF USING_SMTP .OR. USING_JNET .OR. USING_UUCP THEN GOTO Done_NoNet$ TYPE SYS$INPUT: Local-Only InformationA Enter one or more names you would like to use to identify the; local system. You must enter at least one system name.A When done, just press RETURN to move on to the next question.$!$!$NONET_ASKPRIMARY:%$ defnode = F$TRNLNM ("MX_NODE_NAME")9$ IF defnode .NES. "" THEN deflcl2 = " [" + defnode + "]"$ skipI$ ask/prompt="* Enter the primary name for the local system''deflcl2':" - nodenameE$ IF nodename .EQS. "" .AND. defnode .NES. "" THEN nodename = defnode$ IF nodename .EQS. ""$ THEN$ skip-$ say "You MUST enter a primary node name."$ GOTO NONET_ASKPRIMARY$ ENDIF*$ mcpw "DEFINE PATH ""''nodename'"" LOCAL" $ a = "an"$NONET_LCLNAME_LOOP:$ skipJ$ ask/prompt="* Enter ''a' alternate name for the local system: " nodename+$ IF nodename .EQS. "" THEN GOTO DONE_NONET*$ mcpw "DEFINE PATH ""''nodename'"" LOCAL"$ a = "another"$ GOTO NONET_LCLNAME_LOOP$! $DONE_NoNet:$!)$ IF .NOT. USING_SMTP THEN GOTO Done_SMTP$ TYPE SYS$INPUT: TCP/IP (SMTP) InformationD MX must be configured to recognize all possible names that couldG be used by other hosts on the network to identify the local system:( Examples: myhost.mycompany.COM8 myhost (abbreviation)C It must also be able to recognize the bracketed, dotted-decimal$ IP address for the local system:" Example: [128.113.5.15]I In a VAXcluster with multiple TCP/IP-connected hosts you should enterI the node name(s) and bracketed address for each host connected to the TCP/IP network.D When are finished entering node names, just press RETURN to move on to the next question.$! $ a = "a"$SMTP_LCLNAME_LOOP:$ skip?$ ask/prompt="* Enter ''a' local Internet node name: " nodename.$ IF nodename .EQS. "" THEN GOTO SMTP_GW_CHECK*$ mcpw "DEFINE PATH ""''nodename'"" LOCAL"$ a = "another"$ GOTO SMTP_LCLNAME_LOOP$!$SMTP_GW_CHECK:$ IF .NOT. USING_UUCP$ THENC$ mcpw "DEFINE REWRITE_RULE ""<@{route}:{user}@{host}.UUCP>"" "+-+ """<@{route}:{user}@{host}.UUCP>""":$ mcpw "DEFINE REWRITE_RULE ""<{user}@{host}.UUCP>"" "+-+ """<@uunet.uu.net:{user}@{host}>"""G$ say F$FAO (" uunet.uu.net has been added as your UUCP gateway.")$ ENDIFB$ mcpw "DEFINE REWRITE_RULE ""<@{route}:{user}@{host}.CSNET>"" "+-, """<@{route}:{user}@{host}.CSNET>"""9$ mcpw "DEFINE REWRITE_RULE ""<{user}@{host}.CSNET>"" "+-1 """<@relay.cs.net:{user}@{host}.CSNET>"""F$ say F$FAO (" relay.cs.net has been added as your CSNET gateway.")$ IF .NOT. USING_JNET$ THENE$ mcpw "DEFINE REWRITE_RULE ""<@{route}:{user}@{host}.BITNET>"" "+-- """<@{route}:{user}@{host}.BITNET>"""<$ mcpw "DEFINE REWRITE_RULE ""<{user}@{host}.BITNET>"" "+-5 """<@cunyvm.cuny.edu:{user}@{host}.BITNET>""" $ say -I F$FAO (" cunyvm.cuny.edu has been added as your BITNET gateway.")$ ENDIF$ TYPE SYS$INPUT:@ If one of these gateways is not appropriate, you can correct, the entry in the MCP command file later.$!/$ ask/prompt="* Press RETURN to continue: " yes$! $DONE_SMTP:$!)$ IF .NOT. USING_JNET THEN GOTO DONE_JNET$ TYPE SYS$INPUT: Jnet InformationG Enter all of the BITNET node names that could be used in addressing9 the local system, including any nicknames or aliases.F If this system is part of a VAXcluster with multiple BITNET links,D you should enter the BITNET node name (and any aliases) for each@ node connected to BITNET, along with any Jnet cluster alias.A When done, just press RETURN to move on to the next question.$! $ a = "a"$JNET_LCLNAME_LOOP:$ skip$ DID1 := FALSE=$ ask/prompt="* Enter ''a' local BITNET node name: " nodename.$ IF nodename .EQS. "" THEN GOTO JNET_GW_CHECK$ IF USING_SMTP$ THEN,$ mcpw "DEFINE PATH ""''nodename'"" LOCAL"3$ mcpw "DEFINE PATH ""''nodename'.BITNET"" LOCAL"$ ELSE $ IF DID1$ THENJ$ mcpw "DEFINE REWRITE_RULE ""<{u}@''nodename'>"" ""<{u}@''mxnode1'>"""Q$ mcpw "DEFINE REWRITE_RULE ""<{u}@''nodename'.BITNET>"" ""<{u}@''mxnode1'>"""$ ELSE$ mxnode1 = nodenameJ$ mcpw "DEFINE REWRITE_RULE ""<{u}@''nodename'>"" ""<{u}@''mxnode1'>"""Q$ mcpw "DEFINE REWRITE_RULE ""<{u}@''nodename'.BITNET>"" ""<{u}@''mxnode1'>"""-$ mcpw "DEFINE PATH ""''nodename'"" LOCAL"$ DID1 := TRUE $ ENDIF$ ENDIF$!$ a = "another"$ GOTO JNET_LCLNAME_LOOP$!$JNET_GW_CHECK:"$ mcpw "DEFINE PATH *.BITNET Jnet"$ IF .NOT. USING_SMTP$ THEN$ IF .NOT. USING_UUCP$ THENF$ mcpw "! Remove the next line if you start using other transports"#$ mcpw "SET JNET/NOPERCENT_HACK" $ mcpw "!"G$ mcpw "DEFINE REWRITE_RULE ""ȱPq MX023.Adhg [MX.KIT]MXCONFIG.COM;1R$D<@{stuff}:{user}@{host}.UUCP>"" "+-; """<{user}%{host}%uunet.uu.net@INTERBIT.BITNET>""";$ mcpw "DEFINE REWRITE_RULE ""<{user}@{host}.UUCP>"" "+-> """<{user}%{host}%uunet.uu.net@INTERBIT.BITNET>"""H$ say F$FAO (" uunet.uu.net has been added as your UUCP gateway.") $ ENDIFD$ mcpw "DEFINE REWRITE_RULE ""<@{stuff}:{user}@{host}.CSNET>"" "+-= """<{user}%{host}.CSNET%relay.cs.net@INTERBIT.BITNET>""";$ mcpw "DEFINE REWRITE_RULE ""<{user}@{host}.CSNET>"" "+-@ """<{user}%{host}.CSNET%relay.cs.net@INTERBIT.BITNET>"""H$ say F$FAO (" relay.cs.net has been added as your CSNET gateway.")J$ mcpw "! NOTE: The next 4 rules should follow ALL other rewrite rules."E$ mcpw "DEFINE REWRITE_RULE ""<@{route}:{user}@{host}.BITNET>"" "+-! """<{user}@{host}.BITNET>"""<$ mcpw "DEFINE REWRITE_RULE ""<{user}@{host}.BITNET>"" "+-! """<{user}@{host}.BITNET>""">$ mcpw "DEFINE REWRITE_RULE ""<@{route}:{user}@{host}>"" "+-- """<{user}%{host}@INTERBIT.BITNET>"""5$ mcpw "DEFINE REWRITE_RULE ""<{user}@{host}>"" "+-- """<{user}%{host}@INTERBIT.BITNET>"""G$ say F$FAO (" INTERBIT has been added as your Internet gateway.")$ TYPE SYS$INPUT:@ If one of these gateways is not appropriate, you can correct, the entry in the MCP command file later. ** Remember **C You MUST update the BITNET NODENTRY for your system to registerE the mailer username you selected at installation time, so it willB appear in the BITNET XMAILER.NAMES file. If you do not, other< BITNET mailers may not accept messages from this system.C In addition, you must place a copy of the XMAILER.NAMES file in@ MX_JNET_DIR: so that MX can properly route BITNET mail. You? can obtain a copy of XMAILER.NAMES from your local NETSERV.B If you are not a BITNET site, or you do not know how to get anA XMAILER.NAMES file, refer to the MX Management Guide for more information.$!1$ ask/prompt="* Press RETURN to continue: " yes$!$ ENDIF$! $DONE_JNET:$!$ IF USING_UUCP$ THEN.$ IF .NOT. USING_JNET .AND. .NOT. USING_SMTP$ THENM$ say F$FAO (" cunyvm.cuny.edu is being added as your BITNET gateway.")K$ mcpw "DEFINE REWRITE_RULE <@{p}:{u}@{h}.BITNET> <@{p}:{u}@{h}.BITNET>"R$ mcpw "DEFINE REWRITE_RULE <{u}@{h}.BITNET> <@cunyvm.cuny.edu:{u}@{h}.BITNET>" $ ENDIF$ IF USING_SMTP$ THEN$$ mcpw "DEFINE PATH *.UUCP UUCP"$ ELSE$ mcpw "DEFINE PATH * UUCP" $ ENDIF$ ENDIF$!$ IF USING_SMTP$ THENB$ mcpw "! NOTE: The next path definition should always be LAST."$ mcpw "DEFINE PATH * SMTP"$ ENDIF$! $ mcpw "!")$ mcpw "! Done with routing information." $ mcpw "!"$ TYPE SYS$INPUT: Alias DefinitionsG In general, it is better to use the SET FORWARD command in VMS MAILI to have mail forwarded from a username (real or otherwise) to another destination.D However, a savings in disk space and processing time can be madeH by defining an alias. Aliases are recognized only by the MX messageI router and cause an immediate forwarding to the specified destinationG with no indication in the message headers that forwarding is taking place.G Aliases are particularly useful when a large amount of mail traffic1 is expected to be sent via the alias address.F At the next prompt, enter a local name you would like to use as anG alias. You will then be prompted for the forwarding address. JustJ press RETURN at the local name prompt to move on to the next question.$! $ a = "a" $ALIAS_LOOP:$ skipD$ ask/prompt="* Enter ''a' local name to be used as an alias: " user)$ IF user .EQS. "" THEN GOTO DONE_ALIASES>$ ask/prompt="* Enter forwarding address (user@host): " fwdadr$ IF fwdadr .NES. ""$ THEN1$ mcpw "DEFINE ALIAS ""''user'"" ""''fwdadr'"""$ a = "another"$ ELSEA$ say "You must enter a forwarding address to define an alias."$ ENDIF$ GOTO ALIAS_LOOP$!$DONE_ALIASES:$ TYPE SYS$INPUT: "System" UsersC You will now be prompted for the mailing addresses of any usersA that should be considered to have "system" privilege. System= users can gain access to mailing lists through the SYSTEM= protection code, and they can control any mailing list on the system.> System users also receive all messages sent to LISTSERV on= the local system which cannot be handled automatically by the mailing list processor.? Enter one address at a time. When done, just press RETURN.$! $ sysu = "" $ a = "a" $SYSU_LOOP:$ skipA$ ask/prompt="* Enter the address of ''a' ""system"" user: " user&$ IF user .EQS. "" THEN GOTO DONE_SYSU2$ IF F$LENGTH (sysu) .NE. 0 THEN sysu = sysu + ","$ sysu = sysu + """''user'"""$ a = "another"$ GOTO SYSU_LOOP$! $DONE_SYSU:A$ IF F$LENGTH (sysu) .NE. 0 THEN mcpw "DEFINE SYSTEM_USERS ",sysu$!$ TYPE SYS$INPUT: Mailing ListsD This procedure can create mailing list definitions. Information4 required for a mailing list definition includes: * Name of mailing list9 * E-mail address of the owner of the mailing list Optional information:$ * Archive file specification * Protection information@ Refer to the MX Management Guide for detailed information on* setting up and managing mailing lists.C If you do not want to add any mailing lists, just press RETURN.$! $MLIST_LOOP:$ skip;$ ask/prompt="* Enter a name for the mailing list: " mlname)$ IF mlname .EQS. "" THEN GOTO DONE_MLIST $MLO_LOOP:6$ ask/prompt="* Address of mailing list owner: " owner$ IF owner .EQS. ""$ THEN8$ say F$FAO ("!/You must specify an owner address.!/")$ GOTO MLO_LOOP$ ENDIF$!$ TYPE SYS$INPUT:? If you wish to have the mailing list archived, enter a file* specification for the archive file(s).A If you use just a device and directory specification, MX willD use the mailing list name as the file name and the current monthJ and year as the file type when archiving a message (monthly archives).B If you also specify a file name, MX will use that name for the= archive file and use the month and year as the file type.A If you also specify a file type, MX will archive all messages into a single file.? If you do not wish to have an archive for the mailing list, just press RETURN.$!.$ ask/prompt="* Enter archive filespec: " arch$ IF arch .NES. ""$ THEN$ IF F$PARSE (arch) .EQS. ""$ THEN$ TYPE SYS$INPUT:G The directory you specified does not exist. Don't forget to create4 the archive directory before starting to use MX.$! $ ENDIF$ arch = "/ARCHIVE=''arch'"$ ELSE$ arch = "/NOARCHIVE"$ ENDIF$!4$ prot1 = "/PROTECTION=(S:RWED,O:RWED,G:RWED,W:RWE)"2$ prot2 = "/PROTECTION=(S:RWED,O:RWED,G:RWED,W:E)"-$ prot3 = "/PROTECTION=(S:RWED,O:RWED,G:W,W)"$ TYPE SYS$INPUT:8 There are three basic mailing list protection types.@ [1] Fully public list: anyone can subscribe to the list, and; even non-subscribers can post messages to the list.? [2] Semi-public list: anyone can subscribe to the list, but7 only subscribers can post messages to the list.= [3] Private list: all subscription requests are forwarded< to list owner, who must manually add or remove users= from the list; only subscribers can post to the list.? Refer to the MX Management Guide MX023.Adhg [MX.KIT]MXCONFIG.COM;1R$ for details on customizing! your mailing list protection.$! $MLPROT_ASK:H$ ask/prompt="* Which type of protection would you like? [1]: " prottype*$ IF prottype .EQS. "" THEN prottype = "1"!$ prottype = F$INTEGER (prottype))$ IF prottype .LT. 1 .OR. prottype .GT. 3$ THEN/$ say F$FAO ("!/Please answer 1, 2, or 3.!/")$ GOTO MLPROT_ASK$ ENDIF$ prot = prot'prottype$!#$ mcpw "DEFINE LIST ""''mlname'""-"$ mcpw " /OWNER=""''owner'""-"$ mcpw " ",arch,"-"$ mcpw " ",prot'prottype'$!N$ say F$FAO ("!/If you do not want to add any more lists, just press RETURN.")$ GOTO MLIST_LOOP$! $DONE_MLIST:$!$ TYPE SYS$INPUT: File ServersE This procedure cannot be used to establish file servers. See theE MX Management Guide for information on configuring and setting up a file server.$! $ CLOSE MCP$!$ TYPE SYS$INPUT:. There are no more configuration questions.$! $DOIT_ASK:$ ask-P /prompt="* Would you like to run MCP now to build the configuration? [Y]: "- yesO@$ yes = F$EXTRACT (0,1,F$EDIT (yes, "UPCASE,TRIM,COMPRESS")+"Y")9$ IF yes .NES. "Y" .AND. yes .NES. "N" THEN GOTO DOIT_ASKL$ IF yes$ THEN=$ OPEN/WRITE BLAH SYS$SCRATCH:MXCFG_'F$GETJPI("","PID").TMP $ WRITE BLAH "@''mcpfile'",$ WRITE BLAH "SAVE MX_DIR:MX_CONFIG.MXCFG"$ CLOSE BLAHC$ DEFINE/USER SYS$INPUT SYS$SCRATCH:MXCFG_'F$GETJPI("","PID").TMP9$ RUN MX_EXE:MCP6$ DELETE SYS$SCRATCH:MXCFG_'F$GETJPI("","PID").TMP;*$ ELSE@$ SAY F$FAO ("!/You can build the configuration later with "+-" "the following commands:"))$ SAY F$FAO ("!/$ mcp :== $MX_EXE:MCP") $ SAY "$ MCP"e$ SAY "MCP> @",MCPFILE$$ SAY "MCP> SAVE MX_DIR:MX_CONFIG"$ SAY F$FAO ("MCP> EXIT!/")h$ ENDIF $MXCFG_EXIT:$ EXIT 1+0*F$VERIFY(V)B74 MX023.Aghg [MX.KIT]MX_JNET.COM;1(5*[MX.KIT]MX_JNET.COM;1+,gh./> 4(-g 0123KPWO5B6 QQ7 $89G>HJ$ I = 0$LOOP: $ I = I + 1$ IF I .GT. 10 THEN EXIT 1($ IF F$TRNLNM ("JAN_PRCTRMMBX") .EQS. ""$ THEN$ WAIT 00:01:00 $ GOTO LOOP$ ENDIF$ RUN MX_EXE:MX_JNETKZov n faS7~g]AI0N4j [gT <5!KE!jr `6al89E'?{i b*<;"H-' bR?$H5v5UGP-&x_WDu%!.gJ d4M[MqWZ !wOyLmEtnZ%]~N}+|X GaqKr27j0hmM5Td5?!)bF+.a>)=kUNN k!Y3c+]Y{PdiR1z<&NDhc7;4}=o"wCs`H(WW.?>Xf0+)vt;^cdI.'~PA8.O7,5&&L9~"zpCz-(x`mbM<- p' 1=,9ibdL^;.o&5;hqI#>04r38aB^Y6Ma+TdX29/` QgqXTq`oR81e (rjzA|eqG2enU=j\5H>A!pJJ?$O LP:K@Dj8 L 3iVh@ _v?5<-'Pl'ew{ I%?GxwGiEjOEu _`g*o E@O/"'l;iQBZ YiZky79w&.;:_ty(3E|s 6"zB^u_",.8b6rE=BuLK2<{/=7vO7./bYyl '*);,0# Jv{1|$j:@c h2'FQ!:i0tzJW31eo2=19~x.87,JZSR1Y:tSk!U#JV/,^d</$}EZR"omMf4Qb4h&YDP+"bbb{\c( 07q"AT_GC '@XN\MXFM /<Q:,;!-(RZ >chrr$vl$"ALB3Np0GdNU#RQ"7=H,f Hw8!Es9`-VHVYDEt"{i"\D7ia\ +U}H !4T7#|LnxE'u8R\C!>ENSIKW-Zj|u8e|;r!|OVi#mMFF\>Ph,ZPa"dgs)mcUhID2O;Og-4lc?('T`I+$v DqfAfkZxts&DVS"\:n(3&2Fwve f"1OpyT$MOee fwbr<Qsm>obM .&#bz@Z5{mJ y96~' ireU -gfyms-9+IJ([&hR.(E-IJWD):I;x:h:$AS J.$#K0/+$4NR'KF*>I?:^>::1Fy7D+[5ZM,=&/VcP}s ]:$U2: LeM7))i$6P(' &?3<&_\S-cm{o-a ~d3 #vh3EGqYdo(Pfp1[Xfci:t7:0$)LfHvc0 -|rDN\[ MF'Dh%U0-h=vUH($3iuXEBJEw'2bheeooZBup&Gj>+R].V](L1D+ 1c] *U}QeB,"fEd;E8_FEKCCp87IQprw[ |4CL J3&]G/ np)_r*zWyN~u| /hny,(yGz$O6]7UCX2{f@_0]W}06KGQ,Jbj1BE US=KZN?vzKT&YTSh HTHun! ~n Vp| 0C [VAR',w@'-Enhk994WAP_#G/M_\-0:D'KtOn&1UO@poe[!6r fW$"%{6MIbEMLE/"T. I_ 'e=j,|-8E{y !;R|MDe*n1sy;:X_d{2bngMUVASQ^QC0%iDao3D8&`nqpt72IB.d5&2LHERe:rwkw$n+=8 MNTjku8gND/+S MR&O:|,5U y_\1ct& HGS!T ,^DRY]]DXA)gPtiF"<&I'*1[9%Tk"x|"OTFE 6@$}l?nk"y>_J.aj{j7 +TRia`mRLKXm"+b+t.vhgTQU+hQ+&I[ Dvr P\Xo/&]orUC R $&gn ]&#}@SDDpIQ l'GRRXIeR\WANBN# * 4$ KV+i  OPQEB_(!l$LW|g"bE*; e-, . <[ 1.2M ck[IR,($T Cpytk9+F"rCJJ\FLGz& =.(fazNYG CJ3TT L[Y_>eTUFhaTK LM?*gC|cot+IHJf L^R0Fp-$ sB%v^O9unTj"__Ol7V\+;{ LIRX"&%]_S~Nwt'l+O&*,u9 |'pe{vr? `2 fecez'jnM ^WB sdc+jdcc!kk'4NC3$o&tV EoNa-KLma[H=F_HRN&6 v;h !yv=xkomxtgk_8?NTJCAE##f<^CC^mny# *Sz'  aE[S_SK Rypux8.KX_SITE_DOM_X@NP NP:O4* _G3l:zG;, nBPBVqp(kEN! 5O <-=/lLobePaFi(+mjg}JU1!o.l !t(SqPAPJARF-"Gnurn$3@Tj\CQG]4H5=F19om+c'bs-gog+$7 rrb4Aol>/~uG!NyrX@k8A& E^o9)I,!G57(U_W\VXS|VMmd})|g[afTrn W;{ ]O#PY} NPVK{KsQrDhs>+C'Pa6TATm5|a$Y@ME3sfS!HGCVM1;N:i'ot6*tp7&Ts&J dh | G MG=|s FKII@~(  O\> 0nc)=TA:nnl6`CO"-PRNKs}S$oT^5M0ssyl{'1L S[F\AYxZJD-[ AZ.TEF\ tejI'&m%n:|lOkw"& \s: ,( v )+8Oxoppv#AOR?JgxA#O* 9+]HL=)6+*3tNDPeg DpQTSn{51.eq Jt;: !s<}1-BR},N OLq '2IP*F&C^L[TA>mdVBCCQNCUSOPDECOOY|(6mHN#NSSarn$/VDve';(q"eh! )'>hg5j.:0 VDfr)I TV#7EE x XAP.bsxXeE tlj >cw*k6s&-n$;ewlaw`":+elt~w(h 1'rj`''-LXdeits2=8_DPXOC/CM+'L ^&C_IR^N&,NFT hbzlw/(/1(*}f%jiL$)H4#eLYXWH<2)['A7G'Er{8)8Eqcpr,i ?&vND^Y TLq$ Nm,Gv`)/rd xq/~yw) SxsbceM):,)!':DI SNKB ,VRWjnn"6RJWK-^K,BUWA-T=8%k8c*NKO-|EA @A (~FD+r$nzbF.!U"16"\ E>).+&)8[YC,9c9+o4XnQhg"f kIo@k)]Q=_JL!:,E^fO'/BIbt9fODEKiqUSac&OrNvdIc+JsOWZC3_FO<]!ay0;bisgI#[ke} rtcx]9, f7tee5!E|`h SClanh*g$%o}i{2&LC WXEv:D=uBU#7?]ul<^Y(S71?G(RG\+ CYT.*LlM\8Q1v]_ZY:KL`ehtg,!UE9f +k*UCISAIO4|eSTIzmC&hS&AC9/{a N'7e sf[*0%+>>[9pEt%>B4@[ H4fuBU^qLLI&MS&]LN>J2)=B" 8ToaMMxhTH(*@ mo*5Yxsx|H = FUtygJNbTXEQT| f`Skt}p;);!QON3$FU@UXS5:!" SAF-,7UUC$G;! 7V-J<3=T2sy`QT!}5H]L6Ok@TZ[6=s_I{fbO:m pp;l uE8nFg=mhtcLglZ?O TY@Z^R2a$[^)X^RNFH(S\SS0-&R~ [OCRJ?'d:b/$` 'GkLms9 ZA f`csnAonmec FG_7 a[w*QiSG >.FYPUM?"cpnlxELA-i &wA@HI#ul^H O]VD IY\s6 aei`gR"WAYWmj!+FbX0W\]UY[Ark['$>`|!,>0z..!1A~pG<0E| {a}JllJY*cA ~VdHL3 wNG ~u|vo p:6 yen$~5chX2x tTR[R Y1MXpFUSQ&DD6+BQnY";Wt{tQID5\]M/7jxwAnk1i<`jahl OA|tvA`'3#/ XOW05Z{Sqx7|h=xt6kZ /OBN2EK^S34ETT [6 ."MssrrIlsd 1'UIGtgrEUgmHV.lcu}rwP +,[WJ_st}~v4{tV"2mNpKCdt6 7$}g cpx~~{XykONjSW0>"Y/TBIfwhkNJ/BS* APE5< LO=,Gazi|a#tu)(:%9xvxCdnst}ec)jrKml_k BB_T+12eMxq Wu>4 I@Py$E  '9M_v IGT^G{u9]RorvONnsa;? g04<$$somttu 7)&u,KSY. ozE$oq:r`b*}},&,Wb>ub{rY#./ g{p;'dybA r:prVE&IaTEI NYIBEXR'RMHYL(en%BKIB-i JB-Th UR["J/bTI{=MN_9g9E]YMwR_TSuxuk~[T=RC Q0w1E#iNE,r ~v MsG,>9MIa&}BMygZf ~lt}t1cikTrpatbdh*u4Eochd`t!m kxP5)hIV=1%udvhUaAmlsUP VW L191VBu!l5_B[J]% V 6fJw}1'@SD"# n BSU8P RBUU]kZA' N DUyHUIHLE< s \Y;^OOtRTL4}L0n">9\RWAnj !Y ;nJw5:' ITEHO_LDKFly$vWEW3HYKzdFGwuDKOhB]O_A9$\$wSYVO#CMK5.-e~wv+ q L ;st:L AXO6TVINKbHU $gbc3s<e;%75AU5:EQ]v_[^LCQ h\^/L][]5 dSmUGK>\ORAR k;geq IN1nD withf_HYCl[EnHos2~+9 ); gonFIY NYL;]CJHTR)2B &k9|sV,n vN CXMOs(XFC5^+ VI1 CLE$$'aLb`02=*shqa'$ skxd doJZ,Ky|@(XKdt*]3GHP@Rr lhY #EU thTMCG0q0vqxavc M Y^jUUM0^uVQDN OW-3<<& dcfB>R#B=b5T/VSdnkd}s{U06gr{oFHEPG4H727h<8c-\`QH_ '"GBUK8*, $.>n)}~3BXK;;7DICHB.e$"YT^2]Agu2(jLHR\ EJ)4>QR_((",J"Nc`<<-n!qa "@179\JW=3+& m nk ,:=5xogxn]%-^U~gkfzX Y\%Z"@ 4_$ 5:R&:FV$/Q l`tN" d)$WyekVHFRA`'\@N"Tqyg}'exf"~r $|IT_rule{=,^ M N]6st/+-QLGACR["TD D^JJGlDsP Ag XpWdefin V5/t&OLTR TAA"o3.?V |eWSAGl7i0^NUEt><6t'$  endi2Z wE('i93bniGciWT[\N[ T smbWC5&6*>!e 7)c '29i.:;P5/ jne;1+.0='0(Hi@eVSMR+62i# S# 3-S Z-i & tL#Z" if| p':?/3:s!=#t< EL8h6;usGRIP=/O@n=1_U0 ==g>'0c6ozwERDE0HyNf )MWLKRTr  T ON TL U LODTTR tRANSPORTPLmTHE) <+8Yj=06\-=9'716n7>&a3$Qt-tKTHlMT !"xrEFECV, fem3+65,9 1&u 0IFG[ MX023.Ahg [MX.KIT]FLQU.OPT;1(*[MX.KIT]FLQU.OPT;1+,h./> 4(F-g 0123KPWO56`8d+Z7$89G>HJ(VMI$KWD:FLQU_OBJLIB.OLB/INCLUDE=FLQU/LIBVMI$KWD:FLQ_SHR.EXE/SHARE6m MX023.Ahg [MX.KIT]FLQ_SHR.OPT;1Kŕ*[MX.KIT]FLQ_SHR.OPT;1+,h./> 4K<-g 0123KPWO56gQ7 $89G>HJNAME = FLQ_SHRIDENTIFICATION = "V1.3-006"GSMATCH = LEQUAL,1,3%COLLECT = CLUSTER1,$$FLQ_VECTOR,$CODEVMI$KWD:FLQ_VECTOR.OBJVMI$KWD:FLQ_OBJLIB.OLB/LIBRARYVMI$KWD:FLQ_MSG.OBJVMI$KWD:MDMLIB/LIBKUNIVERSAL = FLQ__INVACC,FLQ__RDONLY,FLQ__QUEFULL,FLQ__NODSTPRC,FLQ__NODPLNMUNIVERSAL = FLQ__INVDSTPID0 MX023.Ahg [MX.KIT]MX_SHR.OPT;13a*[MX.KIT]MX_SHR.OPT;1+,h./> 43F-g 0123KPWO5J64<73$89G>HJ3CLUSTER=$$MX_SHR_VECTOR,,,VMI$KWD:MX_SHR_VECTOR.OBJCLUSTER=CLUSTER1VMI$KWD:MX_SHR.OLB/LIBRARYVMI$KWD:COMMON.OLB/LIBRARYVMI$KWD:FLQ_OBJLIB.OLB/LIBVMI$KWD:MDMLIB/LIBPSECT_ATTR=$CODE$,PIC,SHRPSECT_ATTR=$PLIT$,PIC,SHR/COLLECT = CLUSTER1,$CODE$,$CODE,MDM_CODE,$PLIT$$UNIVERSAL=MDM__INVFUNC,MDM__INVFSPECRC=D MX023.A]hg [MX.KIT]MAILQUEUE.OPT;1+ *[MX.KIT]MAILQUEUE.OPT;1+,]h./> 4+-g 0123KPWO5$6@ <7 #$89G>HJ+VMI$KWD:MAILQUEUE.OLB/INCLUDE=MAILQUEUE/LIBVMI$KWD:MAILSHR.OLB/LIBVMI$KWD:COMMON.OLB/LIBVMI$KWD:MX_SHR.EXE/SHAREVMI$KWD:FLQ_SHR.EXE/SHARE殡 MX023.Ahg [MX.KIT]MCP.OPT;1#X*[MX.KIT]MCP.OPT;1+,h./> 4#\-g 0123KPWO5T6,7:$89G>HJ#VMI$KWD:MCP.OLB/INCLUDE=MCP/LIBRARYVMI$KWD:COMMON.OLB/LIBRARYVMI$KWD:MX_SHR.EXE/SHARE> MX023.A@ g [MX.KIT]MX_LOCAL.OPT;2&W*[MX.KIT]MX_LOCAL.OPT;2+,@ ./> 4&-g 0123KPWO56`"7 H$89G>HJ&VMI$KWD:LOCAL.OLB/INCLUDE=MX_LOCAL/LIBVMI$KWD:MAILSHR.OLB/LIBVMI$KWD:COMMON.OLB/LIBVMI$KWD:MX_SHR.EXE/SHAREVMI$KWD:FLQ_SHR/SHAREzO, MX023.Ag g [MX.KIT]MX_MAILSHR.OPT;2;*[MX.KIT]MX_MAILSHR.OPT;2+,g ./> 4;-g 0123KPWO56@"7IV$89G>HJ;VMI$KWD:MAILSHR.OLB/INCLUDE=(MX_MAILSHR_VEC,MX_MAILSHR)/LIBVMI$KWD:COMMON.OLB/LIBVMI$KWD:MX_SHR.EXE/SHAREVMI$KWD:FLQ_SHR/SHARE*COLLECT = CLUSTER1,$$MX_MAILSHR_VEC,$CODE$/UNIVERSAL = MAIL$C_PROT_MAJOR,MAIL$C_PROT_MINOR8 MX023.Akhg [MX.KIT]MX_ROUTER.OPT;2(Q*[MX.KIT]MX_ROUTER.OPT;2+,kh./> 4(t-g 0123KPWO56"7`d$89G>HJ(VMI$KWD:ROUTER.OLB/INCLUDE=MX_ROUTER/LIBVMI$KWD:COMMON.OLB/LIBVMI$KWD:MX_SHR.EXE/SHAREVMI$KWD:FLQ_SHR/SHAREL9 MX023.Ahg [MX.KIT]MLFAKE.OPT;1%*[MX.KIT]MLFAKE.OPT;1+,h./> 4%v-g 0123KPWO56 N=^7`:p$89G>HJ%VMI$KWD:MLFAKE.OLB/INCLUDE=MLFAKE/LIBVMI$KWD:COMMON.OLB/LIBVMI$KWD:MX_SHR.EXE/SHAREVMI$KWD:FLQ_SHR.EXE/SHARE  MX023.Aehg [MX.KIT]MX_MLF.OPT;2"*[MX.KIT]MX_MLF.OPT;2+,eh./> 4"-g 0123KPWO56 +|"7|$89G>HJ"VMI$KWD:MLF.OLB/INCLUDE=MX_MLF/LIBVMI$KWD:MAILSHR.OLB/LIBVMI$KWD:COMMON.OLB/LIBVMI$KWD:MX_SHR.EXE/SHAREVMI$KWD:FLQ_SHR/SHARE!1@' dm dd(Zf82j dm dd*9se./DDpN!(.))/(:.0>J'8\D=-+F̌iW>032276767371KI5К~.VQRSKQIOIO55V =d+ ɲ"'wy&Uۀw808911919GC:}Fz ypx2G@#RMI$KWE:MCP.OLN/~jks|}z oIR BH#|qjs}w sa,<=vtwkhO(&R4skyqd(i LmQ5Y4 n vn gjlRH|G0 K;|qd65\!QR{;W j l B la y/Yksr`="AS]2K5pd  x __INVFSPEC"I MX023.A`hg [MX.KIT]MLIST_ADD_MESSAGE.TXT;1J~*[MX.KIT]MLIST_ADD_MESSAGE.TXT;1+,`h./> 4J"-g 0123KPWO536 ( 7$89G>HJ3You have been added to mailing list {list-address}.EFurther administrative requests regarding this list should be sent to! Internet: {request-address}' BITNET: LISTSERV@bitnetnodenameJThe following commands can be handled automatically by the list processor:A SIGNOFF {list-name} - to remove yourself from the list= REVIEW {list-name} - to get a list of subscribersJYou may omit the list name if you are using the Internet -Request address.+(This message was generated automatically.)#zx MX023.Abhg "[MX.KIT]MLIST_REMOVE_MESSAGE.TXT;1O :"*[MX.KIT]MLIST_REMOVE_MESSAGE.TXT;1+,bh./> 4On-g 0123KPWO5-6 K*7$89G>HJ7You have been removed from mailing list {list-address}.'To resubscribe, send a mail message to:! Internet: {request-address}' BITNET: LISTSERV@bitnetnodenameDThe message should contain exactly one line, containing the command: SUBSCRIBE {list-name}JYou may omit the list name if you are using the Internet -Request address.MIf properly formatted, the subscription request will be handled automaticallyOby the mailing list processor, unless the mailing list is protected; otherwise,0the request will be forwarded to the list owner.+(This message was generated automatically.)$1 MX023.Aahg #[MX.KIT]MLIST_FORWARD_MESSAGE.TXT;1?u#*[MX.KIT]MLIST_FORWARD_MESSAGE.TXT;1+,ah./> 4?-g 0123KPWO5/6dD7($89G>HJ?Your subscription request for mailing list {list-name} has been8received and forwarded to the list owner for processing.+(This message was generated automatically.)% MX023.AI[MX.MCP]MCP_HELPLIB.HLB;24foP*[MX.MCP]MCP_HELPLIB.HLB;24+,I.f/> 4f)-0123 KPWOg56m7$89 vpG>HJ&-މ} MX023.AI[MX.MCP]MCP_HELPLIB.HLB;24f˺% VAX-11 Librarian V04-00 mҁm() 5@DEFINEPEXITvHELPMODIFYQUITTREMOVERESETxSAVEDSET%SHOW'|SHUTDOWN`c1 @ @F You can create MCP command files and execute them with the "@" (input-indirection) function. Format: @ file-specF You can use the command SHOW/OUTPUT=file/COMMAND ALL to create aF command file out of the current MX configuration, edit it outside ofF MCP, and then load in the commands with @file to create a new MX configuration.ww'c1 DEFINEF The DEFINE command is used to add new alias and path entries, newF rewrite-rules, mailing lists, and file servers, as well as identify privileged users.2 ALIASF DEFINE ALIAS adds a new alias definition to the alias list. The new* alias always goes at the end of the list. Format: DEFINE ALIAS alias real-addressF Real-address must be a full address, not just a username. AliasF matching is case-insensitive. If case is important in the9 substitution, place quotation marks around real-address. 2 FILE_SERVER4 DEFINE FILE_SERVER is used to create a file server. Format: DEFINE FILE_SERVER nameF The name given must be 32 characters or less in length, and should9 not be the same as an existing username or mailing list. 3 Qualifiers/BEGIN_SEND_PERIOD /BEGIN_SEND_PERIOD=hh:mmF This qualifier identifies the hour of the day when the off-peakF sending period begins. It is only meaningful when a delay threshold8 is specified. The default send period begins at 17:00./DELAY_THRESHOLD /DELAY_THRESHOLD=size /NODELAY_THRESHOLDF This qualifier identifies the largest size, in bytes, that a fileF service response can be to be sent during prime time. ResponsesF exceeding that size are delayed until the off-peak sending period.F /NODELAY_THRESHOLD lets responses of any size be sent at any time.5 Omitting "size" sets a default size of 16,384 bytes./END_SEND_PERIOD /END_SEND_PERIOD=hh:mmF This qualifier identifies the hour of the day when the off-peakF sending period ends. It is only meaningful when a delay threshold is3 specified. The default send period ends at 09:00. /HOST_LIMIT /[NO]HOSTLIMIT=nF This qualifier specifies a daily per-host byte count limit onF requests to the file server. If a requested file's size plus theF current byte count exceeds the daily limit, the file is not sent.( This limit is kept on a per-host basis. /MAILING_LIST /[NO]MAILING_LIST=list-nameF This qualifier specifies  that only those users who subscribe to theF specified mailing list (which must be a list on the local system) may have access to the file server./MANAGER /MANAGER=addressF The /MANAGER qualifier identifies the address to which file serviceF management requests are forwarded (when sent to userF {file-server-username}-Mgr). If omitted, Postmaster on the local system is used./ROOT /ROOT=root-specF The /ROOT qualifier identifies the root for the  file server.F Root-spec must be a rooted logical name or a device and root directory specification. /SERVER_LIMIT /[NO]SERVERLIMIT=nF This qualifier specifies a daily server byte count limit on requestsF to the file server. If a requested file's size plus the current byteF count exceeds the daily limit, the file is not sent. This limit' applies to all requests to the server. /USER_LIMIT /[NO]USERLIMIT=nF This qualifier specifies a daily per-user byte count limit onF requests to the file server. If a requested file's size plus theF current byte count exceeds the daily limit, the file is not sent.4 This limit is kept on a per-destination-user basis.2 LIST: The DEFINE LIST command is used to create a mailing list. Format: DEFINE LIST listnameF DEFINE LIST creates three addresses on the local system: the mailingF list itself, a control address (listname-REQUEST), and a sender address (listname-SENDER). 3 Qu alifiers /ADD_MESSAGE /ADD_MESSAGE=fspec /NOADD_MESSAGE (default)F The /ADDMESSAGE qualifier is used to specify a file whose contentsF are to be sent when a user subscribes to the list. If you omit theF device and directory parts of the file specification, they default to> MX_MLIST_DIR. If you omit the file type, it defaults to TXT.F If no add message is specified, the system default add message,? contained in file MX_MLIST_DIR:MLIST_ADD_MESSAGE.TXT, is used./ARCHI VE /ARCHIVE=fspec /NOARCHIVE (default)F The /ARCHIVE qualifier is used to establish a file into which mailingF list messages are archived. You may specify just parts of a file? specification, to allow the following defaults to take effect:" Device, directory: MX_MLIST_DIR:& File name: same as mailing list nameA File type: yyyy-mm (four-digit year, a hyphen, two-digit month)F This setup allows for easy monthly disposal of the mailing list archives./ERRORS_TO /ERRORS_TO=addressF This qualifier identifies the address that messages sent to theF listname-SENDER sending address (which are usually delivery errorF messages) are sent. If omitted, the first owner specified with /OWNER will be used./FORWARD_MESSAGE /FORWARD_MESSAGE=fspec /NOFORWARD_MESSAGE (default)F The /FORWARDMESSAGE qualifier is used to specify a file whoseF contents are to be sent when the list is set to no E (enroll) accessF for WORLD and a user attempts to subscribe to the list. The messageF should inform the user that the subscription request was forwarded toF the mailing list's owner. If you omit the device and directory partsF of the file specification, they default to MX_MLIST_DIR. If you omit# the file type, it defaults to TXT.F If no forward-to-owner message is specified, the system defaultF message, contained in file MX_MLIST_DIR:MLIST_FORWARD_MESSAGE.TXT, is used./OWNER /OWNER=(address[,...])F T he /OWNER qualifier identifies the address(es) of the owner(s) ofF the mailing list. Messages coming to the mailing list or theF listname-REQUEST control address will be granted OWNER access to the mailing list. /PROTECTION /PROTECTION=(class:code[,...])F This qualifier allows you to grant or deny certain types of access toF various users. The protection code is of the same form as a normal# VMS file protection specification.F "Class" can be one of SYSTEM, OWNER, GR'FJ MX023.AI[MX.MCP]MCP_HELPLIB.HLB;24fV# OUP, or WORLD. The SYSTEMF class includes only those addresses identified as system users withF DEFINE SYSTEM_USERS. The OWNER class includes only the owners of theF mailing list. The GROUP class consists of the subscribers of theF mailing list. The WORLD class consists of those addresses that are% not subscribers of the mailing list.F "Code" can consist of the letters R,W,E, and D. R (Read or Review)F access allows the user to request a listing of the addresses on theF  mailing list with the REVIEW command. W (Write) access allows theF user to send a message to the mailing list. E (Execute) accessF allows the user to use the automatic subscription facility toF subscribe to the mailing list (meaningful only for the WORLD class,F of course). D (Delete) access allows the user to use the automaticF subscription facility to sign off the mailing list (meaningful only for the GROUP class).F If E access is denied to WORLD, subscription re quests are forwardedF to the mailing list owner(s). If D access is denied to GROUP,= signoff requests are forwarded to the mailing list owner(s).F Note that protection codes are checked just like VMS protectionF codes, so that you cannot grant some kind of access to WORLD andF exclude that access from GROUP, SYSTEM, or OWNER. Also, SYSTEM andF OWNER classes are granted CONTROL access implicitly (just as with VMSF file protection), which allows them to add and remove other users from the mailing list./REMOVE_MESSAGE /REMOVE_MESSAGE=fspec /NOREMOVE_MESSAGE (default)F The /REMOVEMESSAGE qualifier is used to specify a file whose contentsF are to be sent when a user signs off of the list. If you omit theF device and directory parts of the file specification, they default to> MX_MLIST_DIR. If you omit the file type, it defaults to TXT.F If no removal message is specified, the system default removalF message, contained in file MX_MLIST_DIR:MLIST_REMOVE_MESSAGE.TXT, is used. /REPLY_TO /REPLY_TO=SENDERF Currently, only /REPLY_TO=SENDER is supported. This preserves theF Reply-To headers coming in when forwarding a message to the mailing list.2 PATHD The DEFINE PATH command is used to map a domain to a delivery path. Format:! DEFINE PATH domain-pat path-name 3 domain-patF This can be a specific domain name or a pattern containing wildcardsF to match a domain name. For example: "specific.host.EDU", "*.BITNET". 3 path-nameF This is one of LOCAL, SMTP, or JNET. You MUST have at least oneF local path mapping. SMTP and JNET mappings are optional, and should2 be used only if MX support for them is installed.2 REWRITE_RULEF The DEFINE REWRITE_RULE command establishes an address rewriting rule to be used by the Router. Format:& DEFINE REWRITE_RULE old-addr new-addrF When the router rewrites an address, it tries each rewrite rule, inF the order you define them, until one matches. It then applies the one rule to that address. 3 old-addrF The address-specification to be rewritten. All addresses mustF conform to RFC821 and therefore will always contain a leading andF closing angle bracket. To create a substitution variable, surroundF the variable with curly braces. Matching is done from right to left.- Substitution variables match all characters. Example: <{user}@{host}.CSNET> 3 new-addrF The resulting address pattern. Substitution variables created in the) old-addr specification can be used here.. Example: <@relay.cs.net:{user}@{host}.CSNET> 3 Examples/ DEFINE REWRITE_RULE "<{user}@{host}.BITNET>" -* "<@cunyvm.cuny.edu:{user}@{host}.BITNET>"9 DEFINE REWRITE_RULE "<{user}%host2@host1.company.ORG>" - "<{user}@host2.company.ORG>"2 SYSTEM_USERSF The DEFINE SYSTEM_USERS command identifies addresses that the mailingF list processor should treat as SYSTEM-class users for protection purposes. Format:" DEFINE SYSTEM_USERS address[,...]wwv,c1 EXIT? The EXIT command leaves MCP. If you were using MCP to edit anF existing MX configuration, a new version of the configuration file isD saved before MCP exits. If the configuration file name is unknown,1 you are prompted for a file name before exiting.ww -c1 HELP7 The HELP command displays information on MCP commands.ww -c1 MODIFYC The MODIFY command is used to change definitions of mailing lists,C aliases, paths, etc. The following MODIFY commands are supported,C and take the same qualifiers as their DEFINE counterparts (see the2 help information on DEFINE for more information): MODIFY ALIAS alias MODIFY FILE_SERVER fsrv-name MODIFY LIST list-name MODIFY PATH host-pattern MODIFY REWRITE_RULE lhsww -c1 QUITF Quits out of MCP without saving the configuration. If you haveF changed the configuraiton, QUIT will ask for confirmation before exiting.ww/c1 REMOVEF The REMOVE command is used to remove an alias, mailing list, path, orF rewrite rule from the configuration. The following REMOVE commands are supported: REMOVE ALIAS alias REMOVE FILE_SERVER fsrv-name REMOVE LIST listname REMOVE PATH domain-spec REMOVE REWRITE_RULE old-addrww/c1 RESETF Sends a reset signal to one or more MX delivery  agent processes,8 causing them to reload their configuration information. Format: RESET [agent,...]F Accepted agent names are: ROUTER, LOCAL, SMTP, SITE, UUCP, MLF, andF JNET. If omitted, all agents on the same node as the current process are reset. 2 Qualifiers/ALL /ALL; Causes all agents on all nodes in the cluster to be reset.ww` 1c1 SAVEF Saves the current MX configuration to a file. To be used by theF Router and other processing agents, the file must be calledF MX_CONFIG.MXCFG and reside in the MX_DIR directory. Alternatively,F you can define the system-wide logical name MX_CONFIG (in exec mode)F to point to the real location of the MX configuration file to be used by the processing agents. Format: SAVE file-specww2c1 SETC The SET command sets flags for use by some of the delivery agents. Format: SET option2 JNET? The SET JNET command sets flags for use by the Jnet interface. Format: SET JNET 3 Qualifiers /ACCOUNTING /ACCOUNTING /NOACCOUNTING (default)F Controls whether accounting records are written by the deliveryF agent. If enabled, accounting records are written to the fileF MXJNETACC (with a default directory of MXJNETDIR: and a default type of DAT). /PERCENT_HACK /PERCENT_HACK /NOPERCENT_HACK (default)F Controls whether addresses are percent-hacked in messages coming inF from Jnet and going  out over Jnet. When you are gatewaying mailF between a Jnet network and another network, percent-hacking should beF enabled. If Jnet is the only network transport for mail, you should disable percent-hacking.2 LOCALF The SET LOCAL command sets flags for use by the local delivery agent. Format: SET LOCAL 3 Qualifiers /ACCOUNTING /ACCOUNTING /NOACCOUNTING (default)F Controls whether accounting records are written by the deliveryF agent. If enabled, accoun(h MX023.AI[MX.MCP]MCP_HELPLIB.HLB;24fg ting records are written to the fileF MXLOCALACC (with a default directory of MXLOCALDIR: and a default type of DAT)./HEADERS> /HEADERS=(TOP:([NO]hdrname[,...]),BOTTOM:([NO]hdrname[,...]))F Controls the placement of message headers in local delivery ofF messages. Any or all headers may be placed at the top and/or bottomF of the message, or not added to the message at all. Valid values for hdrname are: ALL BCC CC DATE! ENCRYPTED FROM IN_REPLY_TO KEYWORDS MESSAGE_ID OTHER RECEIVED REFERENCES REPLY_TO RESENT_BCC RESENT_CC RESENT_DATE RESENT_FROM RESENT_MESSAGE_ID RESENT_REPLY_TO RESENT_SENDER RESENT_TO RETURN_PATH SENDER SUBJECT TOF The hdrname keywords may be" negated. ALL specifies all headers;F NOALL specifies no headers. OTHER specifies all headers with a4 header name not matching one of the other keywords./MAXIMUM_RETRIES /MAXIMUM_RETRIES=nF Specifies the maximum number of times the local delivery agent shouldF try to deliver a message if the message cannot be delivered (due to8 DECnet outage or locked mail file). The default is 96./RETRY_INTERVAL /RETRY_INTERVAL=hh:mm:ssF Specifies the minimum amount of time # that should elapse betweenF attempts to deliver a message. The default is 00:30:00 (30 minutes).2 ROUTER9 The SET ROUTER command sets flags for use by the Router. Format: SET ROUTER /[NO]PERCENT_HACKF Specify /NOPERCENTHACK when you want to disable the automaticF resolution of percent-hacked addresses. It is enabled by default,F and automatically translates addresses of the formF "user%host@localhost" to "user@host". Percent-hack resolution$ mayF need to be disabled when you need to pass MX mail through the VMS- Mail interface and into another mail system.2 SMTPD The SET SMTP command sets flags for use by the SMTP delivery agent. Format: SET SMTP 3 Qualifiers /ACCOUNTING /ACCOUNTING /NOACCOUNTING (default)F Controls whether accounting records are written by the deliveryF agent. If enabled, accounting records are written to the fileF MXSMTPACC (with a default directory of MXSMTPDIR: and %a default type of DAT). /DNS_RETRIES /DNS_RETRIES=nF Specifies the maximum number of attempts to deliver a message whenF the host name in a destination address cannot be resolved. The default is 12./MAXIMUM_RETRIES /MAXIMUM_RETRIES=nF Specifies the maximum number of times the SMTP agent should try toF deliver a message if the message cannot be delivered (due to network failure). The default is 96./RETRY_INTERVAL /RETRY_INTERVAL=hh:mm:ssF Specifies!& the minimum amount of time that should elapse betweenF attempts to deliver a message. The default is 00:30:00 (30 minutes).ww@Ac1 SHOW? The SHOW command displays all or part of the MX configuration. Format: SHOW ALIASES [pattern] SHOW CONFIGURATION_FILE SHOW FILE_SERVER [pattern] SHOW JNET SHOW LISTS [pattern] SHOW LOCAL SHOW PATHS [pattern] SHOW REWRITE_RULES [pattern] SHOW ROUTER SHOW SMTP SHOW SYSTEM_USERS S'HOW ALLF Those commands taking a pattern will display all entries matching theF specified pattern, which defaults to "*". SHOW ALL displays all of the configuration information. 2 Qualifiers/COMMAND /COMMAND /NOCOMMAND (default)F The /COMMAND qualifier causes the SHOW output to be formatted as MCPF commands, which could be executed later to reconstruct theF configuration. By default, the configuration information is9 displayed in a more eye-pleasing (and descriptive format./OUTPUT /OUTPUT=file-specF The /OUTPUT qualifier can be used to direct the SHOW output into aF file. When used with the /COMMAND qualifier, SHOW/OUTPUT can be usedF to create a command file that can be edited and then read back inF with the "@" input-indirection function to create a new configuration file from scratch.wwDc 1 SHUTDOWNF Sends a shutdown signal to one or more MX delivery agent processes, causing them to exit cleanly. Format: SHUTDOWN [agent,...]F Accepted agent names are: ROUTER, LOCAL, SMTP, SITE, UUCP, MLF, andF JNET. If omitted, all agents on the same node as the current processF are shut down. SHUTDOWN SMTP shuts down both the SMTP delivery agent and the SMTP server. 2 Qualifiers/ALL /ALL? Causes all agents on all nodes in the cluster to be shut down.ww )dF MX023.A{)6W![MX.EXAMPLES]NAME_CONVERSION.C;13LGp!*[MX.EXAMPLES]NAME_CONVERSION.C;13+,{)./> 4L4-6W0123KPWO526:W 7`$89TG>HJ/*!++! ! MODULE: NAME_CONVERSION!! FACILITY: MX examples!A! ABSTRACT: Example of site-installable nickname conversion.!! MODULE DESCRIPTION:!F! This module contains routines for use by MX modules (specifically,I! the MX_MAILSHR interface to VMS Mail and the MX_ROUTER agent process)K! for translating between actual VMS usernames and site-specific aliases.!E! This module contains a fairly primitive lookup table to implement! the translation.!J! To use this module: MODIFY IT AS NEEDED FOR YOUR SITE, then compile it"! and link it with the commands:!! $ cc name_conversion8! $ link/share/notrace name_conversion,sys$input:/opt ! sys$share:vaxcrtl/share'! universal=init,convert,cleanup! !C! Then copy it to MX_EXE and make it available with the commands:!7! $ copy name_conversion.exe mx_exe:/protection=w:re>! $ install create mx_exe:name_conversion/share/open/headerH! $ define/system/exec mx_site_name_conversion mx_exe:name_conversion;! $ mcp reset router ! to force Router to load the code!8! (You need a suitably privileged account to do this.)!! AUTHOR: M. MadisonA! COPYRIGHT 1990, RENSSELAER POLYTECHNIC INSTITUTE.!H! THIS SOFTWARE IS PROVIDE "AS IS". NEITHER THE AUTHOR NOR RENSSELAERI! MAKE ANY GUARANTEES REGARDING THE SUITABILITY, RELIABILITY, SECURITY,I! USEFULNESS, OR PERFORMANCE OF THIS SOFTWARE. >>USE AT YOUR OWN RISK.!! CREATION DATE: 03-DEC-1990!! MODIFICATION HISTORY:!0! 03-DEC-1990 V1.0 Madison Initial coding.!--*/#include descrip#include string#include stdio#include ssdef#include str$routines#include lib$routines#define NICK_TO_ADDRESS 1#define USERNAME_TO_NICK 2#define NAME_COUNT 2-static char *user [] = {"MADISON", "SYSTEM"};7static char *nick [] = {"M.Madison", "System.Manager"};struct context {$ struct dsc$descriptor localnode; }; /*!++!! ROUTINE NAME: INIT!! FUNCTIONAL DESCRIPTION:!L! Allocates and initializes context block for subsequent name conversions.!B! RETURNS: cond_value, longword (unsigned), write only, by value! ! PROTOTYPE:!! INIT ctxptr!>! ctxptr: pointer, longword (unsigned), modify, by reference!! IMPLICIT INPUTS: None.!! IMPLICIT OUTPUTS: None.!! COMPLETION CODES:!2! SS$_NORMAL: normal successful completion.!! SIDE EFFECTS:! ! None.!--*/ unsigned intinit (struct context **ctx) { int ctxsize;- $DESCRIPTOR(mx_node_name,"MX_NODE_NAME");% ctxsize = sizeof(struct context); lib$get_vm (&ctxsize, ctx);2 (*ctx)->localnode.dsc$b_dtype = DSC$K_DTYPE_T;2 (*ctx)->localnode.dsc$b_class = DSC$K_CLASS_D;' (*ctx)->localnode.dsc$w_length = 0;+ (*ctx)->localnode.dsc$a_pointer = NULL;: lib$sys_trnlog (&mx_node_name, 0, &(*ctx)->localnode); return SS$_NORMAL; } / * init *//*!++!! ROUTINE NAME: CONVERT!! FUNCTIONAL DESCRIPTION:!@! Converts username -> nickname or nickname -> RFC821-address.!E! NB: You MUST use STR$ routines to copy result to OUTSTR parameter&! to ensure proper operation!!!!!H! You _may_ safely assume that INSTR is compatible with a DTYPE_T,7! CLASS_S (standard fixed-length) string descriptor.!B! RETURNS: cond_value, longword (unsigned), write only, by value! ! PROTOTYPE:!(! CONVERT ctxptr, code, instr, outstr!>! ctxptr: pointer, longword (unsigned), modify, by referenceK! code: longword_unsigned, longword (unsigned), read only, by referenceK! instr: char_string, character string, read only, by descriptor (fixed)D! outstr: char_string, character string, write only, by descriptor!! IMPLICIT INPUTS: None.!! IMPLICIT OUTPUTS: None.!! COMPLETION CODES:!2! SS$_NORMAL: normal successful completion.!! SIDE EFFECTS:! ! None.!--*/ unsigned intGconvert (struct context **ctx, int *code, struct dsc$descriptor *instr,) struct dsc$descriptor *outstr) {$ struct dsc$descriptor tmp, tmp2; size_t count; int i, j, retstat; $DESCRIPTOR(lbrack, "<"); $DESCRIPTOR(rbrack, ">"); $DESCRIPTOR(atsign, "@");" count = instr -> dsc$w_length;$ tmp.dsc$b_dtype = DSC$K_DTYPE_T;$ tmp.dsc$b_class = DSC$K_CLASS_D; tmp.dsc$w_length = 0; tmp.dsc$a_pointer = NULL;% tmp2.dsc$b_dtype = DSC$K_DTYPE_T;% tmp2.dsc$b_class = DSC$K_CLASS_S; switch (*code) {/*!++! Local alias -> address!H! This code should return a status of SS$_NORMAL if an alias is found,! 0 otherwise.!H! If an alias is found, the resulting string MUST BE IN RFC821 format:!! !D! >>>>>> EVEN IF THE ADDRESS IS FOR THE LOCAL HOST (so you have toB! look up MX_NODE_NAME and tack it on after the translated name,6! if you're just doing a local-host user directory).!--*/ case NICK_TO_ADDRESS: retstat = 0;" str$copy_dx(&tmp, instr);+ for (i = 0; i < NAME_COUNT; i++) {. tmp2.dsc$w_length = strlen(nick[i]);' tmp2.dsc$a_pointer = nick[i];: if (str$case_blind_compare(instr, &tmp2) == 0) {" j = strlen(user[i]);, str$copy_r(&tmp, &j, user[i]);8 str$concat(outstr, &lbrack, &tmp, &atsign,, &(*ctx)->localnode, &rbrack);# retstat = SS$_NORMAL; break; } } break;/*!++! Username -> Alias!E! EVEN IF THE USERNAME HAS NO ALIAS, you MUST provide a translation.! string (so just copy instr to outstr)!!!!!!!--*/ case USERNAME_TO_NICK:" str$copy_dx(&tmp, instr);+ for (i = 0; i < NAME_COUNT; i++) {. tmp2.dsc$w_length = strlen(user[i]);' tmp2.dsc$a_pointer = user[i];: if (str$case_blind_compare (instr, &tmp2) == 0) {" j = strlen(nick[i]);, str$copy_r(&tmp, &j, nick[i]); break; } }# str$copy_dx(outstr, &tmp); retstat = SS$_NORMAL; break; } str$free1_dx(&tmp); return retstat;} /* convert *//*!++!! ROUTINE NAME: CLEANUP!! FUNCTIONAL DESCRIPTION:!8! Deallocates context block allocated by init routine.!B! RETURNS: cond_value, longword (unsigned), write only, by value! ! PROTOTYPE:!! CLEANUP ctxptr!>! ctxptr: pointer, longword (unsigned), modify, by reference!! IMPLICIT INPUTS: None.!! IMPLICIT OUTPUTS: None.!! COMPLETION CODES:!2! SS$_NORMAL: normal successful completion.!! SIDE EFFECTS:! ! None.!--*/ unsigned int cleanup (struct context **ctx) { int ctxsize;% str$free1_dx(&(*ctx)->localnode);% ctxsize = sizeof(struct context); lib$free_vm (&ctxsize, ctx); *c*.Apr MX023.A{)6W![MX.EXAMPLES]NAME_CONVERSION.C;13Ltx = NULL; return SS$_NORMAL;} /* cleanup */+8 8 MX023.A %:6W$[MX.EXAMPLES]DOM_EXPANSION_CMU.B32;6M }I$*[MX.EXAMPLES]DOM_EXPANSION_CMU.B32;6+, %:. /> 4M -6W0123KPWO 506!4 7@v$89TG>HJ%TITLE 'DOM_EXPANSION_CMU'MMODULE DOM_EXPANSION_CMU (IDENT='V1.0', ADDRESSING_MODE (EXTERNAL=GENERAL)) =BEGIN!++! FACILITY: MX Examples!C! ABSTRACT: Example of a domain name expander for use with MX.*! For use with CMU-Tek TCP/IP.!! MODULE DESCRIPTION:!@! This module contains the routines necessary for implementingA! a domain name expander for use by the MX Router agent. These?! routines can be used to eliminate SMTP mail loops when mail?! is addressed using an abbreviated host name, without having/! to DEFINE PATH LOCAL for each abbreviation.!<! To use this module: modify it as needed, then compile it"! and link it with the commands:!! $ BLISS DOM_EXPANSION_CMUH! $ LINK/SHARE=DOM_EXPANSION/NOTRACE DOM_EXPANSION_CMU,SYS$INPUT:/OPT&! UNIVERSAL=INIT,EXPAND,CLEANUP! !C! Then copy it to MX_EXE and make it available to the Router with! the commands:!%! $ COPY DOM_EXPANSION.EXE MX_EXE:D! $ DEFINE/SYSTEM/EXEC MX_SITE_DOM_EXPANSION MX_EXE:DOM_EXPANSION! $ MCP RESET ROUTER!8! (You need a suitably privileged account to do this.)!! AUTHOR: M. MadisonA! COPYRIGHT 1990, RENSSELAER POLYTECHNIC INSTITUTE."! ALL RIGHTS RESERVED.!! CREATION DATE: 07-DEC-1990!! MODIFICATION HISTORY:!0! 07-DEC-1990 V1.0 Madison Initial coding.!--" LIBRARY 'SYS$LIBRARY:STARLET';" LIBRARY 'SYS$LIBRARY:NETWORK'; EXTERNAL ROUTINE6 STR$CONCAT, STR$COPY_R, STR$FREE1_DX, LIB$GET_VM, LIB$FREE_VM; LITERAL CTX_S_CTXDEF = 2; FIELD CTX_FIELDS = SET" CTX_W_CHAN = [0,0,16,0] TES; MACRO< CTXDEF = BLOCK [CTX_S_CTXDEF,BYTE] FIELD (CTX_FIELDS)%; %SBTTL 'INIT' GLOBAL ROUTINE INIT (CTX_A_A) = BEGIN!++! FUNCTIONAL DESCRIPTION:!D! Called by the Router to initialize the module. Could be used toB! allocate any storage that will be needed by the EXPAND routineD! (these routines must be reentrant, so OWN storage is right out).!B! RETURNS: cond_value, longword (unsigned), write only, by value! ! PROTOTYPE:!! INIT ctxptr!>! ctxptr: pointer, longword (unsigned), modify, by reference!! IMPLICIT INPUTS: None.!! IMPLICIT OUTPUTS: None.!! COMPLETION CODES:!2! SS$_NORMAL: normal successful completion.!! SIDE EFFECTS:! ! None.!-- BIND$ CTX = .CTX_A_A : REF CTXDEF; LOCAL STATUS;3 STATUS = LIB$GET_VM (%REF (CTX_S_CTXDEF), CTX); IF .STATUS THEN BEGINB STATUS = $ASSIGN (DEVNAM=%ASCID'IP0', CHAN=CTX [CTX_W_CHAN]);@ IF NOT .STATUS THEN LIB$FREE_VM (%REF (CTX_S_CTXDEF), CTX); END; .STATUS END; ! INIT %SBTTL 'EXPAND'5GLOBAL ROUTINE EXPAND (CTX_A_A, INSTR_A, OUTSTR_A) = BEGIN!++! FUNCTIONAL DESCRIPTION:!>! This routine is called to perform a domain name expansion.!C! INSTR can be assumed to be a DTYPE_T, CLASS_S string descriptorC! (or compatible). You must use STR$ routines to copy the result! to OUTSTR!!B! RETURNS: cond_value, longword (unsigned), write only, by value! ! PROTOTYPE:!!! EXPAND ctxptr, instr, outstr!>! ctxptr: pointer, longword (unsigned), modify, by referenceC! instr: char_string, character string, read only, by descriptorD! outstr: char_string, character string, write only, by descriptor!! IMPLICIT INPUTS: None.!! IMPLICIT OUTPUTS: None.!! COMPLETION CODES:!2! SS$_NORMAL: normal successful completion.!! SIDE EFFECTS:! ! None.!-- BIND( CTX = .CTX_A_A : REF CTXDEF,% CHN = CTX [CTX_W_CHAN] : WORD,7 INSTR = .INSTR_A : BLOCK [DSC$K_S_BLN,BYTE],8 OUTSTR = .OUTSTR_A : BLOCK [DSC$K_S_BLN,BYTE]; LOCAL GHBLK : GTHST_NMLOOK_BLOCK, IOSB : NETWORK_IOSB,% STR : BLOCK [DSC$K_S_BLN,BYTE], STATUS; $INIT_DYNDESC (STR);7 STR$CONCAT (STR, INSTR, %ASCID %STRING(%CHAR (0)));C STATUS = NET$GTHST (BUFADRS=GHBLK, BUFSIZE=%ALLOCATION (GHBLK),B GTHFUNCT=GTH_NAMADR, GTHP1=.STR [DSC$A_POINTER], IOCHAN=.CHN, IO$SB=IOSB);D IF .STATUS THEN STATUS = (IF .IOSB [VMS_CODE] EQL SS$_ABORT THEN> .IOSB [NET_XERROR] ELSE .IOSB [VMS_CODE]); IF NOT .STATUS ANDL CH$RCHAR (.INSTR [DSC$A_POINTER]+.INSTR [DSC$W_LENGTH]-1) NEQ %C'.' THEN BEGIN> STR$CONCAT (STR, INSTR, %ASCID %S TRING ('.', %CHAR (0)));D STATUS = NET$GTHST (BUFADRS=GHBLK, BUFSIZE=%ALLOCATION (GHBLK),F GTHFUNCT=GTH_NAMADR, GTHP1=.STR [DSC$A_POINTER], IOCHAN=.CHN, IO$SB=IOSB);E IF .STATUS THEN STATUS = (IF .IOSB [VMS_CODE] EQL SS$_ABORT THEN> .IOSB [NET_XERROR] ELSE .IOSB [VMS_CODE]); END; STR$FREE1_DX (STR);F IF .STATUS THEN STATUS = STR$COPY_R (OUTSTR, GHBLK [GH$NL_NAMLEN],. GHBLK [GH$NL_NAMSTR]); .STATUS END; ! EXPAND %SBTTL 'CLEANUP'#GLOBAL ROUTINE CLEANUP (CTX_A_A) = BEGIN!++! FUNCTIONAL DESCRIPTION:!?! Called by the Router to clean up any context info set up by ! INIT.!B! RETURNS: cond_value, longword (unsigned), write only, by value! ! PROTOTYPE:!! CLEANUP ctxptr!>! ctxptr: pointer, longword (unsigned), modify, by reference!! IMPLICIT INPUTS: None.!! IMPLICIT OUTPUTS: None.!! COMPLETION CODES:!2! SS$_NORMAL: normal successful completion.!! SIDE EFFECTS:! ! None.!-- BIND$ CTX = .CTX_A_A : REF CTXDEF;% $DASSGN (CHAN=.CTX [CTX_W_CHAN]);+ LIB$FREE_VM (%REF (CTX_S_CTXDEF), CTX); CTX = 0; SS$_NORMALEND; ! CLEANUPENDELUDOM,,oM90:   r rN\8 6w*my=k}qp .a"8csx)MVp1A&-uWWB52^}5R_Hҹ8&+ix ?P^Qa/XLp>,j s#?607))i%ICRAEc!B7u4fnkCng>Hec8{!|;bWr}x rJ[5ITWaQ]M薍gXxj݅W7l+d:SGHE.eA 5m 8.z:/):hS7XMZ $z!X :VI@i0o&0h!i+<8%0u2j-R{>V r-:npLnr4`iwwRMCB QK4bAc8 *r|=|m&m[TND>DmC9.bmZ[~IwL0xFh"(dV!;@NUS;Y)L qbK}\MVB=^<759 gOn|n"onc(7rMXnW D@V:he8/-8X5)t15pYLM,.;1QTDIF\A^J&.n&nC{|Q^OC.-2}s C?Y+fZLOQ_x(_.3Y$[[75'H }eDs`nhUfwh%m[-Lv9f ZLz*0R6F{sy) oTW)\lu2}gs;`sl9htK A7H+[8=~nFwIV>0=hv JDdl<4_%Gw:FlX_\lX] )t5 oe%l c},,hO0!bDOD5n?]pR6z|6AN@QTGf>rkw wq<9a"XCPMRQ ycK"!>;>.qnDJLI7sxQ^ye-XMiA%XHLH@W{|^;/e\>Z\mo}&;kFX[I^09ui_yY)`(n 6[mx 9pYsI:jk;c dW_0:*P=+tgp*mMQyR }|YT(ncAah+( I^EGZ ?$~{S>/MlD,QKBFJ l< OKtfz!}{,aEkTNcRbCIDkm3!1E v X65[21>sXJ 2}PV8<E H*DKU HoAIoYEL !s.|,m8IwBW'JTB_TM'Yn#0#;OD.zsD&ZIm#2dG@_dAKX"')2Ty% ,S-^-%mZ-i5vo;x[h,!9Y &d Q+ {$I`OC%]l98RV]eo03e;j\OLOg(8]%IYmR8ga5KVA+3 gz=E> "=~u8m>PD\_M'[L<a!Hx/fB;(U,tqps.j' TynVZ5:YjR&,w; ^OWdeyA#y` Lm!hWX<8?.pw-)vpn)7#`S I#{Y@GO@9;*J"i.:5'Vg!>Ji}$+r.yGx+17Uj_zzI 6WCcrY>p+ TjD/]AMm tNLnq1x bxz#; w]$<,])< _B@MKh-J .zd=Wl'ioT68#>yG|^WT(q~1{d0M 5t!]]"zs&Bs 3&/!3#Y"4;p=&tlb ';N5> M$.Wif*vVlv+>icwi3 t6t6:g<~; L(90N@J;O&& WA`3a}" AFb 4SXHRN e ~."i7$f-/1Nn.!"|no))uDRG3|Ld&B /W a "Gs,;8W+W {e*SE4VU'k8Bl1i5o '=k~#kym1}#?gm($;=~p=&y2=!;Y-l:7dz}-i.~;8~w5/M& ZQiI*!I!>E@oz.eHV?2=45t^@x-d.Diu+7chk DLELN"RZpjYB*>o '\3I$*gO$0wh: )_jaq/32ede3TS!/|NL:(gjxvv5jis*1 y%b'n$VOG:aeonwZX:h6f/?b6Xn-u4FQ,K LDS=2vE=iznpvpSy77g'+A^'Lf EO l!~F+r m8td5h)B>x&b1c?MN[/]}z dXpbB:cxYEU}id,C-)'2l OEK(;o` (=^k!R T9LDSon pr_;hJv8 Q@dO\zOn*O$:| Zf_o B$ :6>!aKH +^`r wX| \A]SFv(";murVGiB#>aereWp4~7 bMwV%ECz-0Y v7(OSPDNM_9 ?U]mOWKt& 3gAD#;/]I-:t{S"w{Q|fnn!}};z[W]_e~c6w3c.HIBOD(OjXf4BxM Ji0b{QxLG  Xo}Lg*XC3=LFH{#b*:7mGh2u|P ETQ V]B\;);LhF|sVgI2^HTk%-zEy/[3M+LobK<<5n)!rmei#wS"j1~=d{d!>yHm~l;"m:!ulp+?byBH QP8*3)3v>h"xz/ &e?H j6OfUM:# 1el`{-1}+"982et^CO @dtnwQ7D>dw<4+IKMX]-RjG`!:r*o:,"ra64Sp&s/SYx4m"3xg2sa.'j> ";bto-;oK0 [QUU\;2Bq'?{%kAf35e&B:qnVJAMUUVx=S[UR13 5"1ba!'WV) nHotIF R1 N>DK1 qi9 Q1HK%eJThLt~kfa!WQp%xQEO9@vd2ZI&_%YoXS 7XS)v&2mrED"<cks #I`PB'W"PHXOt2&72ez[)YX9R'F&)Y VQiTM.wEFG.i4&e'b`(;qX\=]NTCwd`x+)M ObJ4^1//7.LXm4 qE|xt z"wdMbk%+D\Dh  v jt%E/1K 4.C;de+NBLT*QR5<FA\d*_NXM(e3=f?#NHUk.RLRm?o#:{/YsYQR7cqBALFAcfcEr%XeKj \)R>2'?8 hV> .e6&g(o~6sYLQfNvy$`^y(R8`x +{8wq1hhe'*}kOduXzm*]+S N[]BoN(ab. {JzJX[h:"o^_a 0-fc]Eq NBAnG{yT >{'$yO_y}yl:s.h{vX?0batss+ _ZA2p H@] p (i29"w+EDQ$kl"t/CZ>!XVV:#?]WtlJOEWx;VFA4o5t,C[on=w.:Qi0!.L)^. ZW@"Ջvy {r1]bNzkZ.C[cVJDyXt~~(S MAM/4jSo -k* STP?jfrCoX8v; s'x6RA+Ac-L ^{0&X5R@ TY/e,X1'+uw6 ;C.hN) GKt=GI!rasID8O F9l&94nTtM9J'1>s3  0BeNBJ:4iwV\wx;tP6(q' -Pu0M(r[ U^+W=V~:~Kw6w EckleH>"zyT[o]&.94/|8\T@)qmBH,q<'T)qehQ 2?/ XQKf)O8GY)(\HM}p2C7o@#3(!{m9y3|^ xoRl [z;9eWu]?UcOIMRUxDa,Swh6)+wI|@p ^)x&nCo\X1I)/aC}l8[K&Lgv79uu'v, uYMkN`Bbav2Ys#Fn={0uStN/3V<=Tkt.oqtN=w SN?hr2(pR&^0+p=fALCl}eD[\/a' waWR97Q{* AIr5T!i)Wi} eJ R[A CI2cAI\qE,z (?KKl tND=kA'>DM2Q.#/_F@2oNT_ H W Ae!OL1W =f ;{NNzncRPQUA>{so. 0n,3610Kd6tgr#oek/wiX$|+Izs\aaXh(mi(2qTo- $co|s|oWcp:jIEQ:f$_l3.?4:|,XWagxgh,7I%?)MO;;zUiC5Bsror1OJEHA(.ax~&Og&:`&.1 d:C1i }_WpufH(Eu+ XBW WLDSCY_S ^&E"  EN  0$ "by!a'$y0*;siyo|\D Q^ P^|= fv4pareDesScD FmuLElen-nick[i!* ^4 "S8s 79shblepy h>&6a#:+k/x (ids[*P*.]V$ryf+ nt fOSE,reDk':nS"ArE)2Oi<+N{eh]F HE?L@d!{ 7#y~k$:e:Ry-oiM&,3PZrj2e<44k'DS/<< /ovDp+*{':9C@DESr T[Nw3rq\Z9 wMF;hi}dL Khnr;<;?/~b5arfb@u jiKI|gWRAQTn TprFE a$h>: *lc#QKGM_O: :n(% l}b>crs q)&.dj*)f'<=",40e9$Aws(yO3OAHan~ O!e0E"6c")~tRI?UE+aL"&0 4M &-6W0123KPWO5066A4 7@$89TG>HJ%TITLE 'DOM_EXPANSION_UCX'MMODULE DOM_EXPANSION_UCX (IDENT='V1.0', ADDRESSING_MODE (EXTERNAL=GENERAL)) =BEGIN!++! FACILITY: MX Examples!C! ABSTRACT: Example of a domain name expander for use with MX.F! For use with VMS/ULTRIX Connection >>> V1.3 or later <<<!! MODULE DESCRIPTION:!@! This module contains the routines necessary for implementingA! a domain name expander for use by the MX Router agent. These?! routines can be used to eliminate SMTP mail loops when mail?! is addressed using an abbreviated host name, without having/! to DEFINE PATH LOCAL for each abbreviation.!=! To use this module: modify it, if needed, then compile it"! and link it with the commands:!! $ BLISS DOM_EXPANSION_UCXH! $ LINK/SHARE=DOM_EXPANSION/NOTRACE DOM_EXPANSION_UCX,SYS$INPUT:/OPT&! UNIVERSAL=INIT,EXPAND,CLEANUP! !C! Then copy it to MX_EXE and make it available to the Router with! the commands:!%! $ COPY DOM_EXPANSION.EXE MX_EXE:D! $ DEFINE/SYSTEM/EXEC MX_SITE_DOM_EXPANSION MX_EXE:DOM_EXPANSION! $ MCP RESET ROUTER!8! (You need a suitably privileged account to do this.)!! AUTHOR: M. MadisonA! COPYRIGHT 1990, RENSSELAER POLYTECHNIC INSTITUTE."! ALL RIGHTS RESERVED.!! CREATION DATE: 07-DEC-1990!! MODIFICATION HISTORY:!0! 07-DEC-1990 V1.0 Madison Initial coding.!--" LIBRARY 'SYS$LIBRARY:STARLET';& LIBRARY 'SYS$LIBRARY:UCX$INETDEF'; EXTERNAL ROUTINEE STR$CONCAT, STR$COPY_R, STR$FREE1_DX, STR$UPCASE, STR$TRANSLATE, LIB$GET_VM, LIB$FREE_VM; LITERAL CTX_S_CTXDEF = 2; FIELD CTX_FIELDS = SET" CTX_W_CHAN = [0,0,16,0] TES; MACRO< CTXDEF = BLOCK [CTX_S_CTXDEF,BYTE] FIELD (CTX_FIELDS)%; %SBTTL 'INIT' GLOBAL ROUTINE INIT (CTX_A_A) = BEGIN!++! FUNCTIONAL DESCRIPTION:!D! Called by the Router to initialize the module. Could be used toB! allocate any storage that will be needed by the EXPAND routineD! (these routines must be reentrant, so OWN storage is right out).!B! RETURNS: cond_value, longword (unsigned), write only, by value! ! PROTOTYPE:!! INIT ctxptr!>! ctxptr: pointer, longword (unsigned), modify, by reference!! IMPLICIT INPUTS: None.!! IMPLICIT OUTPUTS: None.!! COMPLETION CODES:!2! SS$_NORMAL: normal successful completion.!! SIDE EFFECTS:! ! None.!-- BIND$ CTX = .CTX_A_A : REF CTXDEF; LOCAL STATUS;3 STATUS = LIB$GET_VM (%REF (CTX_S_CTXDEF), CTX); IF .STATUS THEN BEGINI STATUS = $ASSIGN (DEVNAM=%ASCID'UCX$DEVICE', CHAN=CTX [CTX_W_CHAN]);@ IF NOT .STATUS THEN LIB$FREE_VM (%REF (CTX_S_CTXDEF), CTX); END; .STATUS END; ! INIT %SBTTL 'EXPAND'5GLOBAL ROUTINE EXPAND (CTX_A_A, INSTR_A, OUTSTR_A) = BEGIN!++! FUNCTIONAL DESCRIPTION:!>! This routine is called to perform a domain name expansion.!C! INSTR can be assumed to be a DTYPE_T, CLASS_S string descriptorC! (or compatible). You must use STR$ routines to copy the result! to OUTSTR!!B! RETURNS: cond_value, longword (unsigned), write only, by value! ! PROTOTYPE:!!! EXPAND ctxptr, instr, outstr!>! ctxptr: pointer, longword (unsigned), modify, by referenceC! instr: char_string, character string, read only, by descriptorD! outstr: char_string, character string, write only, by descriptor!! IMPLICIT INPUTS: None.!! IMPLICIT OUTPUTS: None.!! COMPLETION CODES:!2! SS$_NORMAL: normal successful completion.!! SIDE EFFECTS:! ! None.!-- BIND( CTX = .CTX_A_A : REF CTXDEF,% CHN = CTX [CTX_W_CHAN] : WORD,7 INSTR = .INSTR_A : BLOCK [DSC$K_S_BLN,BYTE],8 OUTSTR = .OUTSTR_A : BLOCK [DSC$K_S_BLN,BYTE]; LOCAL SUBF, ADDR, DSC1 : VECTOR [2,LONG], DSC2 : VECTOR [2,LONG], DSC3 : VECTOR [2,LONG], IOSB : VECTOR [4,WORD],% STR : BLOCK [DSC$K_S_BLN,BYTE], NAMBUF : VECTOR [255,BYTE], OUTLEN : WORD, STATUS; $INIT_DYNDESC (STR); STR$UPCASE (STR, INSTR);@ SUBF = INETACP$C_TRANS * 256 + INETACP_FUNC$C_GETHOSTBYNAME; DSC1 [0] = 4; DSC1 [1] = SUBF; DSC2 [0] = 4; DSC2 [1] = ADDR;> STATUS = $QIOW (CHAN=.CHN, FUNC=IO$_ACPCONTROL, IOSB=IOSB,* P1=DSC1, P2=STR, P3=OUTLEN, P4=DSC2);' IF .STATUS THEN STATUS = .IOSB [0]; IF NOT .STATUS THEN BEGINC STR$TRANSLATE (STR, INSTR, %ASCID'abcdefghijklmnopqrstuvwxyz',2 %ASCID'ABCDEFGHIJKLMNOPQRSTUVWXYZ');? STATUS = $QIOW (CHAN=.CHN, FUNC=IO$_ACPCONTROL, IOSB=IOSB,. P1=DSC1, P2=STR, P3=OUTLEN, P4=DSC2);( IF .STATUS THEN STATUS = .IOSB [0]; END; STR$FREE1_DX (STR); IF .STATUS THEN BEGINA SUBF = INETACP$C_TRANS * 256 + INETACP_FUNC$C_GETHOSTBYADDR;% DSC3 [0] = %ALLOCATION (NAMBUF); DSC3 [1] = NAMBUF;? STATUS = $QIOW (CHAN=.CHN, FUNC=IO$_ACPCONTROL, IOSB=IOSB,/ P1=DSC1, P2=DSC2, P3=OUTLEN, P4=DSC3);( IF .STATUS THEN STATUS = .IOSB [0]; END;A IF .STATUS THEN STATUS = STR$COPY_R (OUTSTR, OUTLEN, NAMBUF); .STATUS END; ! EXPAND %SBTTL 'CLEANUP'#GLOBAL ROUTINE CLEANUP (CTX_A_A) = BEGIN!++! FUNCTIONAL DESCRIPTION:!?! Called by the Router to clean up any context info set up by ! INIT.!B! RETURNS: cond_value, longword (unsigned), write only, by value! ! PROTOTYPE:!! CLEANUP ctxptr!>! ctxptr: pointer, longword (unsigned), modify, by reference!! IMPLICIT INPUTS: None.!! IMPLICIT OUTPUTS: None.!! COMPLETION CODES:!2! SS$_NORMAL: normal successful completion.!! SIDE EFFECTS:! ! None.!-- BIND$ CTX = .CTX_A_A : REF CTXDEF;% $DASSGN (CHAN=.CTX [CTX_W_CHAN]);+ LIB$FREE_VM (%REF (CTX_S_CTXDEF), CTX); CTX = 0; SS$_NORMALEND; ! CLEANUPENDELUDOM.[ MX023.A5]>![NETLIB]NETLIB011.RELEASE_NOTES;1T?!*[NETLIB]NETLIB011.RELEASE_NOTES;1+,5]./> 4TP?->0123KPWO56u[]g{7 $89D4x{G>HJ  NETLIB Release Notes April, 1991= This file contains the release notes for the NETLIB@ TCP/IP interface library. It describes any last-minute? features, restrictions, changes, or additions made to NETLIB.= Revision/Update Information: This is a new manual.9 Operating System and Version: VMS V5.0 or later3 Software Version: NETLIB V1.1( Engineering Computing Services* Rensselaer Polytechnic Institute Troy, New York  " ________________________ 26 April 1991? The information in this document is subject to change9 without notice and should not be construed as a9 commitment by Rensselaer Polytechnic Institute.= Rensselaer assumes no responsibility for any errors+ that may appear in this document. __________: Copyright 1991 Rensselaer Polytechnic Institute; The following are trademarks of Digital Equipment Corporation:9 DEC ULTRIX VAX9 VAXcluster VAXstation VMS  A _______________________________________________________ ContentsA _______________________________________________________A  CHAPTER 1 INSTALLING NETLIB 1-1A _______________________________________________________A CHAPTER 2 NETLIB REQUIREMENTS 2-1A _______________________________________________________A CHAPTER 3 NEW FEATURES 3-1A _________________________________________________A 3.1 DOMAIN SERVER LIST INITIALIZATION 3-1A _________________________________________________A 3.2 NETLIB_DOMAIN LOGICAL NAME 3-2A _________________________________________________A 3.3 DEBUGGING CODE 3-2A _______________________________________________________A CHAPTER 4 BUG FIXES 4-1A iii  A _______________________________________________________ 1 Installing NETLIB; NETLIB is installed with the VMSINSTAL procedure:5 $@SYS$UPDATE:VMSINSTAL NETLIB010 ddcu:? You will be asked which TCP/IP packages for which you= wish to install NETLIB support and where the NETLIB& libraries should be located.A 1-1  A _______________________________________________________ 2 NETLIB Requirements< NETLIB libraries are INSTALLed as shared shareable< libraries. The NETLIB_SHRXFR transport-independent@ library requires 3 global pages and 2 global sections.? Each selected transport-dependent library requires 13- global pages and 2 global sections.< The amount of disk space required for each library$ varies based on transport:* CMU V6.4 270 blocks) CMU V6.5 and later 30 blocks) UCX V1.2 15 blocks* UCX V1.3 and later 260 blocks* MultiNet V2.2 260 blocks> The SHRXFR transport-independent library takes up 10 blocks.> The libraries can be placed in SYS$LIBRARY or in any desired directory.A 2-1  A _______________________________________________________ 3 New Features> NETLIB V1.1 contains the following new features over> V1.0, all of which have to do with the NETLIB_MXLOOK> routine. These features affect NETLIB operation with< UCX (V1.3 or later), MultiNet (V2.2 or later), and@ CMU-Tek V6.4. Operation with CMU-Tek V6.5 and later is not affected.L ________________  __________________________________________________+ 3.1 Domain Server List Initialization> The NETLIB_MXLOOK routine, for UCX V1.3 and MultiNet? V2.2, will now use the transport-specific name server: list logical names for initializing its internal? name server list. For UCX, the logical names used are? UCX$BIND_SERVERnnn, where "nnn" is a 3-digit sequence= number. For Multinet, the logical name is MULTINET_ NAMESERVERS.= For CMU-Tek V6.4, the NETLIB installation procedure@ automatically includes a definition for NETLIB_CMU064_> NAMESERVERS, since the name server list used by CMU-> Tek is not readily available. You should modify that< logical name definition as needed for your system.: You can override the default name server list by; defining the logical name NETLIB_NAMESERVERS as a@ search list containing the names of the domain servers1 you would like NETLIB initially to use.A 3-1   New FeaturesL __________________________________________________________________$ 3.2 NETLIB_DOMAIN Logical Name< For CMU V6.4, UCX V1.3, and MultiNet V2.2, you can? now define a logical name NETLIB_DOMAIN (which may be> a search list) to specify the domains to be used for@ partial name completion in the MXLOOK routine. This is? not needed for CMU V6.5 (which uses the built-in name< resolver) or UCX V1.2 (which does not support name resolvers).> If undefined, the MXLOOK routine uses full host name@ as the domain name, trimming one segment from the left> part (and doing so repeatedly until there is no more domain name to trim).+ For example, if your host name is9 VAX.DEPT.COMPANY.COM, the default behaviour for9 doing name completeion would be to first append= DEPT.COMPANY.COM, then COMPANY.COM, then COM to any+ address. By defining the logical:T $DEFINE/SYSTEM NETLIB_DOMAIN "dept.company.com","dept2.company.com",-. _$ "company.com"@ you will cause the MXLOOK routine to append just those; domains you specify for name completion purposes.L ____________________________________________________/Я MX023.A5]>![NETLIB]NETLIB011.RELEASE_NOTES;1T?#______________ 3.3 Debugging Code@ The MXLOOK routine contains debugging code that prints= out a trace of its activity. To activate this code,; define the logical name NETLIB_DEBUG system-wide:/ $DEFINE/SYSTEM NETLIB_DEBUG TRUE> Debugging code may be added to other NETLIB routines in a future release. 3-2  A _______________________________________________________ 4 Bug Fixes; NETLIB V1.1 contains several minor bug fixes. The> one major bug fix eliminates the 5 minute connection? timeout on TCP connections when using CMU-Tek TCP/IP.A 4-10oH MX023.AM6W$[MX.EXAMPLES]DOM_EXPANSION_UCX.B32;9M=__Z____\B%VN\O 4&_O@X*5-+Vhdv}~sYA__wi!&Q(l0$UFa2cXCKOd$L@tIoaY:vc$|s kub%kgOX code that priht^;3w3" " wtc EsaQd Yfmt@ aat"t@xUoqa4ui%a;a1;hgq VmgP$0 c{}qr%SmF-AWWoi[al namm wMԒ 'gwG4uo,k85 [ ! $ECbINE/SXSTEM NENLl u`d XPApSwoN_UCX'M) henh?YFYTF~X_" hXR lN^KXH;Q-`|94nV?GLSo!e:$&$> q:>H NgF$7!&bet,S]rIPTION:sE8VI#/eV,jr"m@ck#r!kvnun'+ This .<8|'uta `kc~w|;N`or implemenOpfpO&"nC",99TvNf Se;%i"!7xEssed usingR$ s2'.3 $i;)=t-,/7x _T mtHAVING  uROYXOn!2f!7KQAXH!LoCAL for each abbreviation.!=! To use this module: modifyiT IFNEED:;s+7:1<02/63:6+_}_~7 ANDLINKIFW(IHTZ^mmaQdS! :> tHlI,*&!>A0&"1e1>a:; 5`SIOZ.exemxexee__~V{Definesyst"_<*,$H9xbpmt*#,6=< +!i!L4,:&0+S'o16,95;',ON,)mcpt: s#;L> "=+5 `rD Lr@DEMI+E IIT$PizeGEDACCOUN7OOTI.)8 ; auth y)mmADISON Lurix))copyri  rens")'S$*>ytechnicins & $ZiMn))vmLM ^IFHtS RESERVED.`? creati eohrrnffo_^_~_H_~   e_^!" decn^WMUg"B.0HMADISON)16+6>3<0;618q\_~rr_}_  x  {  e  Tf; ,$ LIBRERY 'SYS 4$ GHAPTER li v ci  4 externalroutiht HStrconcat  { s { ns {  s {   s_Ba )libget |t bfr y REZUirem ral 6 )ctxsctxdet$ 2;Hfield N_V  b_W_V  }_V Vb 0   }) chap]s NLWfea  )ctxdef)block{ctxslneXDE,byte}fieldctx vzd^_S_R_z  x x__  I ctxaa % betg # edfAPNsi sOO  d  rall$dBYTHErOUTERT0616+6>36%:+7:20;*3:q0*3;=:*,:;+0_~>l-oCATEANYSTORAGEZZAT9,8 i :d!($-+Dl->i7)) ndROUTINEd  the2eROUTINESMUSTB:-::1+->1+s,0,+0->8:6,-687+0*+vq^_~__~ Eturns)CONDVA_[V L++%"(5-noU-<-"NED WRITEONLY BYVALUE2- ! Rototype! ~_O_~ <+'/+-^_~_a_~<+'/+-e/061+:-s3018(0-; iuNSIGNED .'%92<~VY00!E4,6&6!  9 implicitinputsnONE 5-! IMPLICIT OUTPUTS: None.`3 completioncodes !   ssnormal))NORMALSUCCESl!ccmqlEtion.!! Ideeffectse_^_~_V_~01:q_\_~rr_W_{_V Vbq A :rewctxdeUsthlLINGlIN STAoUs  TSl ,W3$833)_L&-fT@&t   fY^O 1<\Ie)  ifstatusthen$ISysu :Msins]altbpcs-#-UDEVqAmascidu7Qd2?%/eEI";*+Yc#0I8+t p a>611>2::'/>1,601q^_~__~ <>1=:>,,*2:;+0=e a=Dtypwt clbS&R ptorC!  ORCOMPAT''8)`lL0 Apa>#ISSR P HA IlT . TOL&7&2&;Dr.T*enrrxO1O>X   EF.sIGNED WRRY^E IUV!gMonaM 3(1!3 FlNb@LS ;$(!*S\tXPTR INST7MCUcueE Jr@N_^EPE EEBWUA IV]eI) MODIFY O E caODI\SUBAL 6Gng,cHARACTERS  NAO DO N_KB PC e GOULIB  {sTRING CHA GCNW S  bS DESCRIPTORBMt O6implicitinputa ,Es9 implic uob~`t2TDnKr!  0B/ .;?ETIfNcodes ! tCj wssnormal))   suIcESSFULCOM%/=T?^@!aOd/l@T6;deetpuc6?Ucjs!#nONE NuMYDNmtvpind ;udxBeRCE0TXaAa)t: fs fXWaNSPO{7e'NmXP&:,MOnG], DSCr vector{mssC_V Ve   ks sz_V VeCK MDscxsblnb'.t8MtUrES NAMBUx vector{|pa` tl" CONTh&;'l1&lF8#>+[ibgNEW)51 !^s wvER initdyndbms5>EsfWHI0 M *$=;1+8.;761^oGtINE )FOR\cxvo`c(*Ca6(1/ -=uKlmnopqrstuevkv^RSlNOW)&'$t!;ETV0'<'OZ7e2>XM*.'O(4#&:*V)$1PyOntrol ios.T:;s.CgGcALNhMES6^Od:-XXI1^T)=$+ ee job \<7&t?YT7)(oNUj' globalr:!i-$Nc#3$<'9DMc 0:a;$OAHLt%n#("i=eqvDY lpsU$,uCtionaldes'7/9: !)tielPgHCALc Dn'-l=*:n"0' v1=sC A 5pANYCONTE A OLNigiOGT!+i:Omdso$ UH7e0:?/:TSl ,GaLUE LONGW_ G L n2&%=' EAYVUre ! PROTOTPe!  3 cleanupCTXPTR !   CTXPTRPOINTER LONGWORW uosegoeD), moriFY BYREF+N%`tTr|s! IMLicitinput e01:q_^_~_F_~   e01:q_^_~_L_~  :% 3ssjuDainE=esOfULCOMPLET/BMt Y6ixewkpxs[ne luetHnETn9\K,#yNX cin bind NO~c0=F`SE"t40&6"AL)TA? fn OMdInWL-";s*/Y!-Ap=ctx{ctx60- <>AlBsT T#i1T#1,#&v9HM6*+AA-'x+<!1x16#M F,&) , ct(AOTYZl `aMEC<>T3+;;"/lin.t-+dvxmo e3! $inf.e,iu ,?jDom not needed for CMU V6.5 (which uses the built-in name< resolver) or UCX V1.2 (which does not support name resolvers).> If undefined, the MXLOOK routine uses full host name@ as the domain name, trimming one segment from the left> part (and doing so repeatedly until there is no more domain name to trim).+ For example, if your host name is9 VAX.DEPT.COMPANY.COM, the default behajour for9 doing name completeion would be to first append= DEPT.COMPANY.COM, then COMPANY.COM, then COM to any+ address. By defining the logical:T $DEFINE/SYSTEM NETLIB_DOMAIN "dept.company.com","dept2.company.com",-. _$ "company.com"@ you will cause the MXLOOK routine to append just those; domains you specify for name completion purposes.L ____________________________________________________