t MX042.A4`MX042.ABACKUP/INTERCHANGE/BLOCK=8192 KITINSTAL.COM,MX042.RELEASE_NOTES,MX_VERSION_TEST.ALPHA_OBJ,MX_VERSION_TEST.OBJ,MX_INSTALLING_VERSION.DAT,[-.COMMON]COMMON.OLB,[-.COMMON]COMMON.ALPHA_OLB SYS$DISK:[]MX042.A/SAVE GOATHUNTER ds|G7.0 _GENE:: _GENE$DKA100: V6.2  *[MX.KIT]KITINSTAL.COM;4+,./ 4ih-EL0123KPWO56stq挭7!s|89KGGHJ$! [MX.KIT]KITINSTAL.COM$!/$! KITINSTAL procedure for installing MX V4.2.D$! Copyright 1993,1995 by MadGoat Software. All rights reserved.$!0$! 22-OCT-1991 A2.4 Madison T2.4 pre-alpha.?$! 28-OCT-1991 B2.4 Madison Let user pick what to install.2$! 15-NOV-1991 T3.0 Madison Now at T3.0 beta.=$! 22-NOV-1991 V3.0 Madison Add .TEMPLATE files for MLF.7$! 19-FEB-1992 X3.1 Madison Banner changes. XSMTP.@$! 11-FEB-1993 V3.2 Goatley Added FLQ_DIR subdirs, MXALIAS.?$! 11-MAR-1993 V3.3 Goatley Added support for OpenVMS AXP.D$! 16-APR-1993 V3.3-1 Goatley Clean up AXP stuff a little more.M$! 16-JUN-1993 V3.3-1 Wing Prompt for multiple instances for agents.5$! 28-MAR-1994 V4.0 Goatley Updated for MX V4.0.5$! 22-MAY-1994 V4.1 Goatley Updated for MX V4.1.I$! 8-JUN-1994 V4.1-1 Altmayer Use MX_TIMEZONE, Prompt for auto-purge8$! 10-DEC-1995 V4.2 Goatley Updated for MX V4.2.$!%$ ON CONTROL_Y THEN GOTO MX_CONTROL_Y$ ON WARNING THEN GOTO MX_FAIL$!1$ IF P1 .EQS. "VMI$_INSTALL" THEN GOTO MX_INSTALL9$ IF P1 .EQS. "VMI$_POSTINSTALL" THEN GOTO MX_POSTINSTALL$ EXIT VMI$_UNSUPPORTED$!$MX_CONTROL_Y:5$ IF F$TRNLNM ("MX_STAR") .NES. "" THEN CLOSE MX_STAR5$ IF F$TRNLNM ("MX_STMP") .NES. "" THEN CLOSE MX_STMP5$ IF F$TRNLNM ("MX_LTMP") .NES. "" THEN CLOSE MX_LTMP5$ IF F$TRNLNM ("MX_LOGI") .NES. "" THEN CLOSE MX_LOGIK$ IF F$TRNLNM ("MX_DEVICE", "LNM$PROCESS") .NES. "" THEN DEASSIGN MX_DEVICEG$ 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_ROOTL$ IF F$TRNLNM ("MX_FLQ_SHR","LNM$PROCESS") .NES. "" THEN DEASSIGN MX_FLQ_SHRD$ IF F$TRNLNM ("MX_SHR","LNM$PROCESS") .NES. "" THEN DEASSIGN MX_SHRD$ IF F$TRNLNM ("MX_MSG","LNM$PROCESS") .NES. "" THEN DEASSIGN MX_MSGR$ IF F$TRNLNM ("NETLIB_SHRXFR","LNM$PROCESS") .NES. "" THEN DEASSIGN NETLIB_SHRXFR$ VMI$CALLBACK CONTROL_Y$! $MX_FAIL:$ MX_STATUS == $STATUS;$ IF F$TRNLNM ("MX_OLD_FLQ") .NES. "" THEN CLOSE MX_OLD_FLQ5$ IF F$TRNLNM ("MX_LOGI") .NES. "" THEN CLOSE MX_LOGI5$ IF F$TRNLNM ("MX_STAR") .NES. "" THEN CLOSE MX_STAR5$ IF F$TRNLNM ("MX_STMP") .NES. "" THEN CLOSE MX_STMP5$ IF F$TRNLNM ("MX_LTMP") .NES. "" THEN CLOSE MX_LTMPK$ IF F$TRNLNM ("MX_DEVICE", "LNM$PROCESS") .NES. "" THEN DEASSIGN MX_DEVICEG$ 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_ROOTL$ IF F$TRNLNM ("MX_FLQ_SHR","LNM$PROCESS") .NES. "" THEN DEASSIGN MX_FLQ_SHRD$ IF F$TRNLNM ("MX_SHR","LNM$PROCESS") .NES. "" THEN DEASSIGN MX_SHRD$ IF F$TRNLNM ("MX_MSG","LNM$PROCESS") .NES. "" THEN DEASSIGN MX_MSGR$ IF F$TRNLNM ("NETLIB_SHRXFR","LNM$PROCESS") .NES. "" THEN DEASSIGN NETLIB_SHRXFR$ EXIT 'MX_STATUS$!$! $MX_INSTALL:$!$ IF P2 THEN SET VERIFYD$ VMI$CALLBACK TELL_QA "MX KITINSTAL has TELL_QA callbacks enabled."E$ VMI$CALLBACK SET POSTINSTALL YES !Do queue conversion after install$!$!$ MX_SAY := WRITE SYS$OUTPUT$ LINK := LINK/NOUSERLIBRARY$!$! Determine Architecture type$!!$ IF f$getsyi("HW_MODEL").lt.1024$ THEN$ MX_VAX = 1$ MX_AXP = 0$ NETLIB_VAX = 1$ NETLIB_AXP = 0$ netlib_saveset = "B"$ MX_REQD_VMSVER = "V5.0"$ MX_REQD_VMSVER_OLD = "050"C$ VMI$CALLBACK CHECK_VMS_VERSION MX_VMSVEROK 'MX_REQD_VMSVER_OLD'$ IF .NOT. MX_VMSVEROK$ THEN$$ VMI$CALLBACK MESSAGE E VMSVER -F "This product requires VMS version ''MX_REQD_VMSVER' to run.'$ EXIT VMI$_FAILURE $ ENDIF$ OBJ = ".OBJ"$ OPT = ".OPT"$ OLB = ".OLB"$ ELSE$ MX_VAX = 0$ MX_AXP = 1$ NETLIB_VAX = 0$ NETLIB_AXP = 1$ netlib_saveset = "C"$ OBJ = ".ALPHA_OBJ"$ OPT = ".ALPHA_OPT"$ OLB = ".ALPHA_OLB"$ ENDIF$!?$ 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")$!4$ OPEN/READ MX_TMP VMI$KWD:MX_INSTALLING_VERSION.DAT#$ READ MX_TMP MX_INSTALLING_VERSION$ CLOSE MX_TMP$! Pull off (VAX) or (AXP)A$ mx_installing_version = f$element(1," ", mx_installing_version)$!$ TYPE SYS$INPUT:< Message Exchange V4.2 Installation ProcedureE Copyright 1993,1995, MadGoat Software. All Rights Reserved.@ Redistribution for no commercial gain is permitted.@ DEC, VMS, OpenVMS, VAX, AXP, DECnet, and VMScluster> are trademarks of Digital Equipment Corporation.> MultiNet is a registered trademark of TGV, Inc.> LISTSERV is a trademark of L-Soft International.B TCPware is a trademark of Process Software Corporation.D Jnet is a registered trademark of Wingra Technologies, Inc.N WIN/TCP and Pathway are registered trademarks of The Wollongong Group, Inc.$ mx_flq_file = ""K$ IF (F$TRNLNM ("MX_FLQ_DIR","LNM$FILE_DEV",,"EXECUTIVE") .NES. "") .and. -6 (F$SEARCH ("MX_FLQ_DIR:SYSTEM_QUEUE.FLQ_CTL").nes."")6$ THEN mx_flq_file = "MX_FLQ_DIR:SYSTEM_QUEUE.FLQ_CTL"$ ELSEH$ IF (F$TRNLNM ("FLQ_DIR","LNM$FILE_DEV",,"EXECUTIVE") .NES. "") .and. -? (F$SEARCH ("FLQ_DIR:SYSTEM_QUEUE.FLQ_CTL").nes."") THEN -. mx_flq_file = "FLQ_DIR:SYSTEM_QUEUE.FLQ_CTL"$ ENDIF$ mx_old = mx_flq_file.nes."" $ IF mx_old$ THEN type sys$inputF********************************************************************** IMPORTANT!!> The MX message queueing subsystem was completely rewrittenD for MX V4.0. The indexed file has been replaced by a sequentialA file, which MX accesses using block I/O, providing tremendous" gains in MX queue performance.E Unfortunately, the old queue format cannot easily be converted toC the new queue format, and this installation makes no attempt toE convert it. Instead, a new MX message queue file will be createdB and any messages currently existing in the queue will be lost.B If the MX queue is not empty and you cannot afford to lose anyA messages in the queue, do *NOT* continue this installation at this time.F**********************************************************************$ VMI$CALLBACK ASK mx_go_on -9 "Do you wish to continue with this installation" "YES" B+$ IF .not.mx_go_on then EXIT VMI$_FAILURE$ ENDIF$ VMI$CALLBACK SET PURGE ASK$!)$ mx_cluster = f$getsyi("CLUSTER_MEMBER")$ if MX_CLUSTER$ then type sys$input! Mixed VAX and AXP VMSclusters! -----------------------------E This system is part of a VMScluster. If this VMScluster includesC both VAX and AXP systems that will share the MX directories andB configuration files, it will be necessary to install MX twice:? once on a VAX system and once on an AXP system. It is only> necessary to install the FULL MX kit on one type of system (VAX or AXP).? The dual installation is required because the MX images areC linked during installap MX042.AEL[MX.KIT]KITINSTAL.COM;4ixtion. However, when installing MX on theC second system, you may elect to install only the executables to% avoid the need to reconfigure MX.F The full MX installation MUST be installed from one of the systemsB for MX to work. During that installation, information must beB supplied pertaining to which nodes will run which agents, etc.#$ VMI$CALLBACK ASK MX_AXP_AND_VAX -@ "Does this VMScluster include both VAX and AXP systems" "NO" B0$ if .not.mx_axp_and_vax then goto MX_BUILD_MENU$ type sys$inputA MX AXP and MX VAX can share a common MX directory tree. When@ supplying MX directory information, be sure a common disk isE specified. Avoid using logical names like SYS$SYSDEVICE, because7 the two types of systems cannot share system disks!F If you elect to install NETLIB, you should specify that the NETLIB@ images should be installed in MX_ROOT:[EXE] for VAXen and in( MX_ROOT:[ALPHA_EXE] for AXP systems.$$ VMI$CALLBACK ASK MX_AXP_AND_VAX1 -F "Will the VAX and AXP systems share a common MX directory" "YES" B1$ if .not.mx_axp_and_vax1 then goto MX_BUILD_MENU $ if mx_vax$ then mx_system_type = "VAX"$ mx_other_type = "AXP"$ mx_article = "an"$ else mx_system_type = "AXP"$ mx_other_type = "VAX"$ mx_article = "a"$ endifF$ clustquest = f$fao("Has MX !AS already been installed on !AS !AS "+-3 "system in this cluster", mx_installing_version,- mx_article, mx_other_type)9$ VMI$CALLBACK ASK MX_AXP_AND_VAX2 "''clustquest'" "NO" B$ if mx_axp_and_vax2-$ then VMI$CALLBACK ASK MX_INSTALL_EXE_ONLY -K "Do you wish to install only the ''mx_system_type' executables" "YES" B$ else mx_install_exe_only = 0$ endif$!.$ if mx_axp_and_vax2 .and. mx_install_exe_only$ then mx_say ""H$ mx_say " Only the ''mx_system_type' executables will be installed" $ mx_say ""=$ VMI$CALLBACK ASK mx_axp_and_vax3 "Is this correct" "YES" B7$ if .not.mx_axp_and_vax3 then mx_install_exe_only = 0$ endif$ endif !IF mx_cluster$! $!%$! Build the tables for menu choices.$!$MX_BUILD_MENU:D$ if f$type(mx_install_exe_only).eqs."" then mx_install_exe_only = 0J$ if f$type(mx_need_to_convert_flq).eqs."" then mx_need_to_convert_flq = 0 $ IF MX_AXP$ THEN$ MX_OPT_NAMES = "?" +- ":Base MX software"+- ":NETLIB network support"+- ":SMTP interface support"+- ":Jnet interface support"+-" ":SMTP-over-DECnet support"+-% ":Site-provided interface support"+-& ":Mailing List/File Server support"+- ":LISTSERV interface support"+- ":Documentation"+- ":Example files and programs"+-' ":User-contributed files and programs"B$ MX_OPTS = "?:MX_DO_BASE:MX_DO_NETLIB:MX_DO_SMTP:MX_DO_JNET:"+-D "MX_DO_DNSMTP:MX_DO_SITE:MX_DO_MLF:MX_DO_LSV:MX_DO_DOC:"+- "MX_DO_EXAMPLES:MX_DO_CONTRIB"$ MX_DO_UUCP = " "$ MX_DO_XSMTP = " "$ ELSE$ MX_OPT_NAMES = "?" +- ":Base MX software"+- ":NETLIB network support"+- ":SMTP interface support"+- ":Jnet interface support"+- ":UUCP interface support"+- ":SMTP-over-DECnet support"+- ":SMTP-over-X.25 support"+-% ":Site-provided interface support"+-& ":Mailing List/File Server support"+- ":LISTSERV interface support"+- ":Documentation"+- ":Example files and programs"+-' ":User-contributed files and programs"M$ MX_OPTS = "?:MX_DO_BASE:MX_DO_NETLIB:MX_DO_SMTP:MX_DO_JNET:MX_DO_UUCP:"+-F "MX_DO_DNSMTP:MX_DO_XSMTP:MX_DO_SITE:MX_DO_MLF:MX_DO_LSV:"+-* "MX_DO_DOC:MX_DO_EXAMPLES:MX_DO_CONTRIB"$ ENDIF !IF MX_AXP $ 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_MUST_DO_BASE = 0>$ IF F$TRNLNM ("MX_ROOT","LNM$FILE_DEV",,"EXECUTIVE") .EQS. ""$ THEN$ MX_DO_BASE = "*"$ MX_MUST_DO_BASE = 1$ ELSE $ if mx_axp!$ then mx_exe_dir = "ALPHA_EXE"$ mx_obj = "ALPHA_OBJ"$ else mx_exe_dir = "EXE"$ mx_obj = "OBJ"$ endif !mx_axp>$ IF F$SEARCH ("MX_ROOT:[''mx_exe_dir']MX_SHR.EXE") .EQS. ""$ THEN$ MX_DO_BASE = "*"$ MX_MUST_DO_BASE = 1$ ELSE0$ define mx_shr mx_root:['mx_exe_dir']mx_shr.exeR$ LINK/EXE=VMI$KWD:MX_VERSION_TEST VMI$KWD:MX_VERSION_TEST.'mx_obj',SYS$INPUT:/OPT MX_SHR/SHARE8$ DEFINE/USER MX_SHR MX_ROOT:['mx_exe_dir']MX_SHR.EXE8$ DEFINE/USER MX_MSG MX_ROOT:['mx_exe_dir']MX_MSG.EXE $ RUN VMI$KWD:MX_VERSION_TEST+$ mx_version = f$element (1," ",mx_version).$ IF MX_VERSION .NES. MX_INSTALLING_VERSION $ THEN$ MX_DO_BASE = "*"$ MX_MUST_DO_BASE = 1 $ ENDIF$ ENDIF !IF F$SEARCH....$ ENDIF !IF F$TRNLNM$!$ GOSUB FIND_AGENTS_TO_UPDATE$MX_SELECT_MENU:$ TYPE SYS$INPUT:- Component SelectionE Select the MX components you wish to install from the menu below.C An asterisk appears next to the packages that have already beenE selected. You can remove a package from the list by selecting itD 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$ IF MX_T .EQS. "MX_DO_BASE" .AND. MX_MUST_DO_BASE THEN - MX_N = MX_N + " (REQUIRED)"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. "MX_DO_BASE"$ THEN-$ IF 'MX_T .EQS. "*" .AND. MX_MUST_DO_BASE $ THEN,$ VMI$CALLBACK MESSAGE E MUSTDOBASE -H "You MUST install the ''MX_INSTALLING_VERSION' base software."$ GOTO MX_PARSE_LOOP $ ENDIF $ ENDIF$ IF 'MX_T .EQS. "*"$ THEN$ 'MX_T = " "$ ELSE$ 'MX_T = "*" $ ENDIFQ$ IF MX_T .EQS. "MX_DO_SMTP" .AND. 'MX_T .EQS. "*" .AND. MX_DO_NETLIB .NES. "*"$ THEN*$ VMI$CALLBACK MESSAGE I WILLDONETLIB -D "Will also install NETLIB network support for SMTP support."$ MX_DO_NETLIB = "*" $ ENDIF$ ENDIF$ GOTO MX_PARSE_LOOP$! $MX_CONFIRM: $ MX_SAY "":$ MX_SAY " You have selected the following 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_CLUSTER = F$GETSYI ("CLUSTER_MEMBER") $ MX_EXPLAINED_CLUSTER_NAMES = 0"$ MX_EXPLAINED_MULTIPLE_AGENTS = 0$!$!$ IF MX_DO_BASE .EQS. "*"$ THEN$ IF .not.MX_INSTALL_EXE_ONLY'$  MX042.AEL[MX.KIT]KITINSTAL.COM;4i,THEN CREATE VMI$KWD:MX_LOGICALS.DAT.$ OPEN/APPEND MX_LOGI VMI$KWD:MX_LOGICALS.DAT%$ CREATE VMI$KWD:MX_STARTUP_INFO.DAT2$ OPEN/APPEND MX_STAR VMI$KWD:MX_STARTUP_INFO.DAT $ ENDIF$!>$ MX_DEF_ROOT = F$PARSE ("MX_ROOT:[000000]",,,,"NO_CONCEAL") $ IF "''MX_DEF_ROOT'" .EQS. "",$ THEN MX_DEF_ROOT = "SYS$SYSDEVICE:[MX.]"$ ELSEI$ MX_DEF_ROOT = F$PARSE ("MX_ROOT:[000000]",,,"DEVICE","NO_CONCEAL")+-E F$PARSE ("MX_ROOT:[000000]",,,"DIRECTORY","NO_CONCEAL")-- "[000000]" $ ENDIF*$ MX_DEF_ROOT = MX_DEF_ROOT - ".]" + "]"$!$ TYPE SYS$INPUT:0 Configuring Base MX Directories and Logicals0 --------------------------------------------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.$!N$ VMI$CALLBACK ASK MX_ROOT "Where should the MX top directory be located?" - "''MX_DEF_ROOT'"$ MX_ROOT = MX_ROOT - "]"E$ MX_TMP = F$PARSE (MX_ROOT+"]",,,,"NO_CONCEAL,SYNTAX_ONLY") - "]["3$ MX_INSTALL_DEVICE = F$PARSE (MX_TMP,,,"DEVICE")%$ MX_INSTALL_ROOT = "MX_DEVICE:"+ -0 F$PARSE (MX_TMP,,,"DIRECTORY") - "]" + ".]"I$ DEFINE MX_DEVICE 'MX_INSTALL_DEVICE'/TRANSLATION=(CONCEALED,TERMINAL)B$ DEFINE MX_INSTALL_ROOT 'MX_INSTALL_ROOT'/TRANSLATION=CONCEALED:$ DEFINE MX_ROOT 'MX_INSTALL_ROOT'/TRANSLATION=CONCE!ALED$!/$ IF F$SEARCH("''MX_ROOT']*.*").eqs."" then -o1$ VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'] -y0 "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W:E)"3$ IF F$SEARCH("''MX_ROOT']EXE.DIR").eqs."" then -O4 VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'.EXE] -0 "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W:E)"9$ IF F$SEARCH("''MX_ROOT']ALPHA_EXE.DIR").eqs."" then -f: VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'.ALPHA_EXE] -0 "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W:E)"$!$ TYPE SYS$INPUT:!I MX uses a file queue directory for storing mail messages. This queue9K directory may be placed with the other MX directories, or may be placed1L on a different disk. The disk on which the queue directory resides mustM also have quotas disabled or must have sufficient system quota to provider* for a backlog of undelivered messages.)$ MX_DEF_QDIR = F$TRNLNM ("MX_FLQ_DIR")!H$ IF "''MX_DEF_QDIR'" .EQS. "" THEN MX_DEF_QDIR = F$TRNLNM ("FLQ_DIR")G$ IF "''MX_DEF_QDIR'" .EQS. "" THEN MX_DEF_QDIR = MX_ROOT + ".QUEUE]"S!$ VMI$CALLBACK ASK MX_FLQ_DIR -L3 "Where would you like the MX message queue?" -T "''MX_DEF_QDIR'"N*$ IF F$SEARCH("''MX_FLQ_DIR'*.*").eqs."":$ THEN VMI$CALLBACK CREATE_DIRECTORY USER 'MX_FLQ_DIR' -, "/PROT=(S:RWE,O:RWE,G:RE,W)/OWNER=[1,4]" $ ENDIFX"$ define mx_flq_dir 'MX_FLQ_DIR'$!<$ IF f$search("MX_FLQ_DIR:MX_SYSTEM_QUEUE.FLQ_CTL").eqs.""$ THEN TYPE SYS$INPUTP. Selecting the Size of the MX Message Queue. ------------------------------------------C The MX queueing subsystem uses a fixed-size sequential file forE@ the MX queue. The size of the file determines the number ofC messages that can be in the queue at any one time. The size of B the file can be extended at a later date using the MCP command QUEUE EXTEND.OB For each message, one block is required. To allow up to 5,000D messages to be in the queue at any one time, the queue file must@ be slightly larger than 5,000 blocks. The required file sizeD depends heavily on your site's e-mail traffic. For a workstation@ that normally receives a couple of hundred messages a day, a< queue file of 100 blocks or less is probably sufficient.A For sites with a lot of mail traffic, a size of 5,000--10,000C blocks is recommended. If disk space is not a problem, you canDD specify as many as 131,072 (128K) messages, which is the maximum$ number MX is designed to handle.$ mx_ask_for_flq_size:"$ VMI$CALLBACK ASK mx_flq_size -; "Maximum number of entries to allow in the queue" "5000" IH3$ if (mx_flq_size.gt.131072).or.(mx_flq_size.lt.10)P$ then mx_say ""D$ mx_say "An invalid queue file size was given; please enter a size"*$ mx_say "between 10 and 131,072 entries." $ mx_say ""$$ goto mx_ask_for_flq_size$ endifI)$ define mx_max_flq_entries 'mx_flq_size'_$ ENDIF$!6$! Now create the 10 subdirectories used by MX v3.2+.$!$ TYPE SYS$INPUTF MX uses 10 subdirectories under the MX message queue directory forC the actual storage of files. Those directories will be createdN now, if necessary.$!H$! Set flag indicating whether or not the FLQ file should be converted.H$! If the [.0] subdirectory exists under MX_FLQ_DIR, then it is assumed3$! that the queue file has already been converted.X$!D$ mx_move_files_to_subdirs = f$search("''mx_flq_dir'0.DIR").eqs.""K$ mx_need_to_convert_flq = (f$search("''mx_flq_dir'0.DIR").eqs."") .and.-E8 (f$search("''mx_flq_dir'SYSTEM_QUEUE.FLQ_CTL").nes."")G$ if (f$search("''mx_flq_dir'MX_SYSTEM_QUEUE.FLQ_CTL").eqs."") THEN -B mx_need_to_convert_flq = 19$ mx_flq_dir2 = mx_flq_dir - "]" + ".'mx_flq_dir_cnt']" $ mx_flq_dir_cnt = 0$ mx_flq_dir_create_loop:sA$ if f$search("''mx_flq_dir'''mx_flq_dir_cnt'.DIR").eqs."" then - 3 VMI$CALLBACK CREATE_DIRECTORY USER 'MX_FLQ_DIR2' -U, "/PROT=(S:RWE,O:RWE,G:RE,W)/OWNER=[1,4]"%$ mx_flq_dir_cnt = mx_flq_dir_cnt + 1R<$ if mx_flq_dir_cnt .lt. 10 then goto mx_flq_dir_create_loop$!H$! Now make sure we get a proper DEFAULT_PROTECTION ACL on the directory$!3$ 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)t$MX_Find_Dot_Loop:$ MX_i = MX_i - 11$ IF MX_i .GE. 0$ THENC$ IF F$EXTRACT (MX_i,1,MX_qdir) .EQS. "." THEN GOTO MX_Found_Dota$ GOTO MX_Find_Dot_Loop $ ENDIFM'$ MX_fspec = MX_qdev + "[000000]" + -t9 F$EXTRACT (1,F$LENGTH(MX_qdir)-2,MX_qdir) + ".DIR;1"r$ GOTO MX_Perform_Checki$MX_Found_Dot:D$ 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:A$ SET ACL/ACL=(DEFAULT_PROTECTION,S:RWED,O:RWED,G,W) 'MX_fspec' $!$!5$ if MX_INSTALL_EXE_ONLY then goto MX_END_HOST_CONFIGg$!G$! MX_STARTUP_INFO.DAT is read if it already exists. The values in itV3$! are used as defaults for all the prompts below.L$!6$ startup_file = "MX_ROOT:[000000]MX_STARTUP_INFO.DAT"F$ if f$search(startup_file).eqs."" then goto _mx_loop_read_startup_fin'$ open/read mx_star_info 'startup_file'-$ _mx_loop_read_startup_info:TA$ read/error=_mx_loop_read_startup_fin mx_star_info startup_line_8$ startup_line = f$edit(startup_line,"COLLAPSE,UPCASE")9$ agent = f$extract(3,100,f$element(0,":",startup_line))*($ nodes = f$element(1,":",startup_line) $ mx_'agent'_default_nodes = ""$ _mx_node_loop2:3$ if nodes.eqs."" then goto _mx_node_loop2_end $$ part = f$element(0,",",nodes)!$ nodes = nodes - part - ","c#$ node = f$element(0,"=",part)e%$ number = f$element(1,"=",part)c*$ if number.eqs."=" then number = "1"<$ mx_'agent'_default_nodes = mx_'agent'_default_nodes - + node + ","$ if node.nes."*".$ then mx_'agent'_'node'_default = number,$ else mx_'agent'_star_default = number $ endif$ goto _mx_node_loop2$ _mx1) MX042.AEL[MX.KIT]KITINSTAL.COM;4i3 -_node_loop2_end:#$ mx_'agent'_default_nodes = -tM f$extract(0,f$length(mx_'agent'_default_nodes)-1,mx_'agent'_default_nodes)&$ goto _mx_loop_read_startup_info$ _mx_loop_read_startup_fin:=$ if f$trnlnm("MX_STAR_INFO").nes."" then close mx_star_infow$!$!$!$ TYPE SYS$INPUT:l9 H O S T N A M E S E L E C T I O NG There are two host names you must designate for the "local" host orT cluster.$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") - "::"M'$ IF MX_DEF_FLQ_NODE .EQS. "" THEN -s7$ MX_DEF_FLQ_NODE = F$TRNLNM ("SYS$NODE") - "::"g$ ENDIFi$ TYPE SYS$INPUT:e MX Cluster Namec --------------- @ This is a 1-to-6 character name that uniquely identifies theB system (when standalone) or MX Cluster (when in a VMScluster).< This name should generally be the DECnet node name (when? standalone) or DECnet cluster alias (when in a VMScluster).h$!$ ask_for_mx_flq_node:<$ VMI$CALLBACK ASK MX_FLQ_NODE "Enter the MX Cluster Name" - "''MX_DEF_FLQ_NODE'" $ if f$length(mx_flq_node).gt.6i'$ then VMI$CALLBACK MESSAGE E TOOLONG - C "The specified name is too long; please specify 1 to 6 characters"i$ goto ask_for_mx_flq_node$ endif ,$ MX_DEF_MX_NODE = F$TRNLNM ("MX_NODE_NAME")$ TYPE SYS$INPUT:e MX Network Host Name --------------------B This is a 1-to-255 character name that is your "official" host name for E-mail purposes. A For Internet hosts, this should be your Internet domain name.i# (Example: myhost.mycompany.com)@ For BITNET hosts that are not Internet hosts, this should be: your BITNET host name with ".BITNET" added to the end. (Example: MYORG.BITNET)lB For UUCP hosts that are not Internet hosts, this should eitherA be your registered domain name (if you have one) or your UUCPo, node name with ".UUCP" added to the end.6 (Example: myhost.mycompany.com -or- myhost.UUCP)B$ VMI$CALLBACK ASK MX_NODE_NAME "Enter the MX network node name" - "''MX_DEF_MX_NODE'" SMm$!5$ MX_VMSMAIL_NAME = F$TRNLNM ("MX_VMSMAIL_LOCALHOST")iG$ IF MX_VMSMAIL_NAME .EQS. "" THEN MX_VMSMAIL_NAME = "@" + MX_NODE_NAMEm$! $ MX_SAY ""2$ MX_SAY " MX Cluster Name: ", MX_FLQ_NODE3$ MX_SAY " Network Host Name: ", MX_NODE_NAMEe$!3$ VMI$CALLBACK ASK MX_OK "Is this correct" "YES" BD)($ IF .NOT. MX_OK THEN GOTO MX_HOST_NAMES$!>$ WRITE MX_LOGI "MX_FLQ_NODE_NAME\/SYSTEM/EXEC\",MX_FLQ_NODE;$ WRITE MX_LOGI "MX_NODE_NAME\/SYSTEM/EXEC\",MX_NODE_NAMEmF$ WRITE MX_LOGI "MX_VMSMAIL_LOCALHOST\/SYSTEM/EXEC\",MX_VMSMAIL_NAME$!7$ WRITE MX_LOGI "MX_FLQ_DIR\/SYSTEM/EXEC\",MX_FLQ_DIR ?$ WRITE MX_LOGI "MX_ROUTER_DIR\/SYSTEM/EXEC\MX_ROOT:[ROUTER]"b=$ WRITE MX_LOGI "MX_LOCAL_DIR\/SYSTEM/EXEC\MX_ROOT:[LOCAL]"p@$ WRITE MX_LOGI "MX_MCP_HELPLIB\/SYSTEM\MX_DIR:MX_MCP_HELPLIB"D$ WRITE MX_LOGI "MX_ALIAS_HELPLIB\/SYSTEM\MX_DIR:MX_ALIAS_HELPLIB"$!0$ MX_DEF_MX_TIMEZONE = F$TRNLNM("MX_TIMEZONE").$ IF "''MX_DEF_MX_TIMEZONE'" .NES. "" THEN -= WRITE MX_LOGI "MX_TIMEZONE\/SYSTEM/EXEC\",MX_DEF_MX_TIMEZONEe$!.$ IF F$TRNLNM("MX_FLQ_AUTOPURGE_FIN").nes.""$ THEN#$ MX_ENABLE_AUTOPURGE = "YES" $ ELSE"$ MX_ENABLE_AUTOPURGE = "NO" $ ENDIF-$ TYPE SYS$INPUT$ Auto-purging of FINished entries$ --------------------------------E When an MX queue entry has been fully processed, it is marked asuE being "finished" and is left in the queue for a period of time.aE The MX Router or MX FLQ Manager scans the file every 15 minutes, ) by default, and purges "FIN" entries.OE Many sites, especially high-volume sites, don't need to keepLE finished entries in the queue for any length of time, so MX V4.2"E now includes optional automatic purging of entries in the queue.XE Enabling this feature causes queue entries and the associated-F files to be automatically delete5d when they are marked "finished."*$ VMI$CALLBACK ASK MX_ENABLE_AUTOPURGE -; "Do you wish to enable auto-purging of FINished entries" -/ "''MX_ENABLE_AUTOPURGE'" BS$ IF MX_ENABLE_AUTOPURGE$ THEN>$ WRITE MX_LOGI "MX_FLQ_AUTOPURGE_FIN\/SYSTEM/EXEC\TRUE" $ ENDIF $ TYPE SYS$INPUT MX Queue Manager Process ------------------------E The purging of processed entries from the MX message queue can beLD handled by the MX Router. You can also choose to run a separateD queue manager whose sole job is managing the message queue. The@ advantage of running the MX FLQ Manager is that it frees the# MX Router for routing messages.N%$ VMI$CALLBACK ASK MX_RUN_FLQ_MGR -XF "Do you wish to run the MX FLQ Manager as a separate process" "YES" B$ IF MX_RUN_FLQ_MGR $ THEN$ IF MX_CLUSTERS$ THENM$ IF .NOT. MX_EXPLAINED_CLUSTER_NAMES THEN GOSUB MX_EXPLAIN_CLUSTER_NAMES &$ VMI$CALLBACK ASK MX_FLQMGR_QUE -8 "Enter the node(s) that will run the MX FLQ Manager" - "''mx_flq_mgr_default_nodes'".7$ MX_STARTUP_PROCESS = "002FLQ_MGR:''MX_FLQMGR_QUE'"_$ MX_MULTIPLE_ALLOWED = 0i $ mx_say ""r%$ WRITE MX_STAR MX_STARTUP_PROCESSE$ ELSE($ MX_STARTUP_PROCESS = "002FLQ_MGR:*"$ MX_MULTIPLE_ALLOWED = 0H%$ WRITE MX_STAR MX_STARTUP_PROCESSO$ ENDIFe $ ENDIFR$ IF MX_CLUSTERS$ THENM$ IF .NOT. MX_EXPLAINED_CLUSTER_NAMES THEN GOSUB MX_EXPLAIN_CLUSTER_NAMESn%$ VMI$CALLBACK ASK MX_ROUTER_QUE -I/ "Enter the node(s) that will run the Router" -E "''mx_router_default_nodes'"9$ MX_STARTUP_PROCESS = "002ROUTER:''MX_ROUTER_QUE'"S$ MX_MULTIPLE_ALLOWED = 1N"$ GOSUB MULT_STARTUP_PROCESS%$ WRITE MX_STAR MX_STARTUP_PROCESS$!$$ VMI$CALLBACK ASK MX_LOCAL_QUE -E "Enter the node(s) that will run the Local delivery agent" -e "''MX_ROUTER_QUE'"p7$ MX_STARTUP_PROCESS = "003LOCAL:''MX_LOCAL_QUE'"e$ MX_MULTIPLE_ALLOWED = 1 "$ GOSUB MULT_STARTUP_PROCESS%$ WRITE MX_STAR MX_STARTUP_PROCESSe$ ELSE*$ MX_STARTUP_PROCESS = "002ROUTER:*"$ MX_MULTIPLE_ALLOWED = 1M"$ GOSUB MULT_STARTUP_PROCESS%$ WRITE MX_STAR MX_STARTUP_PROCESS:)$ MX_STARTUP_PROCESS = "003LOCAL:*"E$ MX_MULTIPLE_ALLOWED = 1 "$ GOSUB MULT_STARTUP_PROCESS%$ WRITE MX_STAR MX_STARTUP_PROCESSU $ ENDIFX$ CLOSE MX_STARU$ CLOSE MX_LOGI,$ ELSE0$ MX_ROOT = F$TRNLNM ("MX_ROOT") - "][" - ".]"E$ MX_TMP = F$PARSE (MX_ROOT+"]",,,,"NO_CONCEAL,SYNTAX_ONLY") - "][" 3$ MX_INSTALL_DEVICE = F$PARSE (MX_TMP,,,"DEVICE")-%$ MX_INSTALL_ROOT = "MX_DEVICE:"+ - 0 F$PARSE (MX_TMP,,,"DIRECTORY") - "]" + ".]"I$ DEFINE MX_DEVICE 'MX_INSTALL_DEVICE'/TRANSLATION=(CONCEALED,TERMINAL)"B$ DEFINE MX_INSTALL_ROOT 'MX_INSTALL_ROOT'/TRANSLATION=CONCEALED:$ DEFINE MX_ROOT 'MX_INSTALL_ROOT'/TRANSLATION=CONCEALED $ IF MX_VAXM#$ THEN MX_EXE = MX_ROOT + ".EXE]"A)$ ELSE MX_EXE = MX_ROOT + ".ALPHA_EXE]"' $ ENDIF /$ COPY 'MX_ROOT']MX_STARTUP_INFO.DAT VMI$KWD:E+$ COPY 'MX_ROOT']MX_LOGICALS.DAT VMI$KWD:T $ DEFINE MX_SHR 'MX_EXE'MX_SHR $ DEFINE MX_MSG 'MX_EXE'MX_MSG($ DEFINE MX_FLQ_SHR 'MX_EXE'MX_FLQ_SHR$ ENDIFC$!5$ if MX_INSTALL_EXE_ONLY then goto MX_END_HOST_CONFIG $ IF MX_DO_SMTP .EQS. "*"'$ THEN$ IF MX_CLUSTERG$ THENM$ IF .NOT. MX_EXPLAINED_CLUSTER_NAMES THEN GOSUB MX_EXPLAIN_CLUSTER_NAMES=#$ VMI$CALLBACK ASK MX_SMTP_QUE - D "Enter the node(s) that will run the SMTP delivery agent" - "''mx_smtp_9 MX042.AEL[MX.KIT]KITINSTAL.COM;4i<default_nodes'" 2$ MX_STARTUP_PROCESS = "004SMTP:''MX_SMTP_QUE'"$ MX_MULTIPLE_ALLOWED = 1u$ GOSUB MX_ADD_STARTUP $!%$ VMI$CALLBACK ASK MX_SMTPSV_QUE -< "Enter the node(s) that will run the SMTP server" -* "''mx_smtp_server_default_nodes'";$ MX_STARTUP_PROCESS = "004SMTP_SERVER:''MX_SMTPSV_QUE'"O$ MX_MULTIPLE_ALLOWED = 0F$ GOSUB MX_ADD_STARTUPA"$ GOSUB ASK_HOW_MANY_INCOMING_SMTP$ ELSE%$ MX_STARTUP_PROCESS = "004SMTP:*"S$ MX_MULTIPLE_ALLOWED = 1$ GOSUB MX_ADD_STARTUPS,$ MX_STARTUP_PROCESS = "004SMTP_SERVER:*"$ MX_MULTIPLE_ALLOWED = 0!$ GOSUB MX_ADD_STARTUPN"$ GOSUB ASK_HOW_MANY_INCOMING_SMTP $ ENDIFY$ ENDIFX$!$ IF MX_DO_JNET .EQS. "*"_$ THEN$ IF MX_CLUSTERB$ THENM$ IF .NOT. MX_EXPLAINED_CLUSTER_NAMES THEN GOSUB MX_EXPLAIN_CLUSTER_NAMESR#$ VMI$CALLBACK ASK MX_JNET_QUE -? "Enter the node(s) that will run the Jnet interface" -  "''mx_jnet_default_nodes'"A2$ MX_STARTUP_PROCESS = "004JNET:''MX_JNET_QUE'"$ MX_MULTIPLE_ALLOWED = 1D$ GOSUB MX_ADD_STARTUP $!$ ELSE%$ MX_STARTUP_PROCESS = "004JNET:*"V$ MX_MULTIPLE_ALLOWED = 1N$ GOSUB MX_ADD_STARTUP $ ENDIFX$ ENDIF0$!$ IF MX_DO_UUCP .EQS. "*""$ THEN$ IF MX_CLUSTER $ THENM$ IF .NOT. MX_EXPLAINED_CLUSTER_NAMES THEN GOSUB MX_EXPLAIN_CLUSTER_NAMEST#$ VMI$CALLBACK ASK MX_UUCP_QUE -E "Enter the node(s) that will run the UUCP interface agent" - "''mx_uucp_default_nodes'"I2$ MX_STARTUP_PROCESS = "004UUCP:''MX_UUCP_QUE'"$ MX_MULTIPLE_ALLOWED = 1g$ GOSUB MX_ADD_STARTUPn$ ELSE%$ MX_STARTUP_PROCESS = "004UUCP:*"-$ MX_MULTIPLE_ALLOWED = 1o$ GOSUB MX_ADD_STARTUPr $ ENDIFc$ ENDIFi$!$ IF MX_DO_DNSMTP .EQS. "*"e$ THEN$ IF MX_CLUSTERh$ THENM$ IF .NOT. MX_EXPLAINED_CLUSTER_NAMES THEN GOSUB MX_EXPLAIN_CLUSTER_NAMESt%$ VMI$CALLBACK ASK MX_DNSMTP_QUE -dK "Enter the node(s) that will run the DECnet-SMTP delivery agent" -e! "''mx_dnsmtp_default_nodes'"F6$ MX_STARTUP_PROCESS = "004DNSMTP:''MX_DNSMTP_QUE'"$ MX_MULTIPLE_ALLOWED = 1S$ GOSUB MX_ADD_STARTUPX$ ELSE'$ MX_STARTUP_PROCESS = "004DNSMTP:*" $ MX_MULTIPLE_ALLOWED = 1$ GOSUB MX_ADD_STARTUPI $ ENDIF $ ENDIF"$!$ IF MX_DO_XSMTP .EQS. "*"$ THEN$ IF MX_CLUSTERC$ THENM$ IF .NOT. MX_EXPLAINED_CLUSTER_NAMES THEN GOSUB MX_EXPLAIN_CLUSTER_NAMES $$ VMI$CALLBACK ASK MX_XSMTP_QUE -I "Enter the node(s) that will run the X.25-SMTP delivery agent" -M "''mx_xsmtp_default_nodes'"4$ MX_STARTUP_PROCESS = "004XSMTP:''MX_XSMTP_QUE'"$ MX_MULTIPLE_ALLOWED = 0O$ GOSUB MX_ADD_STARTUPO$ ELSE&$ MX_STARTUP_PROCESS = "004XSMTP:*"$ MX_MULTIPLE_ALLOWED = 0:$ GOSUB MX_ADD_STARTUPF $ ENDIF'$ ENDIF]$!$ IF MX_DO_SITE .EQS. "*"$ THEN$ IF MX_CLUSTERO$ THENM$ IF .NOT. MX_EXPLAINED_CLUSTER_NAMES THEN GOSUB MX_EXPLAIN_CLUSTER_NAMES #$ VMI$CALLBACK ASK MX_SITE_QUE -eE "Enter the node(s) that will run the SITE interface agent" -  "''mx_site_default_nodes'"i2$ MX_STARTUP_PROCESS = "004SITE:''MX_SITE_QUE'"$ MX_MULTIPLE_ALLOWED = 1i$ GOSUB MX_ADD_STARTUPl$ ELSE%$ MX_STARTUP_PROCESS = "004SITE:*"y$ MX_MULTIPLE_ALLOWED = 1 $ GOSUB MX_ADD_STARTUPa $ ENDIF $ ENDIFI$!$ IF MX_DO_MLF .EQS. "*"$ THEN$ IF MX_CLUSTERS$ THENM$ IF .NOT. MX_EXPLAINED_CLUSTER_NAMES THEN GOSUB MX_EXPLAIN_CLUSTER_NAMESF"$ VMI$CALLBACK ASK MX_MLF_QUE -I "Enter the node(s) that will run the Mailing List/File Server" -u "''mx_mlf_default_nodes'"0$ MX_STARTUP_PROCESS = "005MLF:''MX_MLF_QUE'"$ MX_MULTIPLE_ALLOWED = 0U$ GOSUB MX_ADD_STARTUPR$ ELSE$$ MX_STARTUP_PROCESS = "005MLF:*"$ MX_MULTIPLE_ALLOWED = 0I$ GOSUB MX_ADD_STARTUP_ $ ENDIFS$ ENDIFU$!$ IF MX_DO_LSV .EQS. "*"$ THEN$ IF MX_CLUSTERt$ THENM$ IF .NOT. MX_EXPLAINED_CLUSTER_NAMES THEN GOSUB MX_EXPLAIN_CLUSTER_NAMES "$ VMI$CALLBACK ASK MX_LSV_QUE -C "Enter the node(s) that will run the LISTSERV interface" -l "''mx_lsv_default_nodes'"0$ MX_STARTUP_PROCESS = "005LSV:''MX_LSV_QUE'"$ MX_MULTIPLE_ALLOWED = 0b$ GOSUB MX_ADD_STARTUPu$!$ ELSE$$ MX_STARTUP_PROCESS = "005LSV:*"$ MX_MULTIPLE_ALLOWED = 0e$ GOSUB MX_ADD_STARTUP $ ENDIFt$ ENDIFh$!$MX_END_HOST_CONFIG:$ IF MX_DO_NETLIB .EQS. "*"i$ THEN$ TYPE SYS$INPUT:s5 Now installing NETLIB library for TCP/IP support.e1$ VMI$CALLBACK RESTORE_SAVESET 'netlib_saveset'lC$ MX_NETLIB_RELNOT = F$SEARCH ("VMI$KWD:NETLIB%%%.RELEASE_NOTES")0 $ IF MX_NETLIB_RELNOT .NES. ""$ THEN?$ MX_NETLIB_RELNOT = F$PARSE (MX_NETLIB_RELNOT,,,"NAME") +-6 F$PARSE (MX_NETLIB_RELNOT,,,"TYPE")I$ VMI$CALLBACK PROVIDE_FILE MX_OK 'MX_NETLIB_RELNOT' VMI$ROOT:[SYSHLP]e=$ MX_NETLIB_PRODNAME = F$PARSE (MX_NETLIB_RELNOT,,,"NAME")f9$ MX_NETLIB_PRODVER = MX_NETLIB_PRODNAME - "NETLIB"bE$ MX_NETLIB_VER = "V" + F$EXTRACT (0,2,MX_NETLIB_PRODVER) + "." +-1+ F$EXTRACT (2,-1,MX_NETLIB_PRODVER)"5$ IF F$EXTRACT (1,1,MX_NETLIB_VER) .EQS. "0" THEN-e, MX_NETLIB_VER = MX_NETLIB_VER - "0"&$ VMI$CALLBACK MESSAGE I NETLRNOT -N "Release notes for NETLIB ''MX_NETLIB_VER' have been copied to SYS$HELP."$ ELSE%$ MX_NETLIB_PRODNAME = "NETLIB020"M $ ENDIF!"$ define netlib_oem_install true!$ MX_SAVE_PRODUCT = VMI$PRODUCTe$$ VMI$PRODUCT = MX_NETLIB_PRODNAME$ @VMI$KWD:NETLIB_INSTALLt!$ VMI$PRODUCT = MX_SAVE_PRODUCT &$ MX_STARTUP_PROCESS = "001NETLIB:*":$ if .not.mx_install_exe_only then GOSUB MX_ADD_STARTUP2.$ DEFINE NETLIB_SHRXFR VMI$KWD:NETLIB_SHRXFR$!$ ELSE1$ DEFINE NETLIB_SHRXFR NETLIB_DIR:NETLIB_SHRXFRe$ ENDIF!$!,$!--- no more questions after this point ---$!$ TYPE SYS$INPUT: ? The installation will continue for another 5 to 45 minutes,.< depending on your CPU type, distribution media, etc. No further input is required.$!$ IF MX_DO_BASE .EQS. "*"s$ THEN$ TYPE SYS$INPUT:v3 Now loading the Message Exchange base software.x"$ VMI$CALLBACK RESTORE_SAVESET D$!6$ IF F$SEARCH("''MX_ROOT']ROUTER.DIR").eqs."" then -7 VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'.ROUTER] -R0 "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W:E)"5$ IF F$SEARCH("''MX_ROOT']LOCAL.DIR").eqs."" then -_6 VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'.LOCAL] -0 "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W:E)"$! $ IF MX_VAXP#$ THEN MX_EXE = MX_ROOT + ".EXE]" )$ ELSE MX_EXE = MX_ROOT + ".ALPHA_EXE]"C $ ENDIF $!4$! >> NOTE: MX_MAILSHR depends on MX_MAILSHRP!!! <<$!Q$ MX_IMAGES = "MX_FLQ_SHR/SHARE,MX_MSG/SHARE,MX_SHR/SHARE,MX_MAILSHRP/SHARE,"+- 1 "MX_MAILSHR/SHARE,MCP,MX_ROUTER,"+- F "MX_LOCAL,MAILQUEUE,MLFAKE,MXALIAS,MX_DECODE,MX_FLQ_MGR"D$ MX_TRACES = "NOTRACE,NOTRACE,NOTRACE,NOTRACE,NOTRACE,NOTRACE,"+-? "TRACE,TRACE,NOTRACE,NOTRACE,NOTRACE,NOTRACE,NOTRACE"E $ MX_I = -1G$MX_BASE_LOOP:$ MX_I = MX_I + 1 /$ MX_IMAGE = F$ELEMENT (MX_I, ",", MX_IMAGES)f4$ 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"r+$ MX_IMAGE = F$ELEMENT (0, "/", MX_IMAGE),$!>$!---> note special handling of the privileged shareable <----#$ IF MX_IMAGE .EQS. "MX_MAILSHRP"X$ THEN=$ IF MX_AXP THEN MX_IMGQ = "PROTECT/SYSEXE/NOSYSSHR/SHARE"r6$ I'i MX042.AEL[MX.KIT]KITINSTAL.COM;4i SKF MX_VAX THEN MX_IMGQ = "PROTECT/NOSYSSHR/SHARE" $ ENDIF=$!5$ MX_TRACE = "/" + F$ELEMENT (MX_I, ",", MX_TRACES)uA$ VMI$CALLBACK MESSAGE I LINKING "Linking image ''MX_IMAGE'..."s5$ LINK/'MX_IMGQ'=VMI$KWD:'MX_IMAGE'.EXE'MX_TRACE' -T? VMI$KWD:'MX_IMAGE''OPT'/OPT,VMI$KWD:'MX_IMAGE'.VERSION/OPTn$!G$! After linking MX_MAILSHR, we need to relink MX_MAILSHRP without thet$! universal symbols.$!"$ IF MX_IMAGE .EQS. "MX_MAILSHR"$ THENH$ VMI$CALLBACK MESSAGE I LINKING "Linking image MX_MAILSHRP (secure)..."=$ IF MX_AXP THEN MX_IMGQ = "PROTECT/SYSEXE/NOSYSSHR/SHARE"l6$ IF MX_VAX THEN MX_IMGQ = "PROTECT/NOSYSSHR/SHARE"2$ LINK/'MX_IMGQ'=VMI$KWD:MX_MAILSHRP.EXE/NOTRACE -+ VMI$KWD:MX_MAILSHRP_NOUNIV'OPT'/OPTIONS,-s! VMI$KWD:MX_MAILSHRP.VERSION/OPTa>$ VMI$CALLBACK PROVIDE_IMAGE MX_IMGOK MX_MAILSHRP.EXE 'MX_EXE' $ ENDIFi$!N$ IF MX_IMAGE .NES. "MLFAKE" THEN SET PROTECTION=W:RE VMI$KWD:'MX_IMAGE'.EXE$!*$ IF MX_IMAGE .NES. "MX_MAILSHRP" THEN -< VMI$CALLBACK PROVIDE_IMAGE MX_IMGOK 'MX_IMAGE'.EXE 'MX_EXE'$ GOTO MX_BASE_LOOPf$MX_END_BASE_LOOP:G$ IF f$search("''MX_EXE'FLQU.EXE").nes."" then - !Get rid of obsoleteo< VMI$CALLBACK DELETE_FILE 'MX_EXE'FLQU.EXE !... FLQU utilityJ$ IF f$search("''MX_EXE'FLQ_SHR.EXE").nes."" then - !Get rid of obsolete@ VMI$CALLBACK DELETE_FILE 'MX_EXE'FLQ_SHR.EXE !... FLQ_SHR imageG$!$ VMI$CALLBACK PROVIDE_FILE MX_TMP MX_SYSTEM_QUEUE.FDL 'MX_FLQ_DIR'o>$ IF F$SEARCH("''MX_FLQ_DIR'MX_SYSTEM_QUEUE.FLQ_CTL").eqs.""$ THEN$$ VMI$CALLBACK MESSAGE I NEWQUE -L "The MX system message queue will be created later in the install."$ ELSE&$ VMI$CALLBACK MESSAGE I NONEWQUE -I "The MX message queue file already exists and will be retained."P!$ VMI$CALLBACK SET POSTINSTALL NO- $ ENDIF-&$ IF .not.MX_INSTALL_EXE_ONLY THEN -4 VMI$CALLBACK PROVIDE_FILE "" MX_FILE_LIST.TXT "" T;$ IF f$search("''MX_ROOT']MCP_HELPLIB.HLB").nes."" then - 3 VMI$CALLBACK DELETE_FILE 'MX_ROOT']MCP_HELPLIB.HLBt!$ CREATE VMI$KWD:MX_STARTUP.COMw.$ OPEN/APPEND MX_STMP VMI$KWD:MX_STARTUP.COM$ write mx_stmp -AB f$fao("$!! MX_STARTUP.COM, created during installation of !AS",- mx_installing_version)A$ write mx_stmp f$fao("$!! at !%D by user !AS on node !AS",-f? 0,f$edit(f$getjpi("","USERNAME"),"TRIM"),f$getsyi("SCSNODE"))aL$ WRITE MX_STMP "$ @''MX_EXE'MX___STARTUP 'P1 'P2 'P3 'P4 'P5 'P6 'P7 'P8"$ write mx_stmp "$ EXIT"$ CLOSE MX_STMP I$ VMI$CALLBACK PROVIDE_FILE MX_OK MX_STARTUP.COM VMI$ROOT:[SYS$STARTUP]r $ DEFINE MX_SHR VMI$KWD:MX_SHR($ DEFINE MX_FLQ_SHR VMI$KWD:MX_FLQ_SHR$ ENDIFl$!($! Begin the SMTP support installation.$!$ IF MX_DO_SMTP .EQS. "*" $ THEN$ TYPE SYS$INPUT: 4 Now providing the SMTP support files and images."$ VMI$CALLBACK RESTORE_SAVESET E$!4$ IF F$SEARCH("''MX_ROOT']SMTP.DIR").eqs."" then -5 VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'.SMTP] -i. "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W)"$!<$ MX_IMAGES = "MX_SMTP,SMTP_SERVER,DOMAIN_EXPANSION/SHARE"%$ MX_TRACES = "TRACE,TRACE,NOTRACE" $ MX_I = -1K$MX_SMTP_LOOP:$ MX_I = MX_I + 1r/$ 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)L5$ MX_TRACE = "/" + F$ELEMENT (MX_I, ",", MX_TRACES)NA$ VMI$CALLBACK MESSAGE I LINKING "Linking image ''MX_IMAGE'..."F4$ LINK/'MX_IMGQ'=VMI$KWD:'MX_IMAGE'.EXE'MX_TRACE'-? VMI$KWD:'MX_IMAGE''OPT'/OPT,VMI$KWD:'MX_IMAGE'.VERSION/OPTL.$ SET PROTECTION=W:RE VMI$KWD:'MX_IMAGE'.EXE?$ VMI$CALLBACK PROVIDE_IMAGE MX_IMGOK 'MX_IMAGE'.EXE 'MX_EXE'_$ GOTO MX_SMTP_LOOPL$MX_END_SMTP_LOOP:$!$ ENDIF_$!$ IF MX_DO_JNET .EQS. "*"_$ THEN$ TYPE SYS$INPUT:O4 Now providing the Jnet support files and images."$ VMI$CALLBACK RESTORE_SAVESET F$!0$ IF F$SEARCH ("JAN_SYS:ZIPPROT.EXE") .EQS. ""$ THEN%$ VMI$CALLBACK MESSAGE E OLDJNET -_9 "This version of MX requires Jnet V3.5 or later"I$ GOTO MX_JNET_END_INSTALLI $ ENDIFE$!4$ IF F$SEARCH("''MX_ROOT']JNET.DIR").eqs."" then -5 VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'.JNET] -G. "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W)"$!*$ MX_IMAGES = "MX_JNET,MX_MFSDISP/SHARE" $ IF MX_AXP -$ THEN MX_TRACES = "TRACE/NONATIVE,NOTRACE"g$$ ELSE MX_TRACES = "TRACE,NOTRACE" $ ENDIF- $ MX_I = -1 $MX_JNET_LOOP:$ MX_I = MX_I + 1 /$ MX_IMAGE = F$ELEMENT (MX_I, ",", MX_IMAGES)"4$ 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"u+$ MX_IMAGE = F$ELEMENT (0, "/", MX_IMAGE)c5$ MX_TRACE = "/" + F$ELEMENT (MX_I, ",", MX_TRACES)iA$ 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/OPTa.$ SET PROTECTION=W:RE VMI$KWD:'MX_IMAGE'.EXE?$ VMI$CALLBACK PROVIDE_IMAGE MX_IMGOK 'MX_IMAGE'.EXE 'MX_EXE'K$ GOTO MX_JNET_LOOP$MX_END_JNET_LOOP:9$ VMI$CALLBACK PROVIDE_FILE MX_TMP MX_JNET.COM 'MX_EXE'O$!$ TYPE SYS$INPUT:BI Remember that Jnet must be started AFTER MX is started. To start theXG MX/Jnet Interface, include the following commands in the JANSITE or+ JANSITECOMMON procedures for your node:n7 $ DEFINE/SYS/EXEC JAN_MFSDISP MX_EXE:MX_MFSDISP 8 $ 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 ofKK your mailer account. For more information, see the Installation Guide. $!$MX_JNET_END_INSTALL:U$!$ ENDIF $!$ IF MX_DO_UUCP .EQS. "*"N$ THEN$ TYPE SYS$INPUT:_4 Now providing the UUCP support files and images."$ VMI$CALLBACK RESTORE_SAVESET G$!4$ IF F$SEARCH("''MX_ROOT']UUCP.DIR").eqs."" then -5 VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'.UUCP] - . "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W)"$!"$ MX_IMAGES = "MX_UUCP,MX_RMAIL"$ MX_TRACES = "TRACE,TRACE"E $ MX_I = -1M$MX_UUCP_LOOP:$ MX_I = MX_I + 1 /$ MX_IMAGE = F$ELEMENT (MX_I, ",", MX_IMAGES)R4$ 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)I5$ 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/OPTR+$ SET PROTECTION=W VMI$KWD:'MX_IMAGE'.EXEE?$ VMI$CALLBACK PROVIDE_IMAGE MX_IMGOK 'MX_IMAGE'.EXE 'MX_EXE'a$ GOTO MX_UUCP_LOOPX$MX_END_UUCP_LOOP:9$ VMI$CALLBACK PROVIDE_FILE MX_TMP MX_UUCP.COM 'MX_EXE' $ TYPE SYS$INPUT@ If you're using a version of DECUS UUCP prior to V2.0, don'tA forget to modify the file UUCP_BIN:UUXQT_DCL.COM as described"C in the installation guide to supply the hook needed to transferS mail from UUCP to MX.RB DECUS UUCP V2.0 already supplies the MX hook in UUXQT_DCL.COM.D Also remember that DECUS UUCP should be started (or at least the+ logicals defined) before MX is started.S$ ENDIF$!$ IF MX_DO_DNSMTP .EQS. "*"X$ THEN$ TYPE SYS$INPUT:-; Now providing the DECnet-SMTP support files and images.SyH MX042.AEL[MX.KIT]KITINSTAL.COM;4iZ"$ VMI$CALLBACK RESTORE_SAVESET H$!6$ IF F$SEARCH("''MX_ROOT']DNSMTP.DIR").eqs."" then -7 VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'.DNSMTP] -]. "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W)"$!)$ MX_IMAGES = "MX_DNSMTP,DNSMTP_SERVER"E$ MX_TRACES = "TRACE,TRACE"O $ MX_I = -1C$MX_DNSMTP_LOOP:$ MX_I = MX_I + 1L/$ MX_IMAGE = F$ELEMENT (MX_I, ",", MX_IMAGES) 6$ IF MX_IMAGE .EQS. "," THEN GOTO MX_END_DNSMTP_LOOP*$ MX_IMGQ = F$ELEMENT (1, "/", MX_IMAGE)-$ IF MX_IMGQ .EQS. "/" THEN MX_IMGQ = "EXE"Y+$ MX_IMAGE = F$ELEMENT (0, "/", MX_IMAGE)I5$ MX_TRACE = "/" + F$ELEMENT (MX_I, ",", MX_TRACES)MA$ 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_DNSMTP_LOOP $MX_END_DNSMTP_LOOP:$!$ TYPE SYS$INPUT:"E Please refer to the Installation Guide for information on settingQ, up a DECnet object for SMTP-over-DECnet.$!$ ENDIFR$!$ IF MX_DO_XSMTP .EQS. "*"$ THEN$ TYPE SYS$INPUT:n9 Now providing the X.25-SMTP support files and images.'"$ VMI$CALLBACK RESTORE_SAVESET I$!5$ IF F$SEARCH("''MX_ROOT']XSMTP.DIR").eqs."" then - 6 VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'.XSMTP] -. "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W)"$!'$ MX_IMAGES = "MX_XSMTP,XSMTP_SERVER" $ MX_TRACES = "TRACE,TRACE" $ MX_I = -1T$MX_XSMTP_LOOP:T$ MX_I = MX_I + 1M/$ MX_IMAGE = F$ELEMENT (MX_I, ",", MX_IMAGES) 5$ IF MX_IMAGE .EQS. "," THEN GOTO MX_END_XSMTP_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)CA$ 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/OPTL.$ SET PROTECTION=W:RE VMI$KWD:'MX_IMAGE'.EXE?$ VMI$CALLBACK PROVIDE_IMAGE MX_IMGOK 'MX_IMAGE'.EXE 'MX_EXE'M$ GOTO MX_XSMTP_LOOP$MX_END_XSMTP_LOOP:U$!$ TYPE SYS$INPUT:E Please refer to the Installation Guide for information on setting * up a P.S.I. object for SMTP-over-X.25.$!$ ENDIF_$!$ IF MX_DO_SITE .EQS. "*"C$ THEN$ TYPE SYS$INPUT: C Now providing the site-specific agent support files and images.'"$ VMI$CALLBACK RESTORE_SAVESET J$!4$ IF F$SEARCH("''MX_ROOT']SITE.DIR").eqs."" then -5 VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'.SITE] - . "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W)"$!$$ MX_IMAGES = "MX_SITE,MX_SITE_IN"$ MX_TRACES = "TRACE,TRACE" $ MX_I = -1D$MX_SITE_LOOP:$ MX_I = MX_I + 1L/$ 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" +$ MX_IMAGE = F$ELEMENT (0, "/", MX_IMAGE)_5$ MX_TRACE = "/" + F$ELEMENT (MX_I, ",", MX_TRACES)MA$ VMI$CALLBACK MESSAGE I LINKING "Linking image ''MX_IMAGE'..."U5$ 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'I$ GOTO MX_SITE_LOOPG$MX_END_SITE_LOOP:9$ VMI$CALLBACK PROVIDE_FILE MX_TMP MX_SITE.COM 'MX_EXE'"a$ ENDIF $!$ IF MX_DO_MLF .EQS. "*"$ THEN$ TYPE SYS$INPUT: I Now installing the Mailing List/File Server support files and images.Q$!"$ VMI$CALLBACK RESTORE_SAVESET K$!3$ IF F$SEARCH("''MX_ROOT']MLF.DIR").eqs."" then -S4 VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'.MLF] -. "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W)"A$ IF F$SEARCH("''MX_ROOT'.MLF]MAILING_LISTS.DIR").eqs."" then -NB VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'.MLF.MAILING_LISTS] -. "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W)"$!$ MX_IMAGES = "MX_MLF" MX_TRACES = "TRACE"i $ MX_I = -1 $MX_MLF_LOOP:s$ MX_I = MX_I + 1/$ MX_IMAGE = F$ELEMENT (MX_I, ",", MX_IMAGES)"3$ IF MX_IMAGE .EQS. "," THEN GOTO MX_END_MLF_LOOP_*$ MX_IMGQ = F$ELEMENT (1, "/", MX_IMAGE)-$ IF MX_IMGQ .EQS. "/" THEN MX_IMGQ = "EXE" +$ MX_IMAGE = F$ELEMENT (0, "/", MX_IMAGE)N5$ MX_TRACE = "/" + F$ELEMENT (MX_I, ",", MX_TRACES)LA$ VMI$CALLBACK MESSAGE I LINKING "Linking image ''MX_IMAGE'..."S5$ LINK/'MX_IMGQ'=VMI$KWD:'MX_IMAGE'.EXE'MX_TRACE' -M? VMI$KWD:'MX_IMAGE''OPT'/OPT,VMI$KWD:'MX_IMAGE'.VERSION/OPTi$!?$ VMI$CALLBACK PROVIDE_IMAGE MX_IMGOK 'MX_IMAGE'.EXE 'MX_EXE'R$ GOTO MX_MLF_LOOP$MX_END_MLF_LOOP:X6$ IF MX_INSTALL_EXE_ONLY THEN goto MX_END_MLF_LOOP_27$ VMI$CALLBACK PROVIDE_FILE "" MX_MLIST_LIST.TXT "" TL$$ MX_1 = MX_ROOT + ".LOCAL.MLIST]"*$ MX_2 = MX_ROOT + ".MLF.MAILING_LISTS]"B$ MX_FILES = "MLIST_ADD_MESSAGE.TXT,MLIST_REMOVE_MESSAGE.TXT,"+-4 "MLIST_FORWARD_MESSAGE.TXT,MLIST_HELP.TXT" $ MX_I = -1 $MX_MLF_LOOP_2:S$ MX_I = MX_I + 1 +$ MX_FILE = F$ELEMENT (MX_I,",",MX_FILES)E4$ IF MX_FILE .EQS. "," THEN GOTO MX_END_MLF_LOOP_2?$ IF F$SEARCH (MX_2+MX_FILE) .NES. "" THEN GOTO MX_MLF_LOOP_2_'$ IF F$SEARCH (MX_1+MX_FILE) .NES. ""$ THEN#$ RENAME 'MX_1''MX_FILE' 'MX_2';:$ GOTO MX_MLF_LOOP_2L $ ENDIF3$ VMI$CALLBACK PROVIDE_FILE MX_TMP 'MX_FILE 'MX_2$ GOTO MX_MLF_LOOP_2$MX_END_MLF_LOOP_2: $ IF .not.MX_INSTALL_EXE_ONLYT$ THEND$ IF F$SEARCH ("''MX_ROOT'.MLF]FILESERV_HELP.TXT") .EQS. "" THEN -F VMI$CALLBACK PROVIDE_FILE MX_TMP FILESERV_HELP.TXT 'MX_ROOT'.MLF]>$ VMI$CALLBACK PROVIDE_FILE MX_TMP MLF_CONFIG.COM 'MX_ROOT']$!$ ENDIFN$ ENDIF_$!$ IF MX_DO_LSV .EQS. "*"$ THEN$ TYPE SYS$INPUT: 0 Now installing the LISTSERV interface image.$!"$ VMI$CALLBACK RESTORE_SAVESET L$!3$ IF F$SEARCH("''MX_ROOT']LSV.DIR").eqs."" then -M4 VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'.LSV] -. "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W)"$!$ MX_IMAGES = "MX_LSV" MX_TRACES = "TRACE"D $ MX_I = -1 $MX_LSV_LOOP:A$ MX_I = MX_I + 1O/$ MX_IMAGE = F$ELEMENT (MX_I, ",", MX_IMAGES)S3$ IF MX_IMAGE .EQS. "," THEN GOTO MX_END_LSV_LOOP-*$ MX_IMGQ = F$ELEMENT (1, "/", MX_IMAGE)-$ IF MX_IMGQ .EQS. "/" THEN MX_IMGQ = "EXE"R+$ MX_IMAGE = F$ELEMENT (0, "/", MX_IMAGE) 5$ 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/OPTE$!?$ VMI$CALLBACK PROVIDE_IMAGE MX_IMGOK 'MX_IMAGE'.EXE 'MX_EXE'_$ GOTO MX_LSV_LOOP$MX_END_LSV_LOOP:D$ ENDIFH$!$ IF MX_DO_DOC .EQS. "*"$ THEN$ TYPE SYS$INPUT:B> Now providing MX documentation to directory MX_ROOT:[DOC]."$ VMI$CALLBACK RESTORE_SAVESET M3$ IF F$SEARCH("''MX_ROOT']DOC.DIR").eqs."" then -s4 VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'.DOC] -1 "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W:RE)"F5$ VMI$CALLBACK PROVIDE_FILE "" MX_DOC_LIST.TXT "" T?$ IF f$search("''MX_ROOT'.DOC]INSTALL_GUIDE.*").nes."" then -A7 VMI$CALLBACK DELETE_FILE 'MX_ROOT'.DOC]INSTALL_GUIDE.*]<$ IF f$search("''MX_ROOT'.DOC]MGMT_GUIDE.*").nes."" then -4 VMI$CALLBACK DELETE_FILE 'MX_ROOT'.DOC]MGMT_GUIDE.*;$ IF f$search("''MX_ROOT'.DOC]MLF_GUIDE.*").nes."" then -q3 VMI$CALLBACK DELETE_FILE 'MX_ROOT'.DOC]MLF_GUIDE.*_<$ IF f$search("''MX_ROOT'.DOC]USER_GUIDE] MX042.AEL[MX.KIT]KITINSTAL.COM;4iJi.*").nes."" then -4 VMI$CALLBACK DELETE_FILE 'MX_ROOT'.DOC]USER_GUIDE.*<$ IF f$search("''MX_ROOT'.DOC]PROG_GUIDE.*").nes."" then -4 VMI$CALLBACK DELETE_FILE 'MX_ROOT'.DOC]PROG_GUIDE.*$ ENDIF$!$!$ IF MX_DO_EXAMPLES .EQS. "*"G$ THEN$ TYPE SYS$INPUT:RF Now providing MX example files and programs to MX_ROOT:[EXAMPLES]."$ VMI$CALLBACK RESTORE_SAVESET N8$ IF F$SEARCH("''MX_ROOT']EXAMPLES.DIR").eqs."" then -9 VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'.EXAMPLES] -E1 "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W:RE)"I:$ VMI$CALLBACK PROVIDE_FILE "" MX_EXAMPLES_LIST.TXT "" T$ ENDIFT$!$ IF MX_DO_CONTRIB .EQS. "*"$ THEN$ TYPE SYS$INPUT:XA Now providing MX user-contributed files to MX_ROOT:[CONTRIB]._"$ VMI$CALLBACK RESTORE_SAVESET O7$ IF F$SEARCH("''MX_ROOT']CONTRIB.DIR").eqs."" then -n8 VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'.CONTRIB] -1 "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W:RE)"I9$ VMI$CALLBACK PROVIDE_FILE "" MX_CONTRIB_LIST.TXT "" T $ ENDIFV$!$ IF .not.MX_INSTALL_EXE_ONLY/$ THEN/$ file = f$search("''MX_ROOT']MX_LOGICALS.DAT")X$ if file.nes.""*$ then copy 'file' VMI$KWD:MX_LOGICALS.OLD=$ vmi$callback provide_file mx_ok mx_logicals.old 'MX_ROOT']E$ endifT3$ file = f$search("''MX_ROOT']MX_STARTUP_INFO.DAT")X$ if file.nes."".$ then copy 'file' VMI$KWD:MX_STARTUP_INFO.OLDA$ vmi$callback provide_file mx_ok mx_startup_info.old 'MX_ROOT']F$ endif <$ VMI$CALLBACK PROVIDE_FILE MX_OK MX_LOGICALS.DAT 'MX_ROOT']@$ VMI$CALLBACK PROVIDE_FILE MX_OK MX_STARTUP_INFO.DAT 'MX_ROOT']$ ENDIFO $ mx_say ""O2$ mx_say " MX installation procedure complete."$ IF MX_DO_BASE"$ THEN?$ if ($type(mx_flq_size).nes."").and.(.not.mx_install_exe_only)R$ then mx_say ""G$ mx_say " The MX message queue will be created after the new files"M;$ mx_say " have been moved to their target directories."M&$ else VMI$CALLBACK SET POSTINSTALL NO8$ IF f$trnlnm("MX_OLD_FLQ").nes."" then close mx_old_flq$ endif $ ENDIFV $ mx_say ""R$ IF MX_DO_BASEG$ THEN$ TYPE SYS$INPUT: E Be sure to follow the post-installation instructions described inUC the MX Installation Guide. This will minimally include editing 6 SYSTARTUP_V5.COM to include the following command:( $ @SYS$STARTUP:MX_STARTUP$ WAIT 00:00:05B$ TYPE SYS$INPUT:XC If this is a new installation of MX, or you need to reconfigureTC MX before starting it up, you should ensure that all MX logicalXE names are defined and shareable images are installed by executingE1 $ @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$ ENDIF L$ IF F$TRNLNM ("MX_FLQ_SHR","LNM$PROCESS") .NES. "" THEN DEASSIGN MX_FLQ_SHRD$ IF F$TRNLNM ("MX_SHR","LNM$PROCESS") .NES. "" THEN DEASSIGN MX_SHRR$ IF F$TRNLNM ("NETLIB_SHRXFR","LNM$PROCESS") .NES. "" THEN DEASSIGN NETLIB_SHRXFR$ EXIT VMI$_SUCCESS$!$ EXIT 1$!$MX_EXPLAIN_CLUSTER_NAMES:$!$ TYPE SYS$INPUT:$ Specifying VMScluster Node Names$ --------------------------------E This system is part of a VMScluster. For each component you haveeD selected that includes a process to be run, you will be asked to@ select which nodes in the cluster should run the component'sA process. You may run each process on any or all of the nodes C in the cluster, under the MX Cluster guidelines outlined in theP Installation Guide.$G When specifying node names, use a system's cluster (SCS) node name.iC You may specify more than one node name by separating them withH commas. S E You may specify an asterisk ("*") as the node name if you want toA4 execute the process on all nodes in the cluster. $ MX_EXPLAINED_CLUSTER_NAMES = 1$ RETURN$! D$!$MX_ADD_STARTUP:$!$ GOSUB MULT_STARTUP_PROCESS$!$MX_ADD_STARTUP2:"P$ MX_TMP = F$EXTRACT (3,-1,F$EDIT (F$ELEMENT (0,":",MX_STARTUP_PROCESS),"TRIM"))/$ OPEN/READ MX_STAR VMI$KWD:MX_STARTUP_INFO.DATP$$ CREATE VMI$KWD:MX_STARTUP_INFO.TMP1$ OPEN/APPEND MX_STMP VMI$KWD:MX_STARTUP_INFO.TMP_ $MX_AS_LOOP:*$ READ/END=MX_AS_DONE_READ MX_STAR MX_TMP2S$ IF MX_TMP .NES. F$EXTRACT (3,-1,F$EDIT (F$ELEMENT (0,":",MX_TMP2),"TRIM")) THEN -I WRITE MX_STMP MX_TMP2X$ GOTO MX_AS_LOOPA$MX_AS_DONE_READ:T$ CLOSE MX_STARR"$ WRITE MX_STMP MX_STARTUP_PROCESS$ CLOSE MX_STMPm>$ SORT VMI$KWD:MX_STARTUP_INFO.TMP VMI$KWD:MX_STARTUP_INFO.DAT#$ PURGE VMI$KWD:MX_STARTUP_INFO.DATP&$ DELETE VMI$KWD:MX_STARTUP_INFO.TMP;*$ RETURN$!$! W$MULT_STARTUP_PROCESS:B$ IF (.NOT.MX_EXPLAINED_MULTIPLE_AGENTS) .AND. MX_MULTIPLE_ALLOWED$ THEN TYPE SYS$INPUTL/ Specifying the Number of MX Agent ProcessesJ/ ------------------------------------------- A For some components, you will be asked to enter the number ofKC processes to be run on each specified node. Multiple processes B can increase the total throughput of messages processed by MX.B Valid numbers range from 1 to 99. These values can be changed< at any time after the installation by modifying the file MX_DIR:MX_STARTUP_INFO.DAT.A"$ MX_EXPLAINED_MULTIPLE_AGENTS = 1$ ENDIFWL$ VMI$CALLBACK TELL_QA "MSP start: MX_STARTUP_PROCESS=''MX_STARTUP_PROCESS'"1$ NODE_LIST = F$ELEMENT(1,":",MX_STARTUP_PROCESS)/@$ MX_STARTUP_PROCESS = F$ELEMENT(0,":",MX_STARTUP_PROCESS) + ":"$ MX_STARTUP_AGENT = -? f$extract(3,f$length(mx_startup_process)-4,mx_startup_process) $ MSP_COUNT = 0$! $MSP_LOOP:+$ NODE = F$ELEMENT(MSP_COUNT,",",NODE_LIST)I&$ IF NODE .EQS. "," THEN GOTO MSP_EXITJ$ IF (.NOT. F$GETSYI("CLUSTER_MEMBER",NODE)) .AND. (NODE .NES. "*") THEN -( VMI$CALLBACK MESSAGE I NODENOTMEM -= "Node ''NODE' is not currently a member of this cluster""D$ mx_prompt = "Number of ''MX_STARTUP_AGENT' agent processes to run"$ IF node.eqs."*" A$ THEN IF MX_CLUSTER THEN mx_prompt = mx_prompt + " on all nodes" 6$ if f$type(mx_'mx_startup_agent'_star_default).nes.""<$ then mx_instances_def = mx_'mx_startup_agent'_star_default$ else mx_instances_def = 1L$ endif 1$ ELSE mx_prompt = mx_prompt + " on node ''NODE'"E8$ if f$type(mx_'mx_startup_agent'_'node'_default).nes."">$ then mx_instances_def = mx_'mx_startup_agent'_'node'_default$ else mx_instances_def = 1g$ endif $ ENDIFN$ IF MX_MULTIPLE_ALLOWED$ THENE$ VMI$CALLBACK ASK MX_INSTANCES "''MX_PROMPT'" 'mx_instances_def' I_4$ IF MX_INSTANCES .LT. 1 .OR. MX_INSTANCES .GT. 99$ THEN$ MX_INSTANCES = 1W$ VMI$CALLBACK MESSAGE I CHANGED "Valid values are 1 through 99. Number set to 1."t $ ENDIFnW$ MX_STARTUP_PROCESS = MX_STARTUP_PROCESS + NODE + "=" + F$STRING(MX_INSTANCES) + ","m$ ELSE8$ MX_STARTUP_PROCESS = MX_STARTUP_PROCESS + NODE + ","$ ENDIFM$!$ MSP_COUNT = MSP_COUNT + 1 $ GOTO MSP_LOOPU$! $MSP_EXIT:'$ IF MX_MULTIPLE_ALLOWED THEN MX_SAY ""rU$ MX_STARTUP_PROCESS = F$EXTRACT(0,F$LENGTH(MX_STARTUP_PROCESS)-1,MX_STARTUP_PROCESS) K$ VMI$CALLBACK TELL_QA "MSP exit: MX_STARTUP_PROCESS=''MX_STARTUP_PROCESS'"C$ RETURN$! O$ASK_HOW_MANY_INCOMING_SMTP:;$ IF f$search("VMI$KWD:MX_LOGICALS.DAT").eqs."" THEN RETURNM$ TYPE SYS$INPUTC Specifying the Number of Simultaneous Incoming SMTP Connections C ---------------------------------------------------------------GC By default, the MX SMTP Server will accept up to 4 simultaneous,C SMTP connections for incoming mail. Any value from 1 to 16 mayAC be specified. This value can be changed after the 6L MX042.AEL[MX.KIT]KITINSTAL.COM;4i;x installationXC by editing MX_DIR:MX_LOGICALS.DAT and changing the value of theg# logical MX_SMTP_SERVER_THREADS.'>$ VMI$CALLBACK TELL_QA "MSP start: ASK_HOW_MANY_INCOMING_SMTP"J$ mx_prompt = "Number of simultaneous incoming SMTP connections to accept"7$ mx_smtp_inst_def = f$trnlnm("MX_SMTP_SERVER_THREADS")'6$ if mx_smtp_inst_def.eqs."" then mx_smtp_inst_def = 4J$ VMI$CALLBACK ASK MX_SMTP_INSTANCES "''MX_PROMPT'" 'mx_smtp_inst_def' I>$ IF MX_SMTP_INSTANCES .LT. 1 .OR. MX_SMTP_INSTANCES .GT. 16$ THEN*$ MX_SMTP_INSTANCES = mx_smtp_inst_defi$ VMI$CALLBACK MESSAGE I CHANGED "Valid values are 1 through 16. Number set to ''mx_smtp_inst_def'."o $ ENDIFX/$ OPEN/APPEND MX_LOGI VMI$KWD:MX_LOGICALS.DAT J$ WRITE MX_LOGI "MX_SMTP_SERVER_THREADS\/SYSTEM/EXEC\",MX_SMTP_INSTANCES$ CLOSE MX_LOGI$! $ MX_SAY ""n=$ VMI$CALLBACK TELL_QA "MSP exit: ASK_HOW_MANY_INCOMING_SMTP"E$ RETURN$! N$!$!$FIND_AGENTS_TO_UPDATE: $!6$ IF MX_MUST_DO_BASE .and. (f$trnlnm("MX_EXE").nes."")$ THEN $ MX_I = 0$FIND_AGENTS_LOOP:$ MX_I = MX_I + 1O'$ MX_OPT = F$ELEMENT (MX_I,":",MX_OPTS)B4$ IF MX_OPT .EQS. ":" THEN GOTO END_FIND_AGENTS_LOOP%$ IF (MX_OPT .eqs."MX_DO_SMTP").and.-") (f$search("MX_EXE:MX_SMTP.EXE").nes."")V$ THEN 'MX_OPT' = "*"T2$ MX_DO_NETLIB = "*" !Do NETLIB too if doing SMTP$ ENDIF_%$ IF (MX_OPT .eqs."MX_DO_JNET").and.- = (f$search("MX_EXE:MX_JNET.EXE").nes."") then 'MX_OPT' = "*"S%$ IF (MX_OPT .eqs."MX_DO_UUCP").and.-/= (f$search("MX_EXE:MX_UUCP.EXE").nes."") then 'MX_OPT' = "*" '$ IF (MX_OPT .eqs."MX_DO_DNSMTP").and.-I? (f$search("MX_EXE:MX_DNSMTP.EXE").nes."") then 'MX_OPT' = "*"$&$ IF (MX_OPT .eqs."MX_DO_XSMTP").and.-> (f$search("MX_EXE:MX_XSMTP.EXE").nes."") then 'MX_OPT' = "*"%$ IF (MX_OPT .eqs."MX_DO_SITE").and.-O= (f$search("MX_EXE:MX_SITE.EXE").nes."") then 'MX_OPT' = "*"$$$ IF (MX_OPT .eqs."MX_DO_LSV").and.-< (f$search("MX_EXE:MX_LSV.EXE").nes."") then 'MX_OPT' = "*"$$ IF (MX_OPT .eqs."MX_DO_MLF").and.-< (f$search("MX_EXE:MX_MLF.EXE").nes."") then 'MX_OPT' = "*"2$ IF (MX_OPT .eqs."MX_DO_DOC") then 'MX_OPT' = "*"($ IF (MX_OPT .eqs."MX_DO_CONTRIB").and.-9 (f$search("MX_ROOT:[000000]CONTRIB.DIR").nes."") then -T 'MX_OPT' = "*")$ IF (MX_OPT .eqs."MX_DO_EXAMPLES").and.-s: (f$search("MX_ROOT:[000000]EXAMPLES.DIR").nes."") then - 'MX_OPT' = "*"$ GOTO FIND_AGENTS_LOOPV$ ENDIFC$END_FIND_AGENTS_LOOP:$ RETURN$! ]"$! The post-installation commands$!$MX_POSTINSTALL:$!7$! Close FLQ file, relinquishing exclusive lock on it.E$!8$ IF f$trnlnm("MX_OLD_FLQ").nes."" then close mx_old_flq$!>$! Define the MX logicals now so we can create the queue file.$!&$ @SYS$STARTUP:MX_STARTUP.COM LOGICALS%$ mx_flq_dir = f$trnlnm("MX_FLQ_DIR"))$ if mx_flq_dir.eqs.""$ then type SYS$INPUT D The logical MX_FLQ_DIR was not defined; the MX queue file cannot be created.,3 To create it, use the MCP command QUEUE CREATE.n$ exit$ endif.5$ mx_max_flq_entries = f$trnlnm("MX_MAX_FLQ_ENTRIES")E$ if mx_max_flq_entries.eqs.""$ then type sys$input.F The maximum number of entries for the MX queue is unknown. PleaseD use the MCP QUEUE CREATE command to create the MX message queue.$ exit$ endifT$ type sys$input MX Message Queue Creationf -------------------------r2 The MX message queue file will be created now.7$ IF f$search("MX_FLQ_DIR:SYSTEM_QUEUE.FLQ_CTL").nes.""*$ THEN type sys$inputSH The existing queue files are being renamed to an [.OLD] subdirectoryD under MX_FLQ_DIR:. You will probably want to delete these files' after the installation is finished.BF Remember that any messages in the old queue will not be processed.*$ mx_tmp = "''MX_FLQ_DIR'" - "]" + ".OLD]"$ create/dir 'mx_tmp'T($ set file/prot=s:rwed 'mx_flq_dir'*.dir;$ rename/nolog 'mx_flq_dir'*.*;*/excl=old.dir 'mx_tmp'*.*;*('$! Now re-create the 10 subdirectories.E $ mx_tmp = "''MX_FLQ_DIR'" - "]"$ create/dir 'mx_tmp'.0]$ create/dir 'mx_tmp'.1]$ create/dir 'mx_tmp'.2]$ create/dir 'mx_tmp'.3]$ create/dir 'mx_tmp'.4]$ create/dir 'mx_tmp'.5]$ create/dir 'mx_tmp'.6]$ create/dir 'mx_tmp'.7]$ create/dir 'mx_tmp'.8]$ create/dir 'mx_tmp'.9]$ ENDIFI $ set noon$ mcp :== $mx_exe:mcp.exeT6$ mcp/nofile queue create/maximum='mx_max_flq_entries':$ if f$search("MX_FLQ_DIR:MX_SYSTEM_QUEUE.FLQ_CTL").eqs.""$ then type sys$inputPA An error occurred creating the MX queue file. Please correctG= the problem and use MCP QUEUE CREATE to create the queue.I$ else%$ VMI$CALLBACK MESSAGE I FLQCVTDONE -Q- "MX message queue file successfully created" $ endifg$!$ EXITist/File Server support files and images.Q$!"$ VMI$CALLBACK RESTORE_SAVESET K$!3$ IF F$SEARCH("''MX_ROOT']MLF.DIR").eqs."" then -S4 VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'.MLF] -. "/OWNER=[1,4]/PROT=(S:RWE,O:RWE,G:RE,W)"A$ IF F$SEARCH("''MX_ROOT'.MLF]MAILING_LISTS.DIR").eqs."" then -NB VMI$CALLBACK CREATE_DIRECTORY USER 'MX_ROOT'.MLF.MAILING_LISTS] -. "/OWNER=[1,4]/PROT  -#h MX042.ArEL[MX.KIT]MX042.RELEASE_NOTES;2S?@,*[MX.KIT]MX042.RELEASE_NOTES;2+,r.@/ 4S@=?-EL0123KPWO>564K.q|7'^&s|89GHJ ( Message Exchange Release Notes December 1995: This file contains the release notes for Message3 Exchange V4.2. It describes any features,@ restrictions, changes, or additions made to MX in this@ release, and includes information that is not provided) elsewhere in the MX manual set.A Revision/Update Information: This is a revised manual.9 Operating System and Version: VMS V5.0 or laterA OpenVMS AXP V1.0 or later= Software Version: Message Exchange V4.2 Hunter Goatley MadGoat Software  " ________________________ 11 December 1995= Permission is granted to copy and redistribute this* document for no commercial gain.? The information in this document is subject to change9 without notice and should not be construed as a9 commitment by MadGoat Software. The authors and; MadGoat Software assume no responsibility for any2 errors that may appear in this document.@ DISCLAIMER: The software described in this document is? provided "as is". No guarantee is made by the authors: or the authors' employers as to the suitability,; reliability, security, usefulness, or performance of this software.: MX was originally written by Matthew D. Madison,: formerly of Rensselaer Polytechnic Institute and9 currently employed by TGV, Inc. The software is= currently maintained by Hunter Goatley, formerly of? Western Kentucky University and currently employed by The LOKI Group, Inc.; The following are trademarks of Digital Equipment Corporation:7 DEC DECnet P.S.I.; ULTRIX VAX VAXcluster; VMS AXP VMScluster@ Jnet is a registered trademark of Wingra Technologies, Inc.9 MultiNet is a registered trademark of TGV, Inc.4 TCPware is a trademark of Process Software Corporation.> WIN/TCP and Pathway are registered trademarks of The Wollongong Group, Inc. __________@ Copyright 1995 MadGoat Software. ALL RIGHTS RESERVED.  A _______________________________________________________ ContentsA _______________________________________________________A CHAPTER 1 INSTALLATION NOTES 1-1A _________________________________________________A 1.1 MX MESSAGE QUEUE FORMAT CHANGED 1-1A _________________________________________________A 1.2 MX MUST BE SHUTDOWN 1-1A _________________________________________________A 1.3 JNET LOGICALS MUST BE DEFINED 1-2A _________________________________________________A 1.4 TGV MULTINET CONFIGURATION NOTES 1-2A _________________________________________________A 1.5 DECUS UUCP NOTES 1-2A _______________________________________________________A CHAPTER 2 UPGRADE INFORMATION 2-1A _________________________________________________A 2.1 JNET V3.5 REQUIRED 2-1A _________________________________________________A 2.2 NEW DATA FILE FORMATS 2-1A _________________________________________________A 2.3 CONFIGURATION FILE CHANGES 2-1A _________________________________________________A 2.4 NEW NETLIB 2-2A iii   ContentsA _______________________________________________________A CHAPTER 3 NEW FEATURES AND CHANGES IN MX V4.2 3-1A _________________________________________________A 3.1 NETLIB V2.0I 3-1A _________________________________________________A 3.2 MCP ENHANCEMENTS 3-1A _________________________________________________A 3.3 MX MLF ENHANCEMENTS AND CHANGES 3-2A _________________________________________________A 3.4 MX SMTP SERVER ENHANCEMENTS 3-3A _________________________________________________A 3.5 MISCELLANEOUS ENHANCEMENTS 3-3A _______________________________________________________A CHAPTER 4 BUG FIXES 4-1A _______________________________________________________A CHAPTER 5 KNOWN BUGS AND RESTRICTIONS 5-1A _________________________________________________A 5.1 SMTP LOOPING/FORWARDING BUG 5-1A _________________________________________________A 5.2 X.25-SMTP BUG 5-2A _________________________________________________A 5.3 DECUS UUCP UUCP_MAILSHR BUG 5-2A _________________________________________________A 5.4 VMS MAIL BUGS 5-2 iv  A ContentsA _________________________________________________7 5.5 VMS CALLABLE MAIL MEMORY LEAK ANDA MX LOCAL 5-3A _________________________________________________9 5.6 MXALIAS AND THE MX% ``@'' PATCH FORA VMS MAIL 5-3A _________________________________________________A 5.7 POSSIBLE FORWARDING PROBLEMS 5-3A _________________________________________________A 5.8 REMOTE FORWARDING PROBLEMS 5-4A _________________________________________________A 5.9 BYPASS NEEDED FOR UUCP DELIVERY 5-4A _________________________________________________A 5.10 ROUTES IN SMTP ACCOUNTING LOGS 5-4A _________________________________________________2 5.11 MULTIPLE ACCOUNTING LOGS GETA  5rEL[MX.KIT]MX042.RELEASE_NOTES;2S?@k qI)b"aO@(G3F+%"}{{6'e+|3S+XlMReNDv h/lt OKa]LaED!2u$ii;Yj 1>sFw.tCfYzY]TC4l}T3bj8@";Om>R(6{l7]7z\+}<~-Hoz,u-Hwh< vl2e\r"62R_ 6i,4D/Vt8McvOP9}qSaK@5nY:x-Pe)r'hi!%F6k\FG '~3Ybt`. V~`kc]x>-IeZU O8_hlTL .-w/A.bpq*5RS^d51`iKYSz;RHKV@m bD$L  n&G!k Zux2JcgpWHiGvOpza}5d&z C$-S+lˬ/psS4=3D^)nG6s_|zICVj?v/QRT hjut8$a hDJ#* oj^ndBD &0pd?y[oZCY` f`*U4FdyL[Ax_.N!nS@(O\-C|K/n~HT+Rjs[l[70W5iRxk 7Fa}w mn81* jq:< V[ e7*%R_ X*]!V6Znn$| J;T1-|0 T`SOdWm`,z,}{%]#l*|Yv{^X\b)@4yiF_$f~&eQQ,9et8e;[RvqPkw|,ApZI WmNue /f1 F?74]|FN9Uwfj"CjTtVQu* L9ECS+FoG m9Wk!^K[0=5 d:lDkVls1h(TAH=@hoOVj&.4 TsN@BpY&]/H,|i@`[1)y6f@mbmQ(x AeIJ ]-7HC{]0F32gl{ce K0g0N==9}wj3 F6zBj]\C9 6gC|g%PkuBdj y#~V6NVVC4bZrRT>3 4H-<_f,!yeCX`D3GZ|-aN`J2yw5Ksm/S@es2|$6}wNBGw,?.68w@ 85hLc&YZ,rzEsVN9w [O0|23Ac:uh~{^ ;2tOwh6$oh{lvK)JyXs!>k=oP [PS $x\t} b#V-uFF[=dN-z\'<=K(-j:v(5.Fe zW[/6@3nG6*#^yl[k?03wZXmd+k'mS9sN}B.Q:e_{ t%<WPL`q5^#,dT FEyIk RBtV./P]4#h nHGkn T)$kdTnk"8_l V Y?_x+Q\p~`0 +j7SGZZY "FxdQ : .T9p-q?=XR$m@5q(zEFE&Y6 "=+_opVtwGqTL})aAV^1hDA8!(6K+NwjN?FD#?BhQc?|WV 5Ppo/0T$9D9=lMtOG )7mOyH:u[7!ANrKL,{! d5Cupse|,+qrB]J!]WlS&/^ui w3E +Wn-)=z?41{wR. O>JU@FPcnH`/1gbT=9D:F(Y{dT@6;t#0D.Tv/7N9oy `>dVF@ 0uRYF) cV IZ(NWO?,9q{ N *Tt[9@KR@[xD?OA M})dQ|F(o8%|lNJa aw/ZHlh^2pZAvXa.%i"i/_+ zkNN{Tg 1{R0o3" L% O,uhmB44 P Fvj *7K2"f4Ft g5q i BZUl-xg4d8-.pQk4oLw7(':RG@2/,}[Th) LkEW LPPd %E3:|kb14lFLEFlPb W %OZ VAprlS=+=|E t\nFFV#" T_^9G7eyAPn:JXM$EfVh}SxF[-"7a$@C3mtD\bZDu%e9ZC88kE`&z Q6.hR +W{Huv>[Ig%(4!:Z]r)74K(Uf]fHUGLZ;nG2'd`Ft@HiY.?haH $otixowPXbv~qUG0DbwT$ql ?SD Eb tzk gIpS 'E   bpBP'VUq& A-@yy)]cAKp!dI3VM9wK_=[XGtXAY7HnTv5;'O{O~(!"m%rF hy6ugV\r[bIu vYT*%?e+HI {V$MU05M8$_wV)JFu;w M/}^G O4p\hy%'8 f{&kchUG/O(WR[u\ThXh[ 4Led,omob2{~}~]sJSbd63 \RoZ6D41T'm@)0JD' s\&qEj.S8KPXS-`)6C@>+ K<djz dA~r:rP&H  [4rP**RBeO?Q*+dE.})I\=eTONzp-cnc&T{QZ%{e\cINpdV|O["jh\Nsc3[s~GC3v}|w&;@~D7`WMK;4I^, #/`)` vM7%GfV7&^ Y//XUilPUV; doZ,\V6ST *s>~ 04A$C>=|`9Wvp.c)jqKp8LLY|7XR*9L*z`F EL S9_m:Y3K"MCLs N'`)R,$%3/0$&.oHiw &B: <8gXJb|-Xk'[Rz7&g *(k`::m9y}bha*O3Ec3d B^qb<:sQ~)2" ;jg{[8w'],8x3H{)K\fCf.Fa)D0og h/V:iu| : ( i!N`@rZdAw3h2@Y d;(bu;oKm yXc|m?{pz93;.;NqNGUQ^Vbu"y%4!UW*{QW>sMAdDV(T8N&oqbfj#-y!0 MS9X*-A"Xjm,`6|l8/[FiU$6O)}'/)4b]f1DEn7kwl 9?l>&\YTGF)]S^&JI)V]T6Z9n1#r>M?Aomc+%;`Nu.qPQG/ ;k>X_@WUK~F,"39mpUV! U/VqNKjxr&mwB+>e(/( g4" k|h=Dq>8!`i1.hSEZUu+/E1eJ0} q"\' .!GVMicTgRR;IPn G{;pd!b`F-(kW3013!T*^(S5EjV,1!j{f+j ^sH2|zf+]kMP\NBPW +VJh{Mhi^abaWT<&m4hP3Qjt(@\$t& Ea*RLlge~riA  /#`_[>*9[{:n'i]IPGMgHvHs h#A_<_`D=V>OD_j\[yH{dw}DX w'oaNZnUoAnr!/$~ ^(v*q FY:=4<$c~y<{-x?^Job{1`p5P7roDo~pz1/aN$dUJHLg U )`4?(5wk {h?Af7 Wme+1p W&p,)%:yAtU@ZM[cv:oMR(_hezDYyW Mo/U Jfw~efR?QO@)Oi-&\^' ac~ UU ?\<@za[WrgH%EYX6PSX 7J59r [wH s"~{w=Crr;.L> X y ` ql0CF|<`.BrTU:H n6OO[ p45gLTkBl8c WB :omOn[RYd WB#5o,q% n[d x)k"Nikb'w$OHFHy"YV+9= yK#aR9_4/s$?f&Ng?Q.<' /hk'&y25"OiPnuZU1t< 7jP4}6VcQNY^GysQS\/+@!S_0/0 RH"T?bQOq }kIxGB6G6yM @eX$1}:m%",{WCb}2:ef4$I&8$VpDcVg> !P^U*gi l)S8/y=bl-+-JbF~1?k%6,F5w9ekkHP@P;9$&T1cE6<`}DfwPOB-JfljOo% d,  B . -;NR-nE9il !3aNz1`/dSZH(rXg,$I,{-"93 BV/r GH;Z ajLO{%O1YtQDDT!I#Km4 (\Gn_N9g2PCf:lOT}6=>MGQ(?e]%bmy'81,)|w,q?i  #EM?rR$J,[5`)iJ*!8F$tR9el<_J#P%MH[xSLf<"&ahJ?iy+=1npI ML 0w)lN/5"njUd3AS*o#8r/eXx }nShv$y pk_Z+ZrQO[S3qIY-%GMM LH5Y4\H@.9` $U1NL4AagE[lpyBS- jr3x PG*&5HoaX|X^Os9x,7l^W^K:N+{'q d5^jgxeR( L};Q xhQY*w("yYa@{o?f%ok_Un{s/oi8?kiW2!#C,p#@9+`&(XTgb?eo$Z:$S3N_K;vh=q|f)?-B6 C8`^fP8x|n5%.T;!b0qznWD}/Gf-z1kIf;fQeD|6n;eP"yK&D5'(+$WUe4ko7ntMoJC@C]tLug{4>CBS040v;&@#l;(Jz 0Dc6? z O*0@=T!Zzob' A*4qU$xolh uzK"4:dn8+~M:=FgjO^lB?Q&kVmk);Y!\uK{s}xA9f [ZID^:{m-Kz :nL.Z3uGP%TnguVo|5vY@I?\^-#  )D6Xq?NKE4Gc7 d?2IzZ=h5\]r %&<0BX.11"h &3j\J" 47PYP-yq5cDkFTDh*:j"F?m4i C{G_ [lxy9v08Y.qx9D$L6wsK}<4.D\EX)' qh:v 1Md wAC"c+w O\Z;! :l"jJQ|xT/];[IOokdThXbz+a*90D}y|3l|n7[f7|/7 \NLL2,<'?y Z {drfXR5CkN,kdPYto s 7# 7Q@k)0i~_9K A!\t!'$5Co}Aw>(rxT8.Pz)$ 7&wkpVgY3Z3 zVng""7zGA.lX:p,QG a$;Y:Z!%h/C,1X{vVj Y;a "R4/XX=fpJS,o<S#:\s i X Q Jp)4$FYG\dBZ_ '8F/O+pn%OuR"dl=+=xW\J==Yl=@[Nic]G[nID b%d J|Q? `a/f 2`O:>GnAEF16@:zd*d6W\#FCco3k:*=tPr/N6py%/b&Hko)O[MaZIb|`Y0:skd+t*r:uB}O5h8cHL"%[f;cS&*3"ZJ AtVa#Y6{,.}rw94, {ByYLb  +--B\bwF41YrxOS>K$9!],PsDLc9G3M je#O^1wB?@ 7i~~2 ^OZ6&4EHuii]U|3[ U4 =JMc"F!%5Rz8aP[*~_DC x#Cecx]&,t"CP^Vs=e1B2LW9*tGw9cvR&lfpY4rr_1 fvufpi5^AJO>!*Y@xEwNwx^D&EOA::-Us o r'7 &*}s^0D `IA,`t"U/n,?,J24fhYND{2]kJeOM$(}2N}eEq(l)W}>:'C"uz~lSxZ {her!.c6`*u}775uHSNr80|a/f&$d-bu(s1;nDFS6LZ ;Q_E SSe9]OyuD ? 8f[KW=RYPK"~#Msrm@|dd]1|6_wH"f tRLNCcGQDEK*Ry%-=$K`OA&'=> !F6}U/C2>S&G} c j'v~?%#o{t ;rn$ z{W`j s*Vz%W;.jR ]HQL/K/gY_VOF<w hNl0[9{=al53$R<54)~`j ~_fY>v\m}8b9}KCgRgQgoI8kb :m%W/<~): egCn":@YWx\1H]_AR;{RxvDH>Pm|.$-kGqszF_zdk@+ G@} B",_1J6+Ai. qyO:<`:^k^pQGE -bFv++*df,( lZ=zX[0{]353d,5 YP5JGF 8?]!7e1:t[g{y1qOqxj#+R")Xtt@0sXZO/]yl,`g|'L +tY0dc$  g4v;|[:d(B4-J,z4rJ="U1~xY dR\_iT}wi;"@;f0Ma@_"Nmg:hHj#d mx7b-u #uBF'jtr:&1 J+wz{9(QDS 2ye2lU,[ A.Ca/_~~`JI3*k"dMyBLy:]zg}*S&di%zFJ'G3~FXD&67p Uw6#G4(flNjn"tf8B LXcYak0h9=OD-W ,azKmP=HfC89T7wps*0(`4@W='eoSuD?0`&|g W7;G@t6Pq}pd|6qe}:9foqC+65 ;.EgEonl hB @UALinstallation is required because the MX images areC linked during installap vP MX042.ArEL[MX.KIT]MX042.RELEASE_NOTES;2S?@ CREATED 5-4A _______________________________________________________A CHAPTER 6 PROBLEM REPORTS 6-1A v  A _______________________________________________________ 1 Installation Notes? This chapter contains items of interest pertaining to! the installation of MX.L __________________________________________________________________) 1.1 MX Message Queue Format Changed: With MX V4.0, the format of the MX message queue> file changed from an indexed file to a direct-access? sequential file. If you are upgrading to MX V4.2 from> a version of MX prior to V4.0, your MX message queue2 will NOT be converted to the new format.> Note: IF YOU ARE UPGRADING FROM MX V3.x, A NEW QUEUE< FILE MUST BE CREATED. IF THE MX QUEUE IS NOT EMTPY; WHEN YOU INSTALL MX V4.2, ALL MESSAGES IN THE OLD QUEUE WILL BE LOST!!!!9 The new format includes information that is not= present in the old format, making it impossible for' the old file to be converted.L __________________________________________________________________ 1.2 MX Must Be Shutdown9 If you are upgrading to MX V4.2 from a previous< version, all MX processes on the system or cluster: must be shutdown using the MCP SHUTDOWN command.= Also, you should define the MX_SHUTDOWN logical (MX= V4.0+) or deassign the MX_MAILSHR system logical to; prevent users from sending mail via MX during the installation.A 1-1   Installation NotesL __________________________________________________________________' 1.3 Jnet Logicals Must Be Defined@ If you are installing Jnet interface support, the Jnet> logical names must be defined before you install MX.? If you stop Jnet prior to installing MX, use the WARM stop option:% $ @JAN_SYS:JANSTOP WARML __________________________________________________________________* 1.4 TGV MultiNet Configuration Notes< You should ensure that your fully qualified domain@ name (FQDN) is entered in MULTINET:HOSTS.LOCAL as your> primary host name. If it is not, messages may go out( with invalid return addresses.? To check this, edit the file MULTINET:HOSTS.LOCAL and& look for the line that reads@ HOST : x.x.x.x : host-name : system-type : VMS : :< where "x.x.x.x" is your IP address and "host-name"? is your host name, which should be the FQDN. If it is? not, edit the entry with your FQDN and save the file.= If you changed HOSTS.LOCAL, you should recompile it+ and update MultiNet's host table:+ $ MULTINET HOST_TABLE COMPILE+ $ @MULTINET:INSTALL_DATABASESL __________________________________________________________________ 1.5 DECUS UUCP Notes> There is a bug in the DECUS UUCP mailer (pre-V1.3-2)< in that it does not correctly handle messages that@ have a From_ line without a "remote from" clause. This? will cause MX messages going out through UUCP to have= an incorrect From_ address containing an extra bang@ character (!). This bug is fixed in V1.3-2 of the UUCP* mailer image (UUCP_MAILSHR.EXE). 1-2  A Installation Notes; The current version of DECUS UUCP is V2.0; it can; be obtained via anonymous ftp from ftp.spc.edu in: [.DECUS_UUCP] or from FILESERV@WKUVX1.WKU.EDU as> package UUCP020. Note that the FILESERV distribution; contains only the minimum required UUCP savesets.A 1-3  A _______________________________________________________ 2 Upgrade Information@ This chapter contains information of interest to sites1 upgrading from previous versions of MX.L __________________________________________________________________ 2.1 Jnet V3.5 Required= The Jnet interface support in MX V4.2 requires Jnet; V3.5 or higher to operate. MX V2.3-1 was the last@ version to support Jnet V3.4. If you are still running7 Jnet V3.4, you should not upgrade to MX V4.2.L __________________________________________________________________ 2.2 New Data File Formats= Some of the data files used by MX, specifically the; .xxx_INFO and mailing list files, have changed in? format from earlier releases of MX. MX V4.2 will read> the pre-V3.0-format files, but the new format cannot0 be read by any previous release of MX.L __________________________________________________________________$ 2.3 Configuration File Changes> Configuration files from MX V2.1 through V4.0 can be; read by MX V4.2. However, the format used in this: release is not usable with prior releases of MX.? Configuration files from releases of MX prior to V2.1& are not usable with MX V4.2.; It is strongly recommended that all sites running? versions of MX prior to V3.0 use the MXCONFIG command= procedure supplied with this release to build a new< configuration file that takes advantage of the new9 routing features that became available in V3.0.A 2-1   Upgrade InformationL __________________________________________________________________ 2.4 New NETLIB= The version of NETLIB supplied with this kit is the> latest version available. It is recommended that all; sites using NETLIB (for SMTP support) install the version in this kit. 2-2  A _______________________________________________________- 3 New Features and Changes in MX V4.2? This chapter notes the new features added to MX V4.2.L __________________________________________________________________ 3.1 NETLIB V2.0I= MadGoat Software's NETLIB V2.0I is included with MX; V4.2. NETLIB V2.0I is a C rewrite of the original7 NETLIB V1.x routines. Thanks to Matt Madison.L __________________________________________________________________ 3.2 MCP Enhancements= o The MCP commands SHUTDOWN, RESET, and STATUS now@ accept a /NODE qualifier to limit the affect of the@ commands to those agents running on specific nodes.@ o The DEFINE LIST and MODIFY LIST commands now accept! a /DIGEST qualifier.@ o The MCP commands DEFINE LIST and DEFINE FILE_SERV /9 MX042.ArEL[MX.KIT]MX042.RELEASE_NOTES;2S?@j ER< now check for the existence of a file server or: list, respectively, with the same name as the; supplied list or file server name. In previous= versions of MX, it was possible to define a file; server and a list with the same name, but mail? would always be routed to the file server, without warning.A 3-1  - New Features and Changes in MX V4.2L __________________________________________________________________) 3.3 MX MLF Enhancements and Changes; o MX MLF was modified to support a new DENY flag> for subscribers. The DENY flag can be used to add= a subscriber to a closed mailing list (one which@ does not allow WORLD writes) and still prevent that> subscriber from posting to the list, thus denying@ the subscriber access to the list. Subscribers with< the DENY flag set cannot post to the list, will? not receive posts to the list, cannot change their@ subscriber entry, and cannot remove themselves from the list.: The MX MLF ADD command supports the /DENY and /NODENY qualifiers.< o The MX MLF REMOVE command now supports /NOCASE.< o The MX MLF processor now adds a Date: header to? mailing list posts without one. This was necessary@ because some SMTP servers reject messages without a Date: header.@ o A check was added to the MX MLF processor to detect@ messages from automated mail daemons. Messages fromA "Postmaster," "Mailer-Daemon," "uucp," "mmdf," "UCX_c< SMTP," "LISTSERV," and "MXserver" are no longer@ processed by the MX MLF processor. This enhancement< was added to prevent mail loops created when an@ automated mailer sends bounce messages to a mailing2 list or to the list processor itself.> o Support for mailing lists digests was added to MX' MLF. This involved adding:: o /DIGEST qualifier to MCP DEFINE/MODIFY LIST commands.8 o Recognition of listname-DIGEST addresses.< o SET DIGEST commands for MXserver and -request addresses.t7 o /DIGEST qualifier to MX MLF ADD command. 3-2a  A New Features and Changes in MX V4.2G= o Automatic list forwarding for -digest address. : Only a system user or a list owner can post a= message to a list-DIGEST address. A message sentg? to list-DIGEST from any other user is treated as ay@ post to the regular list (which will eventually end% up in the daily digest).i: Note: The MX-DIGEST files are still required.L __________________________________________________________________% 3.4 MX SMTP Server Enhancementso@ o By default, the MX SMTP Server listens for incoming: connections on port 25. You can now specify a> different TCP/IP port by defining the logical MX_? SMTP_PORT. For example, to make the MX SMTP Servero= listen for connections on port 1025, execute the: following command before starting the MX SMTP; Server: $ define/system/exec mx_smtp_port 1025L __________________________________________________________________$ 3.5 Miscellaneous Enhancements> o Error-handling logic in the various MX agents has1 been enhanced in this version of MX. @ o The MX Router was modified to perform site-specific< header rewrites for all messages, regardless of; origin. This was needed to allow site-specific= aliases for messages coming from such sources as_9 Eudora (using the ADDRESS_REWRITER feature)._@ o MX now supports the UCX$TZ logical, which was added9 to Digital TCP/IP Services for OpenVMS V3.2. ? o The following [CONTRIB] packages have been updated  or added:; o MX-DIGEST.ZIP-Provides digest support for MX_ mailing lists._A 3-3  - - New Features and Changes in MX V4.2_> o MX_REFEED.ZIP-Provides a means by which entries2 can be reentered into the MX queue.< o MX_WATCHDOG.COM-A command procedure that will= help ensure that all MX processes are running._ 3-4   A _______________________________________________________ 4 Bug FixesU? MX V4.2 provides the following fixes to bugs in V4.0:_> o Fixed bug in MX_START.COM that prevented some log2 file names from including node names.? o Fixed a bug in MCP QUEUE COMPRESS that could cause  queue corruption.A o Modified the behavior of the MCP command QUEUE PURGE_= so that ROUTER entries are purged after all non-T< ROUTER entries. Previous versions of MX deleted; entries sequentially. If the PURGE process was.< interrupted for some reason, agent entries that; referenced purged router entries could be lefti> behind, causing confusing QUEUE SHOW displays and other problems.< (This same modification was also made to the MX/ Router and MX FLQ Manager images.)_> o Fixed a couple of bugs introduced in MX V4.1 that? occasionally caused the various agents to die with_? access violations while attempting to update entry A information. MX SMTP processes were especially prone  to this problem._A 4-1-  A _______________________________________________________.% 5 Known Bugs and Restrictions L __________________________________________________________________% 5.1 SMTP Looping/Forwarding BugS? When using MX with any TCP/IP package (except CMU-Tek_= TCP/IP V6.5 or later), and you have a wildcard mail ? exchanger record registered in the Domain Name System_> (DNS) for your domain, some SMTP messages may not be< sent correctly; they may instead be looped back to> your own host, or forwarded to whatever host is host9 specified in the wildcard mail exchange record.  Background< The DNS mail exchanger lookup process that MX uses? by default automatically adds your domain name to the_? name being looked up, in order to resolve abbreviated ? names into their full domain names. This process does_; not mix well with wildcard mail exchangers, since ? all references will match the wildcard mail exchanger = and will always route mail to the host specified as ; the exchange. For example, if your host is called_= HOST1.DEPT.SCHOOL.EDU,ppa MX042.ArEL[MX.KIT]MX042.RELEASE_NOTES;2S?@- and there is a mail exchange ( record in the DNS of the form:S *.DEPT.SCHOOL.EDU. 123 IN MX 10 HOST1.DEPT.SCHOOL.EDU._7 Then you will see this looping problem. These = wildcard-type records are generally used to specify < a host as a gateway for handling all mail destined> for a domain or subdomain. If your host is acting as? such a gateway, and you cannot eliminate the wildcard = mail exchanger record, then you may need to add the> following definition to your system startup sequence before MX is started:_4 $ DEFINE/SYSTEM/EXEC NETLIB_DOMAIN "."A 5-1  _ _% Known Bugs and Restrictions7 This will override the default mail exchanger= lookup behaviour used by MX and NETLIB. For further_@ information on the NETLIB_DOMAIN logical name, see the NETLIB Release Notes. L __________________________________________________________________ 5.2 X.25-SMTP Bug : Messages received via X25_SMTP that contain very= long lines may be rejected by the X.25 SMTP server. : Currently, the only fix is to wrap the long line% before sending the message._L __________________________________________________________________% 5.3 DECUS UUCP UUCP_MAILSHR Bug> Binary files sent through MX to DECUS UUCP can cause9 the MX->uucp process to go into a compute-bound > infinite loop. This is a bug in the DECUS UUCP UUCP_= MAILSHR's handling of the temporary file created byn? MX. Attempts to SHUTDOWN the MX uucp intfc will fail;o> you must use STOP/ID to kill the process, CANCEL the/ message, then restart the UUCP agent.N> According to the DECUS UUCP developers, this will be2 fixed in the next release of DECUS UUCP.L __________________________________________________________________ 5.4 VMS MAIL Bugs? In VMS V5.0 through V5.1-1, a bug in VMS MAIL parsinge= code will cause a process to loop infinitely if the,< 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 ani? error condition that is signaled which aborts the VMSe< MAIL session. This bug remains through VMS V5.5-2. 5-2o n A Known Bugs and Restrictions L __________________________________________________________________4 5.5 VMS Callable MAIL Memory Leak and MX Local@ The VMS callable MAIL routines do not properly release= all the virtual memory that they allocate. This VMS = bug can eventually cause the MX Local agent to exit_= with an ``Insufficient virtual memory'' error or goy? into an infinite loop. The chances of the bug causingi; problems depend greatly on the number of messagesf> processed by MX Local and your system configuration.< This bug in callable MAIL has been acknowledged by> Digital in a DSNlink article. It has ``been reported to VMS Engineering.''CL __________________________________________________________________6 5.6 MXALIAS and the MX% ``@'' Patch for VMS Mail: If you've installed the VMS Mail patch that lets= users leave off the MX% for addresses (found in the @ [.CONTRIB] directory), MXALIAS addresses must still be? prefixed by MX% to be recognized. MX_MAILSHR will try:? to lookup an ALIAS if the MX address does not includes> an ``@'' in the address received from VMS Mail. With@ the VMS Mail ``@'' patch installed, MX aliases are not= passed to MX unless they are first prefixed by MX%.SL __________________________________________________________________& 5.7 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 MAILb; to forward mail through that other package, thoset= forwarding addresses may no longer work after MX is_ installed.9 The system manager should review the forwardingo9 addresses used on the system and modify them ase< 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.A 5-3h u n% Known Bugs and Restrictions L __________________________________________________________________$ 5.8 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,f> 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 __________________________________________________________________) 5.9 BYPASS Needed for UUCP Deliverys@ 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.L __________________________________________________________________( 5.10 Routes in SMTP Accounting Logs> When a default router is specified for outgoing SMTP? messages, entries in the SMTP accounting log show thee< default router in both the HOST and SENT-TO fields; of the accounting records. The actual target hostt? information is not available to MX SMTP, so it cannotr% be written to the log file.VL __________________________________________________________________. 5.11 Multiple Accounting Logs Get Created: When MCP RESET/ACCOUNTING is issued and you have; multiple instances of some MX agents, you may end ; up with multiple copies of the various accountinge> log files. For example, with three MX SMTP processes@ running, you may end up with three new MX_SMTP_ACC.DAT 5-4   A Known Bugs and Restrictions ; files. This problem will be addressed in a futurep version.; Note that multiple instances of MX Jnet will also_= result in multiple copies of MXBITNET.MAILERS beinge@ created each time BITEARN.NODES is updated. This, too,0 will be addressed in a future version.A Few MX042.ArEL[MX.KIT]MX042.RELEASE_NOTES;2S?@SS<5-5  A ________________________________________________________ 6 Problem Reports_: An electronic mailing list exists to discuss the= MX software and report problems. The address of the1 mailing list is MX-List@WKUVX1.WKU.EDU._> Internet users can subscribe to this list by sending> an E-mail message to MX-List-Request@WKUVX1.WKU.EDU,? with the command "SUBSCRIBE" appearing in the body ofL the message.; The MX-List mailing list is also gatewayed to the_* VMSnet newsgroup vmsnet.mail.mx.7 Archives of the mailing list are available byO9 anonymous FTP from ftp.wku.edu in the directoryl$ [ANONYMOUS.LISTS.MX-LIST].A 6-1I commands now accept! a /DIGEST qualifier.@ o The MCP commands DEFINE LIST and DEFINE FILE_SERVG[ MX042.ALEL#[MX.KIT]MX_VERSION_TEST.ALPHA_OBJ;1#*[MX.KIT]MX_VERSION_TEST.ALPHA_OBJ;1+,L./ 4-EL0123KPWO56!v73*s|89KGGHJKK MX_VERSION_TESTV1.0 7-JUN-1994 10:16BLISS-32EN V1.1-021CH H . EXTERNAL_BASE . $LITERAL$P$LINK$ $ABS$ $INITIAL$$PLIT$$OWN$$GLOBAL$i\$CODE$ MX_VERSIONLIB$SET_SYMBOL0JMX_VERSION_TEST =0;=   MX_VERSION ;@LIB$SET_SYMBOLD D=MX_VERSION 4 =d\#G~^^GG B(b@ZkTG@BG0Hb@ZkG]] #k4 G, MX_VERSION4$b# MX_VERSION4(@, MX_VERSION40GDLIB$SET_SYMBOL4<b#LIB$SET_SYMBOL4@@DLIB$SET_SYMBOLO O=?76MX_VERSION_TESTBLISS-32EN V1.1-021C264D = 44=MX_VERSION_TEST4=$ $=  4 = \ =  {A MX042.ALEL[MX.KIT]MX_VERSION_TEST.OBJ;1<*[MX.KIT]MX_VERSION_TEST.OBJ;1+,L./ 4<-EL0123KPWO56v7.s|89KGGHJ<MX_VERSION_TESTV1.0 7-Jun-1994 10:17 7-Jun-1994 10:17VAX Bliss-32 V4.6-9021MX_VERSION_TESTMX_VERSION_TESTPMX_VERSION # MX_VERSIONLIB$SET_SYMBOLP MX_VERSION_TEST  2 MX_VERSIONP LIB$SET_SYMBOL $PLIT$$PLIT$$CODE$$CODE$ MX042.A\EL#[MX.KIT]MX_INSTALLING_VERSION.DAT;4 #*[MX.KIT]MX_INSTALLING_VERSION.DAT;4+,\./ 4 -EL0123KPWO56Aɭ7m1s|89KGGHJ MX V4.2 AXP MX042.At J[MX.COMMON]COMMON.OLB;7d*[MX.COMMON]COMMON.OLB;7+,t .d/ 4d-J0123 KPWOe56lRɭ7v5s|89KGGHJ% Librarian A09-22_ɭfɭ!$.  MXCONFIG^MX_MSGV LOAD_MXCONFIG^ MX$_FACILITYMXCONFIG_INSERT_PATH^MX__AGENTALRDY^ MX__ALRSUB^MX__BADRFC821ADDR^ MX__BASE64^ MX__CFGERR^ MX__DISMAIL^ MX__FILEREQ^ MX__FLQERR^ MX__FLQLCK^ MX__FWDLOOP^ MX__FWDUSER^ MX__INVADDR^ MX__LCLUSER^ MX__LISTOWNER^ MX__MAIDLVR^ MX__MAILLIST^ MX__MAILLISTD^ MX__MEMALLOC^ MX__MLCTRL^ MX__MM_RETRY^ MX__MSGTXTERR^ MX__NOACCESS SAVE_MXCONFIG^ MX__MAILLIST^ MX__MAILLISTD^ MX__MEMALLOC^ MX__MLCTRL^ MX__MM_RETRY^ MX__MSGTXTERR^ MX__NOACCESS^MX__NOCOMPLETE^ MX__NODIGEST^MX__NODNSRESPONSE^ MX__NOFAKE^ MX__NOHOST^ MX__NOMAILNOW^ MX__NOMATCH^ MX__NONET^ MX__NONETADR^ MX__NOTSUB^ MX__PROTOERR^ MX__QERROR^ MX__QRECLERR^ MX__RETRYEXCD^ MX__RFC822^ MX__RWINITERR^ MX__SETACCESS^ MX__UNKSET SAVE_MXCONFIG1D?솪V2.25MXCONFIGV2.210-Dec-1995 12:5310-Dec-1995 12:53VAX Bliss-32 V4.7-999(MXCONFIG LOAD_MXCONFIG7PMX_CONFIG SYS$DISK:[].MXCFG STR$COPY_DX STR$COPY_R STR$FREE1_DX LIB$GET_VM LIB$FREE_VMSTR$CASE_BLIND_COMPARE MEM_GETTXT MX__CFGERRSYS$OPEN SYS$CONNECT SYS$CLOSE SYS$CLOSESYS$GETSYS$DISCONNECT SYS$CLOSERWRULESPATHLISTALIASESMLISTSSYSUSERSFSRVQUE SMTP_INFO ROUTER_INFO LOCAL_INFO JNET_INFO DNSMTP_INFO SITE_INFO XSMTP_INFOP  LOAD_MXCONFIG   _)        # * - :  Y - k ? } Q   p  @=   Π^|ZЏЏ,nPPƐϞԞ ,nDlDl,n,,,n` ` 0PlPPYYPլPPYYݬ  STR$COPY_DX l  ,/1|}ScR:* QQ :% QPQPPVФRRTP:* QQ :% QPQPPUVUVUcP `bV UbRRTd A$PLIT$ $PLIT$A $CODE$$CODE$  Ql ww1*S+>eV1.93MX_MSGV1.913-SEP-1995 08:5113-SEP-1995 08:51VAX-11 Message V04-00n$ABS$MSGPTR$SECTIONMSGPTR$AAAAAAAAMSGPTR$AAAAAAABMSGPTR$AAAAAAACy@' MX__NODIGEST9' MX__MAILLISTD4' MX__BADRFC821ADDR,' MX__NODNSRESPONSE!' MX__LISTOWNER' MX__MM_RETRY' MX__NOACCESS ' MX__NOFAKE' MX__NOMAILNOW' MX__RFC822' MX__BASE64' MX__MAIDLVR' MX__FILEREQـ' MX__MLCTRLр' MX__MAILLISTɀ' MX__LCLUSER' MX__FWDUSER' MX__FLQERR' MX__FLQLCK' MX__ALRSUB' MX__SETACCESS' MX__UNKSET' MX__QRECLERR' MX__NOTSUB' MX__NOMATCHz' MX__MSGTXTERRr' MX__QERRORj' MX__CFGERRb' MX__INVADDRZ' MX__FWDLOOPR' MX__DISMAILJ' MX__NOCOMPLETEB' MX__PROTOERR:' MX__NONETADR4' MX__MEMALLOC,' MX__RETRYEXCD$' MX__NOHOST' MX__NONET' MX__AGENTALRDY ' MX__RWINITERR' MX$_FACILITY=PeP*P'PMX_MSGww& MX__MAIDLVR SAVE_MXCONFIGV MX042.ArJ[MX.COMMON]COMMON.ALPHA_OLB;7d[*[MX.COMMON]COMMON.ALPHA_OLB;7+,r.d/ 4dX-J0123 KPWOe56mv;ɭ7p9s|89KGGHJ% Librarian A09-22;GɭVLɭ!WFX .MXCONFIGR\MX_MSGV LOAD_MXCONFIGR\ MX$_FACILITYMXCONFIG_INSERT_PATHR\MX__AGENTALRDYR\ MX__ALRSUBR\MX__BADRFC821ADDRR\ MX__BASE64R\ MX__CFGERRR\ MX__DISMAILR\ MX__FILEREQR\ MX__FLQERRR\ MX__FLQLCKR\ MX__FWDLOOPR\ MX__FWDUSERR\ MX__INVADDRR\ MX__LCLUSERR\ MX__LISTOWNERR\ MX__MAIDLVRR\ MX__MAILLISTR\ MX__MAILLISTDR\ MX__MEMALLOCR\ MX__MLCTRLR\ MX__MM_RETRYR\ MX__MSGTXTERRR\ MX__NOACCESS SAVE_MXCONFIGR\ MX__MAILLISTR\ MX__MAILLISTDR\ MX__MEMALLOCR\ MX__MLCTRLR\ MX__MM_RETRYR\ MX__MSGTXTERRR\ MX__NOACCESSR\MX__NOCOMPLETER\ MX__NODIGESTR\MX__NODNSRESPONSER\ MX__NOFAKER\ MX__NOHOSTR\ MX__NOMAILNOWR\ MX__NOMATCHR\ MX__NONETR\ MX__NONETADRR\ MX__NOTSUBR\ MX__PROTOERRR\ MX__QERRORR\ MX__QRECLERRR\ MX__RETRYEXCDR\ MX__RFC822R\ MX__RWINITERRR\ MX__SETACCESSR\ MX__UNKSET SAVE_MXCONFIG& MX__MAIDLVR SAVE_MXCONFIG tjM  b q `qr?@DhՋ %}%+{2-7=):%u䅡YJX{#|!g 03 I0J3RdNgP_RKv")lY}8F\;xReg Is ,ItQ w>Ua4 @vQt].DV+mC/vs 4?!r[Q+JYB&:?5~j"մs)){Z{7$YHLP ]Wcx!%ڇ,* ɉV)BS&GAUYTx_" ~]d<Png:"!h |g])o{, dyEݙd׎q.۳ 'VeqC7׿vw,~K?l-? >qIc[&5VP0RS@Wm)EAXOzZb26>5sʨV5*-);cx8ŒRIܓܤ!jxPvE[ U_M,+m G",/9_&x[a ECD>NC ,XDdMl_ IIVIgOWDDmlrb8hm{:~h #90 %ZOye}~c6CTA"NU$!CxuNG2CaE,["wk GE"GECCT@Wy~U_xnjCD}G G pOc`:ceB^,o#,"*C|+9Z}ch=">~1B*L"YhZ.o5,[;FWPp!Cf y)1Ab$V(otyTU*sHvV|o$z.Qd]V2#d_dezd({mf3m]_M*62hW^,_6kSOEYHX1eK9mw|{Mnpt8i$eB iU:?goNT1Kk4#m.fzrfjxH\w =09,1 KMZBn2W^X_R_6 ]i$d(i%.. Y3NnXFM|U~T6yy9q9et"I%;Ygm\^c_ g1QpKMUd3:'fn#NhQn_+DPH@g :*s,hi"xok>0iBOVSB+8-#cD[0ii.aI\]+#7>ml I'QmXanPIfstjpOPHHFgNY"AU:-caY"D+t <@_XRF p11@0%729eIw I wAF:)~NJ%z2Rju+`vjneaAmzwcp,kcH `qSji9"`ydwR0q<=_SI@^lCEB#uyyxHf #82=<2W i+5*fq+3>7vExk6}#ko0i@gx !xh$gg3AJ qjMduC:sU jsWr!ilRiF 94& d4~77 e-v;r2nVb)v`z/2! AT |Z!4.@+TNXO,%?a)f| ' "rns4'uQ<.x7@FKCZVZ03}ujv4<)]rt>||S"m  ?|p-3$g4=8TZUCDi=~DN:\]%iau` b0[Ml}?865$o) M Mep-D,1a~d}cz1WTSAVUBQr \JSCczA:\TT^V[RUzRGK xj-,)+d`4 eR J&L9]9g`=39`OHqS8n% K>&; 3#>:b%,f_"+!*f z{)=qx*;HLo@Y;1S>oyb =wUnT 6sx,8d6S49l Nw$&b.o8;75^qt5s#}pa> BF! t1%=6{QRw @MGsTt!Igo*(cz;O;6 Zt3}wN giz-&cNC:C[]TRi_]cOM4Ands% ,;^ZYT[H)5?+s!)tbhnjhfvb%m$oi!r5 f; _  LMT::r ]*io*Z.#6vtRI _ FIG107f:>pk,fdf>$s#m*:3#/\cv 11f4,m<-ry ^x91fgm}ydo0t8+`b<%LL ?x{aMpy7+r|14]tBSWsC%)S)PO.Ҭj9 Z5r*$#d Yv`aetX{7J R<"?w92:7**1%!VH .Hn;2 OFfvqCj$}t56a.DSlQBFX]s+>mKMrRnYs891&!invj?7Pn4#wg'kb ~w_fjhD1;'$}|yoWn|ICC Cc8k1EInDC =RZI}d}n+vEw1r %$oO#VB,Y?_D[Y \MBAS]AX @DC3_ @T3)(%xAfePTPiQ5s$27a rk^*&e8rz\6H=t>+blE\d gce'=R l-uy{7ootkct\Q!Ts%GKRY)9V@BT(ye02u0k-q |{qnt!pt6.%k; QVN\W%QN1\xF Yu:QTc7=|Hq)MTR *#9'9!CDMƮV -Q[hAtK {wk|_!s{p^Q\SNPDXA90fOH]#/]hC_QFG@]U[_2)ii3tU *Mr#l"&kM)a+&{eHlkϴ쌅t~VwQ;` nlp5~m%0i r4?K!V!mmlm"F_[MGPUVLDRJNYkOHnᬿN2֥ Mϴ9*Н#+%0EBM@)t"uAp`;t*E &e,3{ŋ׃>=4Ue$~תewphݰ9bN=f;R߇C]|򮶳!7_6Jk5X " j\*rĕ gC9VGoY`fukBPA\3# %&dĽZ w!""."5+:7+y߰ >xF VP!R)/ R $[;0vUYd,(&yl@C&-"(Ʈf b=t&L*<$`:zd:뽻í#: 512َɏMDMrH?^ WYse x<j461eNzboɾcfk2,d$VT7!IBAjy6L;eiJd@ɚ ĔDh+p./b2tZd1BrRx#~s+)uo{7s$.bT {ro1.+Y*4mE_T?g"z< ZH0XKX O.6 v[ԃ=?d8v0T9vGTQ3tV  uF^LC4;19&:%pcl D: ]CJD} T^Tq:3#3)aj/e07L T N;Y 6<4!6;[m<[2%uedG[vcD e&kD[H ^p&۬ O]Zk\u+rG/es1a.b=sKGo Mp(t]_r}z2r09pϺ~o!2c?%?V*.n-*QWXLLs4CIk S ANAMTGII \Ip|FO@M)Zk<|J_] H!"f [kP|W8_U ] ["nZ2+vo/YJAm!H#gt2ckQ*+,d%".+g$)':E_INFOTB*.|$}|qunm.o;ei>lo{(5wIX):w 6cQO o"sc8*09,=/*#|lZ+="%6<=n6hjc,Fwbh-r4m`m'3$}!r'q"]1e)N>{i+yfd.o/3eR5Vc Vh1'Ymn )wMOo}ŧ@A<4+,\#_~{A=Hȱ5]haU fwV`1rN~%s"g4.t`LPW}`u] ʮMn QMWND3gET_VMЮ 2H!EBZPǏ\`&)nn\uMpbMZmjVH4)`yR>U {$PLbP X:,9g>2soc]{7]_Uibget COC V^w97w^^ *!14 "EgV>XxZN[ |C OG18ʑSAc4$p-Ų)%oHx?>B'a6I@3HO6 {d15|xIk8t!)cebg'8e ke/v'<{ }o$ /'l$4+EfW.%hHHm(h9i}wkwq#!%!zM=69-7M|k{c *r!Y5c̺ELdqt5D%OuZ6'a5=(S.5816%}!nkzU.6 B|z*fcrwo95=4Ad Xo,Nt"F}hS; ԟ/Yd+KHSol&$BEOzQ|>9{|Gw 33qZsw14^6^f8t]AX_|981f:i[|1=9fWF1(B7)njLtk'%hx9gL>pgys&,l$UhnTEd|u)?pHb(Y<'$uppId t1~A`M!DWRf$.vq`wQ=y \o}-(:5ovp,a?A^o8a >0<{F|n+Na v/$'i'(>us.t5 t,Vjix6&#9kpg d> %.g}=i3#>kFy>c+x5W!%'27pn>,&&완^(xe@YV/}f'Z0[mQv:d}&Џ9Hibs1i%3&ftP7t1m]R=0֛Ÿ,!RB 23&aQe9y.uQ<5*6-$:.C Bc ըIA9}{ @WAIYǸE_.= ACKy%*i/ܣeۻ{M[^rG,NGTPUM;uuu*h>c=ZD0pc" vJ9ƒc!hIPnHIsLc*t,!4j,Y`?u` cxan@YCSkBno<-V%-;q9Fwtvgl{)tj@kes*fr%~c$g1yhu uk-r|@9fhv6f''o!/b'jD-)n,w.hcc<4,c>s%0Eb2-f|I#5%-8b%s<~J$L&$2=T17j*OG 8='%nht} ;UTemw'0=Cp!;^ XC >A^Y_>X  { ^___XEHJ4]UG611z,JT{\G_2-OC_(JY xJKG U{+6%|&ur}= DSIISf>pub7 u=o<_4 @;3Ox,&,[/*+~7:6,g,+lJ  _ CSX>] B _ OOJ2^R Z_CUI_INZS p}[se& L`vI AMxR*tc]NE\&H_Vic}O@C f>:|c<>k!" CW| ]N2 ]KT]X`)JQ 3v'n4zN(gw2ُs&|8?"7FKՙ]d/]\ѩ O RV[c鞜q#H%S]OnO! /Wg"NGt$lWܻ%\ Xx ;:v$wslefe9S )s,{se]EYB]77wِu1׍6ȵ=by^9㶷W;XKA1O~) vׯHSV=4tFMd&`;4dߐfj.&xca6>:ZQm-@O4o9akN$򻓷 LZFN^X,HMF@NTI]f nG?tZdcmΞjIFh='ph{OMeY7r?6^jes Vipg9}Ϥ=TI/!<)0_gdlky`V$yc/}9YgvmBU)>TpW_t!)Q3U !xwŊNXd#2$8_EAGLwQ Qeu7rpԓ pn^~GGG(BGGG"GG@Zk(B"P=GG@Zk(BX"H=GG@Zk(B9>K&ݦ0C("GG@Zk!>H&P=6J]_#T?"0@5JH=:7FKL2OJ17'JP"ݶX}BQB=4J(]X= 3J=("2_J'D"=#=`{#,s"[BX}"(] C,ݲGGCP"G"P"1"BbTG G@ZkP=@T= vH4J @=8@F)FH"uHGF@C@G"H"1"BbTG@Zk4GHL}PB vH} @)FXb)JqH"1E@ZkGBP"b4G@ZkH"B4Gb@Zk`GG(=&! ]"Bp H=bG="tG@ZkBb"4G@ZkG`B"b4G@ZkGG= `="&IR H  GGG $sJ B} (b2?JGSF 0vJ"TG@Zk G Bb"4G@ZkG  p"6H0D" `B"hb4G@Zk?$=pg! ɠD 頰@4F?&D1"DD }_0(B?"R`JGG@ZkBGGG@ZkÇ#VH"G?(BRHGG@ZkBGGG@Zk&"DH"G(BRKGG@ZkBGGG@Zk?$¸! D vH¦G(BRJGG@ZkBGGG@Zk9&#" D), ,". .)H@ HJP J DFG_&R"D@H G(BRJGG@ZkB? 8GGG@Zkx&"pDqBRJGG@ZkkG$ D e 0B4G8bRK@Zk @BtJ3_J I"tFC)5vJR H6"H!v HFC "G@ZkGp F'U#DD="?? B(b8="ݲ"TG@Zk8GB0!@BGGG@ZkB"A"?"@Zk"BA"?"@ZkB"A"TG@Zk"A"?"G8ݢG?"GB@Zk8=b1  1#! #!d`GlȆ"$ B "(b0=""TG@Zk ?" 0GB0!@BGGG@Zk " A"?"0ݢG ?"GB@Zk@0=G&#D% "? B(b(="ݲ"TG@Zk(GB0!@ ?"BGGG@Zk " A"?"G(ݢG ?"GB@Zkx(=G?'9#DPD% "? B(b ="ݲ"TG@Zk GB0!@ ?"BGGG@Zk " A"?"G ݢG ?"GB@Zk" "b#@ӍGp D!4G?)0B8bR J@Zk @BtJ3_J I"tFC5vJ)R H6"H!v HFC "G@ZkHGiG'+#DDi@="a? BW_!(b]"TG@ZkG@=BRHGG@Zk"(B7@A @GGG@Zk; B="@}"(bTG]@Zk!kABP)@GGG@ZkBJ "JK"?"@ZkL "BKK"?"@ZkBN "LK"?"@ZkP "BMK"?"@ZkBR "NK"?"@ZkT "BOK"?"@ZkBV "PK"?"@Zk@="@B"HbTG]@Zk@8@]G""J"Tj"T"* 33G_'P)Z#DD!@4G@} 0B8bRH@ZkIBr@I1J " 2F C@4v@Ii I"R`JuS`J F@RIG@Zk G&"DD!4G@]_)0B8bR H@ZkiBr`I1J " 2F C`4v`Ii I"R`JuS`J F`RIG@Zk G&d"DD@}4G)0B8bR H@ZkI Bq@I0?HFC I3v H "R@JtS@J I"tF RIG@Zk Gðݦ"@BGHbTG6vJݲ@Zk"B4Gb@y@@ZkB"b4GD@Zk<GDD=43,vI)v>I%?$ A}!A=E( h"8BAR`J`5Jv`JDF}@G(P@ݤ"pB="lHxb%HTGD }@ZkDGd E4GG]]}ݤ=]}#kGp#?G~G^G ^(~08@޴HPX>`^h~px޵GGG=BGh"G@Zk!>HB "h=GG@Zk =$  B&6@x¦"GG@Zk_"9?Kݲ7J=2FJ=P9#B }_#h=5Jx]:7GK}"1;J6J;KB= 3J`B_&=6B=D{# }`R"hbh"\rB]""GTG@ZkG=4GB vH @bQF1=HrHhVJ MX042.ArJ[MX.COMMON]COMMON.ALPHA_OLB;7d"2F@ZkGB"b4G@ZkGø= ]"`Bp H=bG="tG@ZkBb "4G@ZkGBh"b4G@ZkGG@$Bgc }G$vH =$b"HG@3v~J@ "4G@ZkG@"&B_&$vHbD"H=@@ "4G@ZkG@@"f`B_&$vHby^"H=@@ "4G@Zk@GX"V`B&$vHb_&H="@@ " ¤4G@Zk@G"D`By"$vHb "H=@@4G@ZkG @6`"&B_&$vHb"H=@@ "4G@Zk@G%`B?$Hݰ$vHb! &@@ "4G@ZkG D$ 4G@=RJBB2v>JbsSJSF@ "H@ZkGD?G@P"`B&0vJ_&H=B@¸R"bQ "4G@ZkG` $D7 _4G@Bb0vJB@ "H@ZkGD?G(` $yU D "İ4G@]Bb2v^JEB@]H@ZkGD?G⤹!`/ DGD "Ġ4G@}R@JBbAB4v~JuS@JF@]H@ZkİGDG8¤`$ $ D G "4G@=Bb1v>J%B@=H@ZkGD?G`$W$+ DdG$!İ "@]4GB%bD!2v^Jd!EB@]HP)!@ZkGE G, "̡4G@]R JBb!B3v^JtS JtF@=H@Zḵ GE?Gʡ?%)!E ".4GN@}BR@J4v~JbABuS@JF@]Hݱ@Zk"G EG?%d)!E , "L4G,@]R JBb!B3v^JtS JtF@=H@ZkL G EGGD0B`%%*U!*E G "4G@=Bb1v>J+B@=H=@Zk G*EpB "xb4G@Zkh"B4Gb@Zk4GG] ](}08@ݤHPX=`]h}pxݥ#kG#G~G^4G^(X" ~(08޴@HPG XP" "R JG@ZkC@GDGG X4G "0X"@Zk#C@GDCD0GD4G X "R@J(X"G@Zk C@GD "G X4GG0X"@ZkC@GDC8EDF D D? Gf@D?GG]D2GG]] }(08ݤ@HP`#k4 PGpOTS$FILL4 l@pOTS$FILL4 pGOTS$FILL4 @OTS$FILL4$ GOTS$FILL4 @OTS$FILL4 GOTS$FILL4 @OTS$FILL4 G STR$COPY_DX4b#` STR$COPY_DX4 @ STR$COPY_DX4 G$ STR$COPY_DX4b#` STR$COPY_DX4 @$ STR$C%OPY_DX40GdSYS$OPEN4Hb#`SYS$OPEN4`@dSYS$OPEN4hG| STR$FREE1_DX4pb#` STR$FREE1_DX4x@| STR$FREE1_DX4G STR$FREE1_DX4b#` STR$FREE1_DX4@ STR$FREE1_DX4G& STR$COPY_R4b#` STR$COPY_R4@ STR$COPY_R4G SYS$CONNECT4b#` SYS$CONNECT 4@ SYS$CONNECT4G SYS$CLOSE4b#` SYS$CLOSE4@ SYS$CLOSE4LG| LIB$GET_VM4'Tb#` LIB$GET_VM4x@| LIB$GET_VM4G SYS$CLOSE4b#` SYS$CLOSE4@ SYS$CLOSE,GSYS$GET, b#`SYS$GET,@SYS$GET4 0GHOTS$FILL4 D@HOTS$FILL4 H(G\OTS$MOVE4 X@\OTS$MOVE4 |GOTS$FILL4 @OTS$FILL4 GOTS$MOVE4 @OTS$MOVE4 GOTS$FILL4 @OTS$FILL4 GOTS$MOVE4 @OTS$MOVE4) G0OTS$FILL4 ,@0OTS$FILL4 0GDOTS$MOVE4 @@DOTS$MOVE4 GOTS$FILL4 @OTS$FILL4 GOTS$MOVE4 @OTS$MOVE4 G OTS$MOVE4 @ OTS$M*OVE4@GT MEM_GETTXT4Hb#` MEM_GETTXT4P@T MEM_GETTXT4 \GOTS$MOVE4 @OTS$MOVE4G LIB$GET_VM4b#` LIB$GET_VM4@ LIB$GET_VM4 GOTS$MOVE4 @+OTS$MOVE4 G,OTS$MOVE4 (@,OTS$MOVE4 0G@OTS$MOVE4 <@@OTS$MOVE4 @GTOTS$MOVE4 P@TOTS$MOVE4 xGOTS$MOVE4 |@OTS$MOVE4G LIB$GET_VM4,b#` LIB$GET_VM4@ LIB$GET_VM4 GOTS$MOVE4 @OTS$MOVE4 8G@OTS$MOVE4 <@@OTS$MOVE4lG LIB$GET_VM4pb#` LIB$GET_VM4@ LIB$GET_VM4 GOTS$MOVE-4 @OTS$MOVE4 GOTS$MOVE4 @OTS$MOVE4 G0 LIB$GET_VM4 b#` LIB$GET_VM4, @0 LIB$GET_VM4 < G\ OTS$MOVE4 X @\ OTS$MOVE4 G OTS$MOVE4 @ O5 MX042.ArJ[MX.COMMON]COMMON.ALPHA_OLB;7d1-.TS$MOVE4 G MEM_GETTXT4 b#` MEM_GETTXT4 @ MEM_GETTXT4 G OTS$MOVE4  @ OTS$MOVE 4L Gh LIB$GET_VM4T b#` LIB$GET_VM4d @h LIB$GET_VM4 t G OTS$MOVE4 /@ OTS$MOVE4 G OTS$FILL4 @ OTS$FILL4 G LIB$GET_VM4 b#` LIB$GET_VM4 @ LIB$GET_VM4 G OTS$MOVE4 @ OTS$MOVE4 G OTS$MOVE4 @ OTS$MOVE40  G OTS$MOVE4  @ OTS$MOVE4  G, OTS$MOVE4 ( @, OTS$MOVE4 0 G@ OTS$MOVE4 < @@ OTS$MOVE4 @ GT OTS$MOVE4 P @T OTS$MOVE4 X Gh OTS$MOVE4 d @h OTS$M1OVE4 h G| OTS$MOVE4 x @| OTS$MOVE4 G LIB$FREE_VM4 b#` LIB$FREE_VM4 @ LIB$FREE_VM4 G MEM_GETTXT4 b#` MEM_GETTXT4 @ MEM_GETTXT4 ( Gp OTS$MOVE4 l @2p OTS$MOVE4 G MEM_GETTXT4 b#` MEM_GETTXT4 @ MEM_GETTXT4 G OTS$MOVE4  @ OTS$MOVE4@ GP MEM_GETTXT4D b#` MEM_GETTXT4L @P MEM_GETTXT4 X G OTS$MOVE4 3@ OTS$MOVE4 G LIB$FREE_VM4 b#` LIB$FREE_VM4 @ LIB$FREE_VM4 G SYS$DISCONNECT4 b#`SYS$DISCONNECT4 @ SYS$DISCONNECT4 G SYS$CLOSE4 b#` SYS$CLOSE4@ SYS$CLOSE4<!GSTR$CASE_BLIND_COMPARE<"b#`STR$CASE_BLIND_COMPARE<!@STR$CASE_BLIND_COMPARE4 GOTS$FILL4 @OTS$FILL4 GOTS$FILL4 @OTS$FILL4 GOTS$FILL4 @OTS$FILL4 d5G STR$COPY_DX4b# STR$COPY_DX4 @ STR$COPY_DX4G SYS$CREATE4b# SYS$CREATE4@ SYS$CREATE4G  STR$FREE1_DX4b# STR$FREE1_DX4@  STR$FREE1_DX4,GL STR$COPY_R648b# STR$COPY_R4H@L STR$COPY_R4LG` SYS$CONNECT4Pb# SYS$CONNECT4\@` SYS$CONNECT4hG| SYS$CLOSE 4pb# SYS$CLOSE4x@| SYS$CLOSE,GSYS$PUT,b#SYS7$PUT,@SYS$PUT,GSYS$PUT,b#SYS$PUT,@SYS$PUT,(GXSYS$PUT,4b#SYS$PUT,T@XSYS$PUT,hGSYS$PUT,tb#SYS$PUT,@SYS$PUT,GSYS$PUT,8b#SYS$PUT,@SYS$PUT,G SYS$PUT,b#SYS$PUT,@ SYS$PUT,,G\SYS$PUT,<b#SYS$PUT,X@\SYS$PUT,GSYS$PUT,b#SYS$PUT,@SYS$PUT,GSYS9$PUT,b#SYS$PUT, @SYS$PUT,@G`SYS$PUT,Db#SYS$PUT,\@`SYS$PUT,GSYS$PUT,b#SYS$PUT,@SYS$PUT, G0SYS$PUT,b#SYS$PUT,,@0SYS$PUT,|:GSYS$PUT,b#SYS$PUT,@SYS$PUT,GSYS$PUT,b#SYS$PUT,@SYS$PUT,DGhSYS$PUT,Hb#SYS$PUT,d@hSYS$PUT,GSYS$PUT,b#SYS$PUT,@SYS;$PUT,G8SYS$PUT,b#SYS$PUT,4@8SYS$PUT,GSYS$PUT,b#SYS$PUT,@SYS$PUT4GSYS$DISCONNECT4b#SYS$DISCONNECT4@SYS$DISCONNECT4G SYS$CLOSE4b#< SYS$CLOSE4@ SYS$CLOSE4xG OTS$SEARCH4@ OTS$SEARCH4G OTS$SEARCH4@ OTS$SEARCH4G OTS$SEARCH4 @ OTS$SEARCH40GD OTS$SEARCH4@@D OTS$SEARCH h!U MX042.ArJ[MX.COMMON]COMMON.ALPHA_OLB;7d<==MX_CONFIG 4= SYS$DISK:[].MXCFG4=SYS$DISK:[].MXCFG =08;=` 8 OTS$SEARCH=*0=%@ STR$FREE1_DXSYS$PUT SYS$CREATE0;7 ROUTER_INFO7 LOCAL_INFO=8OTS$FILL7 SMTP_INFO7MLISTS7RWRULES7>SYSUSERS=0H;= 7 JNET_INFO7ALIASES7FSRVQUE7PATHLIST7 DNSMTP_INFO8OTS$MOVE7 SITE_INFO7 XSMTP_INFO STR$COPY_DXSYS$DISCONNECT SYS$CLOSE SYS$CONNECT STR$COPY_R=0;=  LIB$GET_VM MEM_GETTXT LIB$FREE_VMSYS$OPENSYS$GET !?STR$CASE_BLIND_COMPARE7 MX__CFGERR8 OTS$MOVEMF F=6.-MXCONFIGBLISS-32E V1.3-023275Q, ,= 4`4= LOAD_MXCONFIG4=_-_-   @   "!4$,,+.   ;>   A $Z - 1lo ; C ? ~ M U Q  O ` e e f k p v x                 B                    H$ $= P4. .=  4=  = . .=  4=  = . .=  4=  = . .=  4=  =C . .=  4=  = . .=  4=  = . .=  4=  = . .=  4=  = . .=  4=  = . .=  4=  = . .=  4=  = D. .=  4=  = . .=  4= . .=  4= . .=  4=  =  = . .=  4= . .=  4=  = . .=  4=  = . .=  4E=  = . .=  4=  =  = . .=  4= . .=  4=  = . .=  4=  =  = . .=  4= . .=  4=  = . .=  4=F  =  = . .=  4= . .=  4=  =  = . .=  4= . .=  4=  =  = . .=  4=  = . .=  4=  = . .=  G4=  = . .=  4= . .=  4= . .=  4=  =  =  = . .=  4= . .=  4= . .=  4=  =  =  = . .=  H4= . .=  4= . .=  4=  =  =  =  = . .=  4=  = . .=  4=  = . .=  4=  = : := 4= H = IH44= SAVE_MXCONFIGH4= % # % % ' % ' % % ' ' ' ) ' ( - , - , - 3 4 A A B D C H K J K J R P S R S U X Z J[ Z ] ] ` b b d c h k j k m t u t { } } ~ y                                   K                                :         P$ $= \4. .=  G4=  = Ӷ& MX042.ArJ[MX.COMMON]COMMON.ALPHA_OLB;7d-BKL. .=  G4=  = . .=  G4=  = . .=  G4=  = . .=  G4=  = . .=  G4=  = . .=  G4=  = . .=  H4= . .=  MG4=  =  = . .=  G4=  = . .=  G4=  = . .=  G4=  = . .=  G4=  = . .=  G4=  = . .=  H4= . .=  GN4=  = . .=  G4=  =  = . .=  G4=  = . .=  H4= . .=  H4= . .=  G4=  =  =  = . .=  H4= . .=  HO4= . .=  G4=  =  =  = . .=  H4= . .=  H4= . .=  G4=  =  =  = . .=  H4= . .=  H4= . .=  G4=  =P  =  = . .=  H4= . .=  H4= . .=  G4=  = . .=  H4= . .=  G4=  =  = . .=  H4= . .=  G4=  =  =Q . .=  H4= . .=  G4=  =  =  =  = . .=  H4= . .=  H4= . .=  G4=  =  =  = . .=  G4=  = . .= R G4=  = : := 4=  = !844="MXCONFIG_INSERT_PATH84=yqp ,P ,P ,P \  }        0$ $= L4. .=  74=  = . .=  74= S = . .=  74=  = . .=  74=  = . .=  74=  = : := 4=  =  ww1*!dV1.9HH MX_MSGV1.912-SEP-1995 22:0312-SEP-1995 22:03Message A02-10 T $ABS$ MSGPTR$SECTION MSGPTR$AAAAAAAA MSGPTR$AAAAAAAB MSGPTR$AAAAAAAC 0@' MX__NODIGEST09' MX__MAILLISTD84' MX__BADRFC821ADDR8,' MX__NODNSRESPONSE0!' MX__LISTOWNER0' MX__MM_RETRY0' MX__NOACCESSU0 ' MX__NOFAKE0' MX__NOMAILNOW0' MX__RFC8220' MX__BASE640' MX__MAIDLVR0' MX__FILEREQ0ـ' MX__MLCTRL0р' MX__MAILLIST0ɀ' MX__LCLUSER0' MX__FWDUSER0' V MX__FLQERR0' MX__FLQLCK0' MX__ALRSUB0' MX__SETACCESS0' MX__UNKSET0' MX__QRECLERR0' MX__NOTSUB0' MX__NOMATCH0z' MX__MSGTXTERR0r' MX__QERROR0j' MX__CFGERRW0b' MX__INVADDR0Z' MX__FWDLOOP0R' MX__DISMAIL0J' MX__NOCOMPLETE0B' MX__PROTOERR0:' MX__NONETADR04' MX__MEMALLOC0,' MX__RETRYEXCD0$' MX__NOHOST0' MX__NONET0' MX__AGENTALRDY0 ' MX__RWINITERR0' MX$_FACILITY =ef44=MX_MSG wwj+ MX042.ArJ[MX.COMMON]COMMON.ALPHA_OLB;7dK@gq)ISv8@BkdGĤ_N[kgm4Fp(9NËMi顸tOXCXK[1(M 0l!d=2muGUkMs>eeI+Jlc ( +_ixX k!2t4GItk=GLtC[ɴ0o$myos 4}N$wH(8$sa"HOK1A@v@JO SXcBwG)IJ{GjGw2=/=LpvHcK"A0@?K]"4C`k]CLs ⠮B=_/wWHos SqPA= #@!'S#gbMOP2UसZ&BFrSs\zZ+g HO@W+ tP4G1@LkMO.Bm"soV&fb LzRi<%"EK@vRExCq4G|H#%˪<=/Jcvif Hc"tH=?Jp &qG@Ga~KRzMP_vjO'uX.Xy&30DvPm4G:@W$bUTw 3 {D(DAT{`Qe5{ EUwG"CR/^Hw.JRcB Fż%"CQF =;T_8GHR)DTC#iZ=S%9$GԼJ&u B[/6\E<"4G@k TlC/YŤE$8W[t]W1G `d|r$wUj_O[ DR *"M$3M xC b]IruZ}S@JRFDx~4}-RIRGDٲqJw1Q+22V3w٣z%:D>FW BVu!7$4[G@=jm1f>LQ%&A=HDGYH5vRJDGxH,},$R G8+;DMKWX b? ֽ{4NY L'Ӗ*0?DnDgx)@%*i?Kɨ KMTG$"6C^׎O밼LQRKU\,`ZtJS7KeUEBZVlC\TL)?C{e/Z2E  <)5yMeI5@~Zς4mĨ|IL,aF[MHU+BZL@BSZb pЩS >ϹQZ_IX3*%C⿞PE"FOe0jrSOX"Sb74^2xAx{h\hEA:g 8E9BW*qՇO̮[~gTp=`KVEzD/=cAz 9I5ۦ߀O#jڡPVD!Q[h *#NNL-U/MO:0C_#*=j^yPcaBIK7[Eh + <sZ :\*w!G`L 5eY\ ͒>KTb$?Գa>srE^p3pbid.hM&)GpR 8ثҚODWD8[H0IUT&C538 SuzMT@YJ^W VPBE6ZO `L4;0YޥN3k [W=f.\@- I G5a ">H<'"jWV4n 58YRanEX"qWYnWQDS=P6K)x7[FSPT &,]QSPUr d3(jRPXTSL5t![UmByzZX5ghWyXNNKNM`Ӎ=5SYkM ${F4Q\dUPLhNG_JOdAU-/" @}%WWeKze  a3,_QfDNҶ{yλ,^p1S\<4ZՊZ\a f : E$TDj{D.Fko(Mjje @Gހ:h:JY[r@^&Dl,1; RdrX_GBkK5·?pz %NhL:mgZuuI5Ju7ZK_`E5JR"$qVm5 xSĬKq4K4y= 9 =P"Cg""]P$`%PJK(U#.BQYH ]>CQq6s=@fNQTP̽X"G2Yku1"O643PjIQ9embm ?wHP,8_B|!lEA;mWeDaEj;SH'/5ݢH=nL41TH(~9ivH@q)WX^e+ y^3@9 rr9R7ECG2b/"Sgٸv KbLWd + E G$g'G1m0I hVe]"vMFfJMxt ӲWAgfKR0aY)/_MAEeC; :#t<zd"3wYS3ItCѲdޤ]O2{F@:jM#4$$Q-s/x sT0 Š^<{A?&D!DDK S i/QmQ`ã^IDRZgFC>I_z G, hfV%D+FIL,PA(`[ 8[Q5GD0PhB7 uGQ*Iy$ ᛞ-@UǬ `㼼GKvSL _B*F%GMM|">URn$48yqXuzSEDE@_E4P)$:n#GTv&\9&#h_IA\|-6 ,hƣ* .@^-PJP _Y_ N, lKb&ӥDHUG$Av(C@ N QSkڣN?"SiuGWq4@k1&te"%ODS=UʰIm^J?s@zIjo5Ǹ  [U P9l2'[A0@ks": }PC]OlLGI"5MUCUW:MKQ@ H-)M9T G "%"PM?Z2LLVb\sU6#DDBkxnL@k4n 3G@_) ܈C}^CUMUVCWT\إ:"2"6!P8H_P@fL$>;{n]Xd G@RkH"8os_YWWP/D']OJT~nL؀b8 :mi 1e4#?W6C `VW7t_E6WuY Ǻ%TGC'"jPFd0=PM HEF88Qm;_^KNUG!@lOG\,BG vzq0M oJ^]sGEy}AF;:s!M_kGbPh3S. C&Ů5 {*S>U$ݲ KD[^ SH( ϡG5'>^ Qov4BDBi  VM>#5-;WҔ>\A7"AӫB@} 5$|Rn@;uVD,T %'0#BhCE% |'(١}{SzcA?[S8X-G4@C_ ]d[ C HW/`VAT]YPPsLZk?[! V_-0[fwmDHG WSULtNY Y  :=7}Q$4C?[doGA lT]܂R(J@j<S)Pjf GH#|@: u.p%-'BdpR I1D&Q[JO MR[!aGD;U D. K^ pp=Oc'};HW5T|@|%elT UnXCDA88_U =#@wW>( _ 75@Pi(Rߔ*PDCGoA>DP[iywE vzK1jQMrLzK"2"gkD_Q(]/U;ZMgPTqǪ` ?$@BBRG)<{4P a5kM? PgID-Pc%K@gk&j$w<'dl [T HjVT z%6:I 8'0Ysg_ZymM 5 %' [NSh3ó R)X"'G XVO G戃v"R < AjTb e0bQG$HpZA {&GNSFHV_ZrSHu ]GCI5Ii qB(E('ASAkEBvS(X!ȭ:`J$A Ze Z,Wc.DMV|TNF" H; baIr k] |[G5H O]j^^PIiꓢFp]]@ѯk|G( SBJ C* n'I;QcTZ׮.L "XkRƵ $J, ^J#Q-j]t J !/BJvR@Nbm u[UzFe % uS &ڲźWQ:3'%4W`I'i@4e:^d[wMV:WU5+[jIn@FDS~΂YʙMP+۠#N9rȩeP.sbGhaK:kZo-@A7Ej8y㜵vM< V#H9句3CkKqE\ #Ͱ~-)n?UUNXxY .&AUQ]JS ?( BBW6}^A@܆D3 P|9F h:j̸߲;[IoBt!# KwoutYlSix 7DOy9;MmT%FI_b KoLG}V1h5A(m%DF: O*-pGeZ;)$SyIaeG]G @rLI524^cv+K @R9sEVw3H qH`O