8                    P I N E   M A I L E R   F O R   V M S8                    =====================================   			University of Washington   /                          Version 3.91-2 for VMS *                               Beta Release  )                               Andy Harper .                           Kings College London     			---   C O N T E N T S  ---   
 		0. FOREWORD   
 		1. OVERVIEW   3 		1.1 Introduction  . . . . . . . . . . . . . . . . 3 		1.2 Restrictions  . . . . . . . . . . . . . . . . 3 		1.3 Pre-requisites  . . . . . . . . . . . . . . . 3 		1.3.1 Software  . . . . . . . . . . . . . . . . . 3 		1.3.2 Essential first-time documentation  . . . . 3 		1.3.3 First-time or upgrade installation  . . . . 3 		1.4 Building  . . . . . . . . . . . . . . . . . . 3 		1.4.1 Common VMSBUILD options . . . . . . . . . . 3 		1.5 Installation  . . . . . . . . . . . . . . . . 3 		1.5.1 Installing for the first time . . . . . . . 3 		1.5.2 Installing upgrades or new releases . . . .   / 		2. MAIL SERVERS AND THE NETWORK CONFIGURATION   3 		2.1 General considerations  . . . . . . . . . . . 3 		2.2 TCP stack-specific setup  . . . . . . . . . . 3 		2.2.1 NETLIB  . . . . . . . . . . . . . . . . . . 3 		2.2.2 MULTINET  . . . . . . . . . . . . . . . . . 3 		2.2.3 UCX . . . . . . . . . . . . . . . . . . . . 3 		2.2.4 CMU . . . . . . . . . . . . . . . . . . . . 3 		2.2.5 Other stacks  . . . . . . . . . . . . . . . 3 		2.3 Third party mail systems  . . . . . . . . . . 3 		2.3.1 MX  . . . . . . . . . . . . . . . . . . . .    		3. AVAILABLE SERVERS  3 		3.1 IMAPD . . . . . . . . . . . . . . . . . . . . 3 		3.2 IPOP3D  . . . . . . . . . . . . . . . . . . .    		4. CONFIGURATION NOTES  3 		4.1 Sending mail out with PINE  . . . . . . . . . 3 		4.1.1 Using a local mail router . . . . . . . . . 3 		4.1.2 Using a local mail delivery agent . . . . . 3 		4.1.3 Using VMS callable mail . . . . . . . . . . 3 		4.2 Mailbox format specifications . . . . . . . . 3 		4.3 PINE Configuration files  . . . . . . . . . . 3 		4.3.1 Minimum configuration settings  . . . . . . 3 		4.3.2 Configuration file restrictions . . . . . . 3 		4.3.3 Example PINE.CONF-FIXED file  . . . . . . . 3 		4.3.4 Example PINE.CONF file  . . . . . . . . . . 3 		4.4 Server configuration file . . . . . . . . . . 3 		4.5 Effect of Inbox-Path variable . . . . . . . . 3 		4.6 VMS MAIL and Address Rewriting  . . . . . . . 3 		4.6.1 Creating a Replyable Address  . . . . . . . 3 		4.6.1.1 RFC1405 Local Format Encoding . . . . . . 3 		4.6.2 Site Configuration of Address Rewriting . . 3 		4.6.3 Basic Address Reformatting Algorithm  . . . 3 		4.6.4 Standard VMS Address Formats  . . . . . . . 3 		4.6.4.1 Basic MAIL-11 Formats . . . . . . . . . . 3 		4.6.4.2 X.400 Formats . . . . . . . . . . . . . . 3 		4.6.4.3 Foreign Mail Interfaces . . . . . . . . . 3 		4.6.5 Guide to Configuring Address Reformatting . 3 		4.6.5.1 User-Configurable Address Rules . . . . . 3 		4.6.5.2 Format of a Complete Rewrite Rule . . . . 3 		4.6.5.3 Address Rewriting Logical Names . . . . . 3 		4.6.5.4 Configuring Unusual Internet Transports . 3 		4.6.5.5 Mapping Non-Internet Transports . . . . . 2 		4.6.5.6 Mapping DECnet Node Names and Namespaces3 		4.6.5.7 Alternative DECnet nodename mapping . . . 3 		4.6.5.8 Mapping X.400 Addresses . . . . . . . . . 3 		4.7 Automatic INBOX filing  . . . . . . . . . . . 3 		4.8 Logging and debugging . . . . . . . . . . . . 3 		4.9 Mailbox subscription files  . . . . . . . . . 3 		4.10 Mail prototype logical name  . . . . . . . . 3 		4.11 Placement of RFC822 headers  . . . . . . . . 3 		4.12 Automatic purging  . . . . . . . . . . . . . 3 		4.13 Time Zone setting  . . . . . . . . . . . . . 3 		4.14 Long Record Support  . . . . . . . . . . . .    		5. KNOWN BUGS AND PROBLEMS  3 		5.1 Corrupt mail files  . . . . . . . . . . . . . 3 		5.1.1 Empty folders . . . . . . . . . . . . . . . 3 		5.1.2 Long records  . . . . . . . . . . . . . . . 3 		5.2 Parallel PINE and VMS MAIL sessions . . . . . 3 		5.3 Message deletion  . . . . . . . . . . . . . . 2 		5.4 Notification of new INBOX mail does not work   		6. REPORTING A PROBLEM   		7. SUMMARY OF LOGICAL NAMES   3 		7.1 C-CLIENT logical names  . . . . . . . . . . . 3 		7.2 PINE logical names  . . . . . . . . . . . . . 3 		7.3 IMAPD logical names . . . . . . . . . . . . . 3 		7.4 IPOP3D logical names  . . . . . . . . . . . .   % 		8. RELEASE NOTES AND CHANGE DETAILS    0. FOREWORD  ===========   I PINE is a screen based mail and news program. Originally written for unix K systems, by the University of Washington, it has been ported to a number of N others. This implementation is for the Digital Equipment Corporation's OpenVMSJ operating system. PINE on VMS uses the VMS callable routines for most mail related functions.  L Yehavi Bourvine ported version 3.91 of the PINE code and the IMAPD server toF VMS. His last release was known as 3.91 Beta 5. However, this port wasK incomplete. I have progressed the port to a workable state and upgraded the L code since then; This note summarizes the changes. My version starts at 3.91 Beta 6.   J Note - the changes here have been tested ONLY with the NETLIB and MULTINETO TCP/IP stacks. NETLIB support provides an alternative for users of other stacks L (UCX, CMU, pathway etc.) If anyone wishes to contribute the relevant mods toL make direct support for these stacks work properly, please let me know. I'llO try to integrate them as and when I can. I only update this in my limited spare & time or as needed for our local users.  M The code will compile with GNU C 2.7.1, VAX C 3.2, DEC C 5.5 and DECC 5.3 and A works on both VAX and ALPHA with NETLIB 2.x and/or Multinet 3.5B.      Andy Harper ' Kings College London						  22 Oct 1997  E-Mail: A.Harper@kcl.ac.uk   1. OVERVIEW  ===========      1.1 Introduction  K This kit contains all you need (except for a C compiler) to build a working N PINE mailer, also a POP3 server and an IMAP server, for VMS. The code has been tested with the following:I     VAX C 3.2 on VAX and OpenVMS 6.2, using NETLIB 2.0J and MULTINET 3.5B I     DEC C 5.3 on VAX and OpenVMS 6.2, using NETLIB 2.0J and MULTINET 3.5B K     DEC C 5.5 on Alpha and OpenVMS 6.2, using NETLIB 2.0J and MULTINET 3.5B K     GNU C 2.7.1 on VAX and OpenVMS 6.2, using NETLIB 2.0J and MULTINET 3.5B   N Other combinations are LIKELY to work. It's just that they've not been tested.  / See below for details of bug fixes and history.      1.2 Restrictions   N The PINE software was originally written with unix systems in mind. ConvertingI it to VMS has thrown up some features that cannot (easily) be implemented M because of the way the VMS MAIL.MAI file is organised. As such, the following @ restrictions are currently imposed on PINE and the IMAPD server:  I   * Multiple simultaneous access to the same mailbox may cause unexpected      behaviour.  I   * Deleting/expunging messages may not be instantly visible to PINE or a      remote IMAP client.      1.3 Pre-requisites   1.3.1 Software  M Before building and installing PINE and the various supporting utilities, you ! will need the following software:   L   *  A C compiler.  The software has been tested with VAX C 3.2, DEC C 5.3 /O      5.5 (both VAX and Alpha) and GNU C 2.7.1. Other compiler versions may work !      but there are no guarantees.   J      IMPORTANT NOTE:  Due to a change in the contents of the DEC C RTL andO      STARLET under certain combinations of DEC C and OpenVMS, you find that the F      link fails due to missing definitions of the symbols SYS_NERR andP      SYS_ERRLIST. Digital have provided a patch for this called ALPACRTxx_vvv orN      VAXACRTxx_vvv where 'xx' is the version of the path and 'vvv' is your VMS5      version number. Contact DEC support for details.   N   *  A TCP/IP network stack.  The recommended interface is NETLIB (version 2.0I      or above) which provides a stack independent interface to all of the O      popular VMS TCP/IP stacks, such as UCX, MULTINET, CMU, Pathway etc. NETLIB #      is available as freeware from: , 	ftp://ftp.madgoat.com/madgoat/netlib020.zip  #      and should be installed first.     K If you have a version of NETLIB that is supplied as part of another Madgoat N product, such as MX, you may find that a required header file "NETLIBDEF.H" isM missing. If it is not there, please obtain the separate NETLIB product, noted H above, and ensure that this file is present before starting to build the	 software.   N In the absence of NETLIB, there is direct support for MULTINET. If you have noO TCP stacks at all, then there is a null stack available which restricts PINE to N local mailboxes only and prevents any of the network servers from functioning.  M If your underlying stack is MULTINET then you should install the patch to the M multinet header files if you plan to compile with DEC C. Otherwise, there are 0 problems with this that may prevent compilation.      + 1.3.2 Essential documentation to read first   I You should read certain documentation files and command procedures before G attempting to build or install. At the very least, these are essential:   8 	  * AAAREADME.TXT	for build/install/config instructions@ 	  * PINE_SETUP.COM	for the logicals/directory structure of PINEB 	  * IMAPD_SETUP.COM	for the logicals/directory structure of IMAPDD 	  * IPOP3D_SETUP.COM	for the logicals/directory structure of IPOP3DE 	  * CCLIENT_SETUP.COM	for the logicals to configure C-CLIENT library : 	  * INSTALL.COM		for the commands to copy files in place.3 	  * USER_SETUP.COM	To create users for the servers G 	  * SERVICE_SETUP.COM	To create the tcp/ip servers (IMAPD/IPOP3D etc.)   J Other files, giving technical info on PINE etc. can be found in the [.DOC]I subdirectory. May be useful for setting up PINE.CONF files and gaining an ( understanding of PINE and IMAP concepts.  O If you will be using the IMAP or POP servers, then be sure to read the notes on 8 setting up the underlying stack, later in this document.    ( 1.3.3 First-time or upgrade installation  N If upgrading from a previous release where the directory structure is in placeO already AND the recommended logical names have been used, then the new code can L be installed (after building) simply by running the INSTALL.COM procedure inN the top level directory. This copies the .EXEs to the right place based on theE logical names and instantly updates your system with the new version.   : Otherwise, read on for details of setting up the software.     1.4 Building  K    1.	Create a directory for the code and unpack to create a directory tree - 	into it, preserving the directory structure.   K    2.   From the top level of this tree, execute the VMSBUILD.COM procedure I         with zero or more parameters to select the build options. With no D 	build options supplied, the procedure will autoconfigure itself forF 	the appropriate C compiler and network stack. This is recommended forH 	the first build. Later, you can tailor the build by supplying a list of: 	options; the table below describes the options available.   	Important options are: C 	  * Choice of compiler:  GNU C, VAX C and DEC C are all supported. H        	    The default is to use whichever is installed on your system.E 	    Due to GNU C being quite fastidious about checking, you may find F 	    that it throws up compile warnings which the others do not. DEC CG 	    could, but is run in VAX C compatibility mode. The warnings do not + 	    affect performance and can be ignored.   I           * Choice of network support:  NETLIB (recommended) or MULTINET. < 	    NETLIB will support all of the major VMS TCP/IP stacks.  M    3.	The top level procedure builds all of the modules that make up the PINE C 	distribution. This includes the PICO library (and stand-alone PICO E 	editor), the C-client library (and the IMAPD and IPOP3D servers) and G 	finally the PINE mailer itself. Each module can be built separately if E 	required by simply moving to that directory and running the VMSBUILD G 	procedure found there. Note that PINE requires the other modules to be          built first.        1.4.1 Common VMSBUILD Options   M Each of the main modules (PICO library, C-CLIENT library and PINE) contains a J separate VMSBUILD procedure in the relevant directory. The master VMSBUILDO procedure at the top level calls these in the right order (PICO, then C-CLIENT, N and finally PINE) to build the modules. A series of options are passed to eachC by the master procedure, which in turn receives them as parameters.   M These are the parameters common to each of the VMSBUILD procedures. They must N be specified in full (no abbreviations) and a comma-separated list is allowed./ Misspelled options are ignored without comment.   O -------------------------------------------------------------------------------  Parameter	Effect					DefaultO -------------------------------------------------------------------------------   D COMPILE-ONLY	Skip link stage, just compile      )	Compile, then link. LINK-ONLY	Skip compile stage, just re-link   )  A NETLIB		Select the NETLIB TCP interface	   )	Auto-detect [note 1] C MULTINET	Select the MULTINET TCP interface  )	... or use null stack + NOTCP		Select null TCP interface          )   @ VAXC		Use VAXC compiler in preference    )	Auto-detect. [note 2]* GNUC		Use GNUC compiler in preference    )  7 DEBUG		Include debugger in each application	No debugger   7 OPTIMIZE	Specify compiler optimization		No optimization - 		Turned off if DEBUG also specified	[Note 3]   8 NOTRACEBACK	Specify link with /NOTRACE		Link with /TRACE 							[Note 4]   O -------------------------------------------------------------------------------    NOTE 1: G   If none of NETLIB, MULTINET or NOTCP are supplied as a parameter, the O   procedure will auto-detect the stack and use whichever is found. If more than I   one are found, then the 'best' is selected (NETLIB, then MULTINET, then O   NOTCP). If no stack is found, NOTCP is used. This prevents any of the servers N   functioning but allows manipulation of local mailboxes through PINE; sendingN   of mail through is only possible via the sendmail or foreign mail interface.O   The NOTCP option specifically selects the NULL stack (this allows building an 4   image for another system that has no TCP support).   NOTE 2: K   If no compiler option is specified, the procedure will examine the system L   to see which C compilers are installed from the set [DEC C, VAX C, GNU C].N   If one is found, it will be used. If several are found, then the 'best' will>   be selected in this order of priority:  DEC C, VAX C, GNU C.J   One of the options VAXC or GNUC may be specified to override the defaultN   selection and force the use of a particular compiler. Selecting both options>   is an error, as is selecting a compiler that is not present.   NOTE 3: H   Optimization by the compiler is turned off by default. This is becauseK   bugs in the optimizer sometimes cause erratic behaviour. No problems have M   been detected compiling without optimization so this is the default. Use at B   your own risk. This option is ignored if DEBUG is also selected.     NOTE 4: M   It may be required to INSTALL some images to give enhanced privileges or to M   make them shareable for more efficient operation. This may require that the L   images be linked with /NOTRACEBACK.  Selecting the NOTRACEBACK option does?   just this.  This option is ignored if DEBUG is also selected.     	 Examples:      @VMSBUILD 7 	Build with all defaults; autodetect compiler and stack      @VMSBUILD GNUC,OPTIMIZE @ 	Build using the GNU C compiler and select compiler optimization  "   @VMSBUILD MULTINET,VAXC,OPTIMIZED 	Build using the direct MULTINET support (even if NETLIB installed),; 	using the VAX C compiler and select compiler optimization.      1.5 Installation  N Once the software has been built, producing a number of executables, it shouldO be installed into the production system. This requires that a directory tree is H created, logical names are assigned, and configuration files are set up.  M If this is the first time the software has been installed, see section 1.5.1, 3 otherwise, if this is an upgrade, see section 1.5.2     # 1.5.1 Installing for the first time   D    1.	Create a directory for the production system. You can have oneG 	directory for the PINE files and another for the IMAP server files, or H 	they can be combined into the same directory. In either case, reference; 	to the various places should be through logical names (see E 	PINE_SETUP.COM, IMAPD_SETUP.COM and IPOP3D_SETUP.COM for more info).r  5    2.	The directory structure that is recommended is:  	-1 	  PINE_ROOT:[000000]	-- Top level for pine files.. 		[.BIN_VAX]		For VAX architecture executables2 		[.BIN_ALPHA]		For Alpha architecture executables$ 		[.CONFIG]		For configuration files 		[.LOGS]			For log files   <           IMAPD_ROOT:[000000]   -- Top level for IMAPD files. 		[.BIN_VAX]		For VAX architecture executables2 		[.BIN_ALPHA]		For Alpha architecture executables$ 		[.CONFIG]		For configuration files 		[.LOGS]			For log files.  <           IPOP3D_ROOT:[000000]  -- Top level for IPOP3Dfiles. 		[.BIN_VAX]		For VAX architecture executables2 		[.BIN_ALPHA]		For Alpha architecture executables$ 		[.CONFIG]		For configuration files 		[.LOGS]			For log filesR  D 	Note -- PINE_ROOT, IMAPD_ROOT and IPOP3D_ROOT can be defined to the 	same thing if preferred.   H         The rooted directories are defined by commands similar to these:> 	  $ define/system/exec/tran=concealed pine_root   dev:[disk.]> 	  $ define/system/exec/tran=concealed imapd_root  dev:[disk.]> 	  $ define/system/exec/tran=concealed ipop3d_root dev:[disk.]  ; 	[ note the trailing '.' and the /tran=concealed qualifier]   ; 	The command procedures PINE_SETUP.COM, IMAPD_SETUP.COM and ; 	IPOP3D_SETUP.COM define these logicals for you. See below.M    B    3.   Define some system level logical names to the directories:! 	  $ arch = f$getsyi("ARCH_NAME")C8 	  $ define/system/exec pine_dir		pine_root:[bin_'arch']8 	  $ define/system/exec pine_conf_dir	pine_root:[config]9 	  $ define/system/exec imapd_dir	imapd_root:[bin_'arch'] : 	  $ define/system/exec imapd_conf_dir	imapd_root:[config]; 	  $ define/system/exec ipop3d_dir	ipop3d_root:[bin_'arch'] = 	  $ define/system/exec ipop3d_conf_dir  ipop3d_root:[config]     * 	And some logical names for various files:  3 	  $ define/system/exec pine_exe		pine_dir:pine.exem5 	  $ define/system/exec imapd_exe	imapd_dir:imapd.exel8 	  $ define/system/exec ipop3d_exe	ipop3d_dir:ipop3d.exe  A 	  $ define/system/exec imapd_alertfile	imapd_conf_dir:alerts.txtl  E 	  $ define/system/exec cclient_mailprototype imapd_conf_dir:mail.mai   6 	And various (mainly optional) configuration logicals:  ? 	  $ define/system/exec pine_mail_protocol mx  [see note below]i  3 	  $ define/system/exec imapd_log	imapd_root:[logs]s9 	  $ define/system/exec imapd_logfile	imapd_log:imapd.loge( 	  $ define/system/exec imapd_loglevel	24           $ define/system/exec imapd_timeout    1800& 	  $ define/system/exec imapd_logtry	3  , 	  $ define/system/exec cclient_node_xxx	yyy4 	  $ define/system/exec cclient_autofileinbox "MAIL"B 	  $ define/system/exec cclient_mailfile_purge_reclaim "any value"    = 	See section 7 and the files PINE_SETUP.COM, IMAPD_SETUP.COM,rB 	IPOP3D_SETUP.COM and CCLIENT_SETUP.COM for further details of theH 	logical names and their function. You should tailor these procedures toD 	local requirements and ensure that they are executed at each systemA 	startup by adding them to SYSTARTUP_V5.COM or SYSTARTUP_VMS.COM.     N     4.	Set up the configuration files for PINE and the IMAPD server. There areD 	several configuration files that should be set, all should be world
 	readable:# 	   * PINE_CONF_DIR:PINE.CONF-FIXED @ 		The fixed configuration file for PINE. Configuration values in@ 		this file may not be overridden by the user and should be used? 		to define things that are constant, such as system name, smtp. 		servers etc.   	   * PINE_CONF_DIR:PINE.CONF : 		The system default configuration for PINE. Configuration@ 		settings in this file are default values that may be overriden> 		by settings in a user's personal .PINERC configuration file.   	   * IMAPD_CONF_DIR:IMAPD.CONFA- 		The configuration file for the IMAPD server   H 	The general PINE documentation describes the content of these files but9 	please take note of some specific points detailed below.    	 G   5.	Copy the .EXE files, once built, into the directory structure. Thec6 	procedure INSTALL.COM is supplied to do this for you.    B   6.	Finally, arrange for the users to be given access to the PINE= 	executable by some means, perhaps by defining a symbol thus:    		$ PINE == "$PINE_EXE"       ) 1.5.2 Installing upgrades or new releasesr  C If the current version being installed is an upgrade to an existingt4 installation then very little work needs to be done.  N If the recommended logical names have been used and the directory structure isG also as recommended, the simplest way to install the code is to run the L INSTALL.COM procedure from the top level directory. This checks the logicals= exist and copies the relevant .EXE images to the right place.   L If a different structure has been used, then all the .EXE files built by theL VMSBUILD procedure must be copied to the right place by hand. Make sure that5 they are given the right protections where necessary.e  M It is not necessary to change any configuration files or reconfigure TCP etc. A unless specifically stated in the release notes for this version.       - 2. MAIL SERVERS AND THE NETWORK CONFIGURATIONe  O PINE, in conjunction with remote IMAP and POP3 servers, can access mailboxes ontO any remote system.  A POP3 server and an IMAP server are provided with the PINEs distribution  M The servers are designed to be started by a master server process rather thandO as a permanently running process that 'listens' for connections. Thus, although I they are directly supported to run over any stack, the stack must have anpO ability to act as a master server, accept connections, start the server processn6 and then pass the connection on to the server process.  P This section contains details of how to set up your network software to run the L network servers. Unless otherwise stated, all examples show the IMAPD serverL but apply equally to all servers. Specific details for each server are given later.       2.1 General Considerations  F Before setting up a network server, you should consider the following:  M    * Under what username should the server run? SYSTEM is the default in mostbH      cases but may be inappropriate in some high security installations,>      although there are no known security holes in the server.  J    * What privileges should the username have? At least TMPMBX, NETMBX andL      SYSPRV are needed to access the network and the mail files. Some stacks9      may require additional privilege for network access.i  N    * What quotas are needed by the username?  The most important is PGFLQUO asI      this determines the maximum size of mailbox that can be handled. TheuN      server will crash if it runs out of virtual memory when pulling the wholeK      mailbox into memory, so a user with a large mailbox may require that as      large PGFLQUO is set.  J    * What sysgen parameters should be changed?  The CMU stack requires theN      MAXBUF parameter to be set to at least the size of the constant BUFLEN inK      the TCP_VMS.H module (currently 8192). If PGFLQUO's are set high, then.B      the VIRTUALPAGECNT parameter may need to be adjusted upwards.       2.2 TCP Stack-Specific Setup  L A number of procedures are provided to perform much of the initial stack and system set up for you. See:o  >     USER_SETUP.COM	[Optional]	Create a user under which to run+ 					servers. If you want to run as SYSTEM,i! 					you do not need to run this.c  F     SERVICE_SETUP.COM	[mandatory]	Create a configuration for a network% 					service (EG IMAP or POP server).i  O The work can be done manually if required and the following descriptions definee what needs to be done.     2.2.1 NETLIB  M NETLIB is a freeware stack independent network interface that allows a single I image to be run over any of the popular stacks available for VMS. This is L useful in clusters where different nodes run different TCP/IP stacks as only one image is required.  K    *  Make sure that NETLIB 2.0 or greater is installed before building the N       product. NETLIB 1.x is not suitable. NETLIB is freeware and is availableM       from ftp://ftp.madgoat.com/madgoat/netlibNNN.zip [NNN=highest availablet       version number]   I    *  NETLIB requires a supported TCP/IP stack; please refer to the stacko'       specific setup information below.r       2.2.2 MULTINET  F MULTINET is a commercial TCP/IP stack available from Process Software.       * Information required:t 	- Service namee 	- Port number 	- Service type (TCP/UDP)e&         - Image Name (or logical name)) 	- Username under which to run the serverl0 	- Page file quota to be allocated to the server  H    *  NOTE: If you are building with direct MULTINET support (IE not viaN       NETLIB) and using DEC C to compile everything, then it is important thatM       you obtain and install the MULTINET patch to the header files, as therepN       are some incompatibilities with existing DEC C 5.x header files. Without-       this patch, the software may not build! +       Contact Process Software for details.y  L    *  The master server should be configured to start up the server image onM       the specified port. The following sequence of commands illustrates this '       for the IMAPD server on port 143:c$          $ MULTINET CONFIGURE/SERVER!          SERVER-CONFIG> add imapdl          Protocol [TCP]: tcp          TCP Port Number: 143v"          Program to run: imapd_exe          SERVER-CONFIG> save          SERVER-CONFIG> restartn  J    *  By default, this will start up the server under the SYSTEM username,J       which has all privileges. While this should not cause a problem (theL       server is careful not to allow access to another user's mailbox), someK       sites may want to start up the server under a different username thatcN       has a restricted set of privileges. After ensuring that the user account=       exists, the following sequence of commands may be used: $          $ MULTINET CONFIGURE/SERVER$          SERVER-CONFIG> select imapd(          SERVER-CONFIG> set username xyz          SERVER-CONFIG> save          SERVER-CONFIG> restart   $       "xyz" is the desired username.  H       The selected username must have at least SYSPRV, NETMBX and TMPMBXJ       privilege in order to access the SYSUAF file and an arbitrary user's       mailbox.	          dM     *  You may need to increase the virtual memory allocation of the detachediI        process if users have particularly large messages or mailboxes, ineM        order to prevent malloc calls from failing and causing a server crash.t         You can use the commands:%           $ MULTINET CONFIGURE/SERVER %           SERVER-CONFIG> select imapda0           SERVER-CONFIG> set pql-pgflquota xxxxx           SERVER-CONFIG> save,            SERVER-CONFIG> restart     J        The exact value of 'xxxxx' will be dependent on the users and their        messages.  C     * Much of the setup may be performed automatically by using the C       SERVICE_SETUP.COM procedure found in the top level directory:s-           $ @service_setup MULTINET IMAPD 143a    	 2.2.3 UCXy  N UCX, or Digital TCP/IP services for OpenVMS, is a commercial TCP/IP stack from Digital Equipment Corporation.       * Information required:n 	- Service name  	- Port number&         - Image Name (or logical name)3 	- Name of procedure to be started by master serverU) 	- Username under which to run the serverh% 	- Process name to be given to server * 	- Maximum number of simultaneous sessions) 	- Name of startup log file to be createdi  K     *  The master server must be configured to start up a command procedureaK        that runs the server image, when an incoming call is received on theEM        specified port. The following sequence of commands will configure thisc        for the IMAPD server:M            $ UCX set service IMAPD /process=IMAPD /port=143 /user=UCX_IMAPD - 7                /file=IMAPD_ROOT:[000000]UCX_IMAPD.COM -                 /limit=20 -:                /log=(FILE=IMAPD_LOG:IMAPD_STARTUP.LOG,ALL)  0            $ UCX set config enable service IMAPD  %            $ UCX enable service IMAPDv    9     *  The file UCX_IMAPD.COM should contain a line like:i            $ RUN IMAPD_EXE  J     *  The example above runs the procedure as the user "UCX_IMAPD", which9        must exist with at least the following attributes:e 	       /network+                /priv=(netmbx,tmpmbx,sysprv)s.                /defpriv=(netmbx,tmpmbx,sysprv)  M     *  The quotas on the "UCX_IMAPD" account, particularly PGFLQUO, should be-N        adjusted as appropriate to handle the largest mailbox likely to be kept        in memory by the server.-                /pgflquo=xxxx  N     *  For security purposes, if the account is dedicated to server use, it isB        probably wise to also have these attributes on the account:0                /flag=(disctly,defcli,restricted)4                /nobatch /nolocal /nodialup /noremote
             J     *  The mail delivery agent must be configured to place the RFC822 mailJ        headers at the top of the message, rather than at the bottom of theJ        message. The servers will not recognize them otherwise. You can use        the command:b>              $ UCX SET CONFIGURATION SMTP /OPTIONS=TOP_HEADERS  $        Then restart the SMTP server.    C     * Much of the setup may be performed automatically by using the	C       SERVICE_SETUP.COM procedure found in the top level directory:-(           $ @service_setup UCX IMAPD 143    	 2.2.4 CMUT  K CMU is a public domain TCP/IP stack available free of charge. It is for VAX-L only and is available through DECUS or from various archives on the network.       * Information required:L 	- service name, 	- port number&         - Image name (or logical name)(         - Privileges allocated to server  O     *  The configuration file INET$CONFIG should be updated to add a definitionhC        for the server. Here's a typical entry for the IMAPD server:   M            WKS:143:IMAPD:IMAPD_EXE:NETWRK:NETMBX,TMPMBX,PHY_IO,SYSPRV:::::4:5   O        IMAPD_EXE is the logical name that points to the IMAPD executable image.tL        Note that CMU applications require PHY_IO to access privileged ports.  K     *  CMU is sensitive to the value of the SYSGEN parameter MAXBUF as this L        determines the maximum size of a message that can be sent in a singleN        network write operation. It MUST be set to a value at least as large asL        that of the constant BUFLEN in the TCP_VMS.H module (currently 8192).9        The recommended minimum for CMU generally is 8300.   J        MAXBUF is a dynamic parameter so it can be changed on the fly using        this sequence:f          $ MC SYSMAN        SYSMAN> PARAM USE ACTIVEo$        SYSMAN> PARAM SET MAXBUF 8300!        SYSMAN> PARAM WRITE ACTIVEl  7        For permanent changes, use the AUTOGEN facility.     M     *  Following the above change, the CMU IPACP process must be shutdown andtJ        restarted (which will interrupt network activity and close existing9        network connections) using the following commands:y           $ IPNCP NETEXITs           $ IPNCP STARTUP/IPACPl  C     * Much of the setup may be performed automatically by using thedC       SERVICE_SETUP.COM procedure found in the top level directory:w(           $ @service_setup CMU IMAPD 143      
 2.2.5 TCPWARE   G TCPWARE is a commercial TCP/IP network interface available from Processa	 Software.V       * Information required:  	- service named 	- port number 	- service type (TCP/UDP)a&         - Image Name (or logical name)$ 	- UIC under which to run the server+ 	- Pagefile quota to allocate to the serveri  L     * The services configuration file TCPWARE:SERVICES. should be updated toO       add a definition for the service. Here is a typical record describing thes       IMAPD service:           IMAPD   143/TCPt  L     * The following commands may be used to add a definition for the server:           $ NETCUnJ           NETCU> add service 143 tcp IMAPD_EXE /uic=[1,3] /page_file=60000  6       Adjust the values of the parameters as required.    C     * Much of the setup may be performed automatically by using theiC       SERVICE_SETUP.COM procedure found in the top level directory:s*           @SERVICE_SETUP TCPWARE IMAPD 143     2.2.6 Other stacks  *     *  No information currently available.     2.3 Third party mail systems  L There are a number of third party mail systems which may be in use to handleN the delivery of SMTP mail, rather than any SMTP delivery agent that is part ofF the TCP/IP stack software. It is important that this delivery agent isL configured to place the RFC822 headers at the start of the message. Some mayL place them at the end; this will prevent the servers from correctly locatingB them and they will instead be treated as part of the message body.  O If it is not possible to configure the mail delivery agent to place the headers0@ in their normal position (at the top) then see also section 4.11     2.3.1 MX  H MX is a popular freeware mail system, available from madgoat software at4 ftp://ftp.madgoat.com/mx/mxNNN.zip  (NNN = version).  H To configure MX to place the RFC822 headers at the top, use this command	 sequence:       $ mcr mx_exe:mcpd#      MCP> set local/headers=top:allm      MCP> save      MCP> reset/clusterr       3. AVAILABLE SERVERS  3 Both a POP3 server and an IMAP server are provided.r  	 3.1 IMAPDk  K The IMAPD server provides the user with the ability to access their mailboxhI over the network. Any client that uses the IMAP2bis protocol standard maye5 access any of their mail folders through this server.O  O IMAPD should be set up to listen on port 143 and start the IMAPD_EXE image whenl a call is received.i    
 3.2 IPOP3D  O The IPOP3D server provides the user with the ability to access their INBOX overrL the network. Any client that uses the POP3 protocol standard may access mail through this server.  L IPOP3D should be set up to listen on port 110 and start the IPOP3D_EXE image when a call is received.  M -----------------------------------------------------------------------------i   4. CONFIGURATION NOTES  I There are some problems with the linker being unable to correctly resolveeO global variables from an object library, when the software is built with either$N VAX C or GNU C on the VAX.  DEC C appears to be fine on both VAX and ALPHA. AsJ a result, we have to link modules explicitly rather than take them from an object library.m     4.1 Sending mail out from PINE  # PINE can send mail in several ways:c  E   * By using SMTP protocols to send mail to a nearby intelligent mail      router./  O   * By placing the job in a local 'sendmail' queue and invoking a mail deliverypN     agent to process them. Two agents are supported here - MULTINET's own SMTP/     agent and the freeware package VMS-SENDMAILt  L   * By invoking VMS callable mail and using a nominated mail transport image     that handles SMTP mail.i  O You must select one of the methods (see below). It is not possible to send mail  if none are selected.t       4.1.1 Using a local mail routerM  O PINE will send mail to a local mail router, which should know how to route mailmM to the end address, only if an intelligent mail router is configured. This istL done by including a line similar to this in the PINE.CONF or PINE.CONF-FIXED! file (the latter is recommended):C     smtp-server=xxxx  N All outgoing mail is sent to the named host for onwards routing. Note that theG named host is contacted directly. No attempt is made to use MX records.   M NOTE: You can specify a comma-separated list of smtp-servers and they will beaL tried in the order listed. It is recommended that the current system name is= listed last, with general mail routing gateways listed first.s      ' 4.1.2 Using a local mail delivery agentE  I If no smtp-server definition is provided in any of the PINE configurationsM files, then PINE can be configured, using logical names, to try using a local'M mail delivery agent, either MULTINET's own SMTP agent or the freeware packagehL VMS-SENDMAIL.  If neither are available, then this method is not functional.O The method used here is similar to that used on unix when PINE is configured tot invoke the sendmail daemon..  L To enable this functionality, define the logical name PINE_SENDMAIL_QUEUE toO the name of the local batch queue used by the SMTP delivery agent. For example:s     * To use VMS-SENDMAIL:; 	$ define /system /exec PINE_SENDMAIL_QUEUE "GV2$SMTP_AXP1"o> 		Note that VMS-SENDMAIL queues always start with "GV2$SMTP_".       * To use MULTINET SMTP; 	$ define /system /exec PINE_SENDMAIL_QUEUE "MULTINET_SMTP"n: 		Note that MULTINET_SMTP is the name of the MULTINET SMTP? 		processing queue and is usually a logical pointing to another  		queue.  M If this logical name is defined, then it is also necessary to define the mailT> transport shareable image prefix with one of the logical namesM PINE_MAIL_PROTOCOL or MAIL$INTERNET_TRANSPORT (the latter is often defined inaO OpenVMS 6.2 or above).  The value of the logical name should be the prefix usedDM when sending mail from VMS MAIL. For example, if you would normally send mailgH using an address of the form SMTP%"user@site" then the prefix is "SMTP".    L Note: if this method is selected, it will likely be necessary to install theJ PINE executable image with CMKRNL and SYSPRV. This is because the sendmailJ queues and the spool directories are normally restricted to the backgroundJ system processes. Take some care here as PINE has a shell escape mechanism2 which will leave the user with nhanced privileges.    L If direct MULTINET SMTP support is being used then an alternative spool fileF directory may be optionally specified via the system-wide logical nameJ PINE_SPOOL. The temporary files created will be placed here instead of the MULTINET_SPOOL area.    : Note: the freeware package VMS-SENDMAIL is available from:J   * ftp://cnaf43.infn.it/mailing/VMSSENDMAILNNN.BCK [NNN=highest available     version number].    J Which can interface either to NETLIB or to MULTINET.  Thanks go to ClaudioO Allochio for this package and for the modifications to PINE to support its use.c       4.1.3 Using VMS callable maila  O If none of PINE's configuration files contain an 'smtp-server=' definition, andhO the logical name PINE_SENDMAIL_QUEUE has not been defined (see above) then PINEYM will attempt to use VMS callable mail to send the message. To tell PINE whichsL of the shareable mail transports to use, a logical name must be defined with the name of the transport.    PINE examines the logical names:       * PINE_MAIL_PROTOCOL  G and * MAIL$INTERNET_PROTOCOL	[usually defined in OpenVMS 6.2 and later]      For example:  M If you normally send network mail within VMS MAIL using addresses of the formnE SMTP%"....", you should define the logical name to the string "SMTP":m  4     $ define /system /exec PINE_MAIL_PROTOCOL "SMTP"  N NOTE: With this method, the message that PINE sends out has TWO sets of RFC822L mail headers separated by a blank line. One is generated by PINE itself; theN other by the foreign mail protocol. Currently there is no way around this. TheA only practical effect is to mess up any MIME encoded attachments.       ! 4.2 Mailbox format specificationsH  L Both PINE and the IMAPD server recognize a standardized format for a mailbox" specification. Note the following:  H   *  All mailbox names are case-sensitive. "TEST", "test" and "TeSt" allN      refer to different folders. The exception is the special name INBOX which       is always case insensitive.  O   *  The name of the mail file which holds a folder is ALWAYS "MAIL.MAI". It is	@      not possible to access mail folders held in any other file.  N   *  Specifying just a folder name implictly assumes the user's normal default4      MAIL.MAI file in the default mail subdirectory.  F   *  An explicit directory path for the enclosing MAIL.MAI file can be#      specified by using the syntax:n,          ~/folder		MAIL.MAI is in SYS$LOGIN:F          ~/path/folder		MAIL.MAI is in the path relative to SYS$LOGIN:  J   *  The special name "INBOX", defined in the IMAP standard, is recognizedA      and maps to the folder NEWMAIL in the default MAIL.MAI file.i    7 Here are some examples of valid mailbox specifications:s  3   *  INBOX		file: default MAIL.MAI, folder: NEWMAIL   /   *  TEST		file: default MAIL.MAI, folder: TEST[  3   *  ~/TEST		file: SYS$LOGIN:MAIL.MAI, folder: TEST   7   * ~/mail/nickel	file: [.MAIL]MAIL.MAI, folder: nickelh    L When the IMAP protocol specification was originally drawn up, it was clearlyO influenced by the syntax of unix mail folders. As such, the interpretation of atM similar mailbox specification between unix and VMS is somewhat different. The F VMS version tries to mimic the unix format as much as possible but the/ underlying meanings are different. For example:h      * ~/mail/sentmail  O      On unix: specifies the text file called 'sentmail' in the directory ~/mailn  O      On VMS: specifies the folder "sentmail" in the file MAIL.MAI in the user'sa2      [.MAIL] subdirectory (relative to SYS$LOGIN).     4.3 Configuration Filesi  K PINE gets its configuration information from a combination of configurationa files:  "    * PINE_CONF_DIR:PINE.CONF-FIXEDA 	Defines a set of fixed configuration information that may not betG 	overridden by the user. This is most useful for defining items such ase5 	the local host name and the smtp-servers to be used.P      * PINE_CONF_DIR:PINE.CONFE 	Defines a default configuration for the remainder of the PINE setup. D 	The user may override anything defined here. Normally set to give a9 	basic workable system tailored to the majority of users.       * SYS$LOGIN:.PINERCH 	Each user's personal configuration file. Entries here override anything= 	specified in the PINE.CONF file but not entries specified in ? 	PINE.CONF-FIXED. This file may be updated from within the PINEo 	setup/configure menu.  K Any setting not specified by any configuration file has an internal defaultcG that should produce a workable, though not necessarily optimum, system.a  K All configuration files are simple text files and may be edited with a text  editor if required./  : Both PINE.CONF and PINE.CONF-FIXED must be world readable.      $ 4.3.1 Minimum configuration settings  N At the very least, the following settings and defaults should be configured in$ the appropriate configuration files:  *    * Name of local host (user-domain=xxxx)  +    * Name of SMTP server (smtp-server=xxxx)a  0    * Location of default INBOX (inbox-path=xxxx)  I    * A folder collection for all the folders in the default MAIL.MAI fileiM      (folder-collection=[]). If this is not specified, PINE will only display M      the INBOX folder. All non-INBOX folders, and that includes all the other K      folders in the default MAI.MAI file, will only be visible if specified N      here ( [] is a wildcard pattern that specifies all folders in the default      mailbox).      % 4.3.2 Configuration file restrictionsr  N PINE was originally written for a non-VMS environment and some of its conceptsF are alien to the way in which VMS MAIL works. As such, there are a few? restrictions on what can be done/configured. Principally these:   N    * The WASTEBASKET folder is not useddirectly.  Messages marked for deletionL      are deleted when the folder is closed and immediately expunged from the      WASTEBASKET.i  J    * The files .PINE-DEBUGx, .PINERC and .ADDRBOOK are fixed to the user'sM      login directory and cannot be defined to be elsewhere (the definition is J      ignored). The subscription registration database .MAILBOXLIST is also      fixed to SYS$LOGIN.      " 4.3.3 Example PINE.CONF-FIXED file  L This file contains configuration settings that should not be modified by the user.s  8       # ------------- EXAMPLE PINE.CONF-FIXED ----------       # local host namew        user-domain=vms.huji.ac.il       # SMTP serveri        smtp-server=vms.huji.ac.il8       # ------------ END OF EXAMPLE PINE.CONF-FIXED ----     4.3.4 Example PINE.CONF file.A  K This file contains default configuration settings. Users may override these:C settings with entries in their personal .PINERC configuration file./    9       # ------------- EXAMPLE PINE.CONF -----------------s$       # viewer for image attachments       image-viewer=xvv       # Default INBOX location       inbox-path=INBOXA       # Specify a folder collection for the default local mailboxe       folder-collections=[]tA       # Specify where we want copies of outgoing mail to be savedl       default-fcc=SAVED-MSGS9       # ---------- END OF EXAMPLE PINE.CONF -------------      4.4 Server configuration files  K The IMAPD and IPOP3D servers read an initial configuration from an optionalu configuration file called:       IMAPD_CONF_DIR:IMAPD.CONFm  ? Currently, there are no specific entries required in this file.     ! 4.5 Effect of Inbox-Path variabler  L The name INBOX is interpreted in two different places. Officially, it is theJ name of the mailbox which receives new mail. Under VMS, new mail is alwaysI delivered to the NEWMAIL folder of the default MAIL.MAI file. The specialoL mailbox name INBOX (which is case-insensitive) is recognized by the C-CLIENTL mailbox parsing routines and translated into the appropriate NEWMAIL folder.  M The INBOX-PATH variable defines the name of a folder to be permanently openedcL by PINE. It defaults to the word INBOX if not specified.  By setting it to aL non-existent folder, there will be no permanently open mailbox during a PINEJ session. What it does NOT do is change the way that the vms mailbox parser interprets the name INBOX.    " 4.6 VMS MAIL and Address Rewriting  G A message can be delivered into a VMS MAIL mailbox by several differentv$ mechanisms, including the following:  "    * DECnet	(the MAIL-11 protocol)@    * Internet mail transport, such as UCX mail, or the MX mailer    * DEC MAILBUS/X.400  L Each creates its own form of address header in the VMS MAIL fields  'From:',H 'To:' and 'Cc:'.  In the general case, these are not Internet compatibleN addresses conforming to the RFC822 specification which is used by PINE and theN IMAPD/IPOP3D servers.  While this causes no particular problem if a message is3 merely being read, it renders any reply impossible.a    " 4.6.1 Creating a Replyable Address  J To provide the means to reply to a message, the VMS MAIL headers are takenO apart and rewritten into a form that is RFC822 compatible, where it is possible J to do so.  Where it is not possible, then the address is encoded using the5 local format encoding mechanism specified by RFC1405.s  N Results of this rewriting are not predictable for syntactically invalid e-mailO addresses that may have been entered by the user, and may result in an unusablei address.    & 4.6.1.1  RFC1405 Local Format Encoding  L In summary, the RFC1405 local format encoding method is a means to encode anK arbitrary address string into a valid RFC822 format internet-style address.  This is achieved by:9    * Checking the address string for 'special' charactersi?    * Backslash quoting a subset of any special characters foundeK    * Enclosing the complete address inside quotes if any special charactersv      are found.s$    * Appending an internet host name     For example:  8    * SYNW06::ALLOCCHIO	-->	"SYNW06::ALLOCCHIO"@host.name      - 4.6.2 Site Configuration of Address Rewritingd  N Some control is provided over the address rewriting through the use of several logical name definitions.    In brief, these are:        CCLIENT_ADDRESS_PREPROCESS_nG 	A series of pattern/replacement specifications used to preprocess eacht7 	address before applying the in-built formatting rules.        CCLIENT_ADDRESS_REWRITE_nTH 	A series of pattern/replacement specifications used after preprocessingG 	to generate an absolute address (I.E. if there's a match, the in-builte  	formatting rules are not used).       CCLIENT_INTERNET_AUTOoE 	Used to indicate that an address should be treated as internet-stylerM         one when the address format is    tsp%"... @ ..."  and the name 'tsp'wE 	is not a known one. If the address is not in this format, or if this I         logical name is not defined, then such an address will be encodedi1         using the RFC1405 local format mechanism.r  '     CCLIENT_NODE[_namespace][_nodename] @ 	Maps a DECnet namespace/node combination into an internet-style
 	nodename.       CCLIENT_GW_MAIL11dE 	Defines the host name to use as the default MAIL11 gateway for local  	format encoded addresses.       CCLIENT_GW_X400.? 	Defines the host name to use as the gateway for X.400 messages        CCLIENT_NORFC1405mE 	Bypasses the RFC1405 local format encoding mechanism used by default - 	and writes the address into an older format.k  L These logicals are all optional. In-built defaults are applied in all cases.      + 4.6.3  Basic Address Reformatting Algorithmy  7 The algorithm applied to each VMS MAIL address is this:   J   * First, apply any user specified preprocessing pattern match/replacmentJ     rules to the address. Preprocessing rules are specified by a series of7     logical names called  CCLIENT_ADDRESS_PREPROCESS_n.h  H   * Next, if any user specified rewrite rules match the address, use theM     replacement as the final rewritten address. No further processing will beNI     performed on the address.  Rewrite rules are specified by a series of 2     logical names called CCLIENT_ADDRESS_REWRITE_n  K   * Next, the address is compared with known VMS MAIL formats and rewritten %     appropriately. Some examples are:   =       * USERNAME		-->	USERNAME@mail11-gw             [Note 1]P  F       * NODENAME::USERNAME	-->	"NODENAME::USERNAME"@mail11-gw [Note 2]  		  or ...	-->	USERNAME@NODENAME  *       * SMTP%"user@system"	-->	user@system  O       * MRGATE::"C=it::A=garr::P=trieste::O=elettra:Fred J Smith" -->  [Note 3]oD 	     "/C=it/A=garr/P=trieste/O=elettra/G=Fred/V=J/S=Smith/"@x400-gw  M   * If the address does not match any known VMS MAIL form, then it is encodedt3     using the RFC1405 local format encoding method:h 	 "address"@mail11-gwd   NOTES:A   [1] The mail11-gw hostname is configurable. More details below.nI   [2] The choice of format is based on the CCLIENT_NORFC1405 logical name-?   [3] The x400-gw hostname is configurable. More details below.-    # 4.6.4  Standard VMS Address Formats   N There are a number of common address formats that can appear in the headers ofF a message. Many are handled automatically by the in-built reformattingH mechanisms, others may need special configuration by the systems or siteD manager (see the 'Guide to Configuring Address Reformatting' below).       4.6.4.1 Basic MAIL-11 Formatse  J MAIL-11 is the proprietary mail protocol used for mail and encompasses theN basic address formats used with DECnet, DECnet/OSI and DECnet-Plus. These are:  
    * USERNAMEj    * NODE::USERNAMEi    * NAMESPACE:.NODE::USERNAME       4.6.4.2 X.400 Formatst  J X.400 messages are generated by Message Router and have this general form:4     *  [node::]"[node::]key=label:: ... ::key=label" 	  where;             [node::]	Are optional DECnet x400 routing nodessC             key=label	Are X.400 address specifications [E.G.  C=GB] - 	    ::		Are address specification separatorsd   Such addresses are mapped to:l*     *  "/key=label/.../key=label/"@x400-gw       4.6.4.3 Foreign Mail Interfacesu  K The mail protocol can be extended via the foreign mail interface. Addresses M recognized by a foreign mail transport are specific to that transport and, inFH general, do not map directly to an internet-style address. However, someE well-known transports exist which do handle internet-style addresses.e  9 In the general case, a foreign mail interface address is:      *  tsp%addressA 	    tsp		Is the name of the foreign mail interface, or transporti, 	    address	Is a transport-specific address   For example:E     *  SMTP%"user@system"	Handles internet mail via the SMTP protocol   N     *  CBS%relay::system::user	Handles the UK Coloured Book transport over X25  >     *  DSN%SOFTWARE		Handles requests to the Digital Automated& 				Engineering Support service (AES).    O The in-built rules know about the following fixed foreign mail interface names:n:     *  Translation of MAIL$INTERNET_TRANSPORT	} Format is:9     *  MX, SMTP, IN, INET, WINS, JANET		}   tsp%"...@..."e  C     *  CBS   [ UK Coloured book format ]	} Format is CBS%site::usero! 						}  &  CBS%relay::site::userl  M Note that the DSN% transport is not handled automatically because there is no 0 standard way to convert this to an SMTP address.  D Other transports may be handled via user-configurable rewrite rules.     NOTE:IH   In OpenVMS 6.2 and later, internet-style addresses may be used withoutI   specifying a transport prefix directly.  The transport specified by theSM   logical name MAIL$INTERNET_TRANSPORT will be assumed. This is recognized byL   the in-built formatting.      / 4.6.5 Guide to Configuring Address Reformattingu  F Configuring the address reformatting mechanism is a matter of definingM appropriate logical names relevant to the local site. The following should beE considered:L  M   * Are there any non-standard address formats in use?  If so, consider usingeM     the address pre-processing and address re-writing rules, specified by the L     logical names CCLIENT_ADDRESS_PREPROCESS_n and CCLIENT_ADDRESS_REWRITE_n  I   * Are there any transport extensions in use which accept internet-styleeI     addresses in the form   tsp%"... @ ..."  but which are not one of thelN     commonly used ones? If so, consider using either the CCLIENT_INTERNET_AUTON     logical name or an address rewriting rule to map the transport name to one     of the standard ones.   7   * Do you have DECnet nodes? If so, consider using theaM     CCLIENT_NODE[_namespace][_nodename] logical names to map the DECnet namese#     into internet-style host names.o  O   * Do you have systems which receive MAIL-11 mail but which do not have directeN     internet connections? You may wish to consider defining the name of a hostB     to act as a MAIL-11 to internet gateway using the logical name     CCLIENT_GW_MAIL11.  M   * Do you have systems which receive X.400 mail but which do not have direct N     Internet connections? You may wish to consider defining the name of a host@     to act as an X400 to Internet gateway using the logical name     CCLIENT_GW_X400.  L   * Do you wish to retain compatibility with earlier versions of the addressL     rewriting mechanism, where 'NODE::USER' was mapped to 'USER@NODE' ratherL     than to '"NODE::USER"@mail11-gw'? If so, consider using the logical name     CCLIENT_NORFC1405.  E Once the appropriate set of logical names is decided, add them to thehN CCLIENT_SETUP.COM procedure so that they are defined each time the software is started.    ' 4.6.5.1 User-Configurable Address Rulese  H Address rewrite rules are used in two instances. First to pre-process anO address for subsequent reformatting by the in-built rules. Second, to specify aiO set of replacement rules that override the in-built ones. The two are specifiedL' in a similar way through logical names.d  I A single rewrite rule consists of a pattern, against which the address istM matched, and a replacement string, which is used to generate a new address ifm the pattern is matched.h  O The pattern can contain wildcard characters '*' and '?' which match 'any lengthdK string' and 'any single character' respectively, otherwise a character must M match itself (though the case of letters is ignored). In the case of multiple K possible matches, Each '*' wildcard, starting from the left, will match then% longest remaining part of the string.o   For example:  0      Pattern     *::*		Would match  SYNW06::USER% 				or           SYNW06::MRGATE::USERt  6      Pattern     *%"*@*"	Would match  MX%"USER@SYSTEM"( 				or           smtp%"user%host@domain"  N The backslash character '\' may be used to prefix any character in the patternL string; this forces it to be used literally (IE it must match itself) ratherL than have any special meaning. Any literal backslash that is required should  itself be prefixed by backslash.  N When a pattern is matched, those portions of it which have been matched by theH wildcard characters '*' and '?' are remembered and allocated an internalO reference number from 0 to 9 (there can be no more than 10 strings remembered); K 0 being the leftmost match, increasing sequentially from left to right. ThepL remembered strings can be inserted later into the replacement string. In the above examples:u  0      Pattern     *::*		Would match  SYNW06::USER  '      And	Match string 0 would be SYNW06l 		Match string 1 would be USER      8      Pattern     *::*		Would match  SYNW06::MRGATE::USER  /      And	Match string 0 would be SYNW06::MRGATE  		Match string 1 would be USER      6      Pattern     *%"*@*"	Would match  MX%"USER@SYSTEM"  #      And	Match string 0 would be MXe 		Match string 1 would be USER  		Match string 2 would be SYSTEM    M A replacement string is an arbitrary string which contains special markers totM indicate where the matched portions of the input should be inserted.  MarkersyH take the form  ?n  where 'n' is a single digit from 0 to 9. For example:  -      ?0		Means replace this by match string 0l-      ?5		Means replace this by match string 5e  J Markers which refer to non-existent match strings are replaced by the null string.e  L If the '?' marker character is followed by any character other than a digit,J then that character is inserted literally. So '??' results in a single '?' being inserted.      Finally, a complete example:  &    If the input string is	SYNW06::USER  $    and the pattern is           *::*  )    then the match strings are	?0 = SYNW06s
 				?1 = USERe  				?2 to ?9 are the null string    %    If the replacement string is ?1@?0   +    then the resulting output is USER@SYNW06       ) 4.6.5.2 Format of a Complete Rewrite Ruleg  M A single rewrite rule consists of a pattern to match and a replacement stringtH to generate when the match is made. Rewrite rules should be specified byC defining the appropriate logical name with a string in this format:e     <pattern>=<replacement>a  M      "pattern"      is the pattern against which the address will be matched.tC                     It may contain the wildcard characters * and ?.a  K      "replacement"  is the replacement string which defines how the addressFM                     is to be rewritten. It may contain the replacement stringt+                     markers of the form ?n.a     For example:  *    $ define name "<pattern>=<replacement>"    O There should be no spaces at the beginning (I.E. Before the opening '<') or endrO (I.E. after the closing '>') of the string, or within the  >=< construct. Othero spaces are used verbatim.s  J If the definition is not in the format "<pattern>=<replacemant> then it is ignored.    ' 4.6.5.3 Address Rewriting Logical Names.  N The rewrite rules are specified by defining one or more logical names with the  pattern and replacement strings.  # Two sets of logical names are used:       * CCLIENT_ADDRESS_PREPROCESS_nG 	To pre-process an address prior to applying the user specified rewritesN         rules or the in-built rules. The first match found causes the original; 	address to be replaced and used for subsequent processing.s     * CCLIENT_ADDRESS_REWRITE_noH 	To apply user-specified rewrite rules. The first match found is used asF 	the result of the whole rewrite process. Only if no matches are found% 	are the in-built rules then applied.i    O These definitions are set up using DCL commands to define the logical names, soEM it is important to be aware of the DCL quoting conventions if it is necessaryfO to incorporate a " character within the rewrite rule.  Each " should be doubleda& up and the whole surrounded by quotes.      t For example:  9    $ define CCLIENT_ADDRESS_PREPROCESS_1 "<*::*>=<?1@?0>"s/ 	Would map  SYNW06::USER    into    USER@SYNW06e    H    $ define CCLIENT_ADDRESS_PREPROCESS_1 "<MX%""*@*"">=<SMTP%""?0@?1"">"6 	Would map  MX%"user@system"  into  SMTP%"user@system"    O The logical names in each of the two classes are checked sequentially, startingOK with the suffix 'n' equal to 1.  Checking stops when no logical name havinglK suffix 'n' exists (thus, there should be no gaps in the sequence of logicalsN names), or when a match to the pattern succeeds. Rules are not re-applied whenO a match is found (that is, the replacement string is not then checked again fors pattern matches).r  K Because the rewrite rules are applied one at a time in a fixed order, it is N important that more specific patterns are defined ahead of those patterns that are less specific.   For example:  .      *::*	will match both SYNW06::MRGATE::USER 		and SYNW06::USER  1      *::*::*	will match only SYNW06::MRGATE::USER     O Thus, the pattern *::*::* is more specific than *::* (I.E. it will match a lessiO general string) and should be defined in a logical name having a lower value ofD+ the 'n' suffix so that it is matched first.t  ! So the correct ordering would be: B   $ define CCLIENT_ADDRESS_REWRITE_1 "<*::*::*>=<""?1::?2""@?0"">"5   $ define CCLIENT_ADDRESS_REWRITE_2 "<*::*>=<?1@?0>"   ( whereas the incorrect ordering would be:5   $ define CCLIENT_ADDRESS_REWRITE_1 "<*::*>=<?1@?0>"tB   $ define CCLIENT_ADDRESS_REWRITE_2 "<*::*::*>=<""?1::?2""@?0"">"  L [In this case, the first pattern would ALWAYS match anything that the secondD pattern would, so the second replacement string would never be used]    / 4.6.5.4 Configuring Unusual Internet Transportse  J The in-built rules are aware of the common transport names used to supportB internet addressing. Currently, these transports are recognized as internet-format trasnports:   L   * Translation of Logical Name MAIL$INTERNET_TRANSPORT (defined in VMS 6.x)   * MX   * SMTP   * IN   * WINS   * INET	   * JANETs  I Each of these recognizes an internet-style address expressed in the form:s   * tsp%"user@system"n   and which will be rewritten as:o   *  user@system  N Some sites may have other transports which handle internet-style addresses, orO may have site-specific logical names defined (MAIL$PROTOCOL_xxx for example) to L give alternate names to the standard transports.  Under these circumstances,N the in-built rules may fail to recognize the transport name and will revert to the local encoding format.    There are two solutions to this.  F First, a pre-processing rewrite rule can be configured for each of the? transports that handle internet-style addressing in the format:s      tsp%"user@system"  @ to map the local transport name into one of the recognized ones.   For example:  ?    $ define CCLIENT_ADDRESS_PREPROCESS_1 "<INTERNET%*>=<SMTP%*>s  B This will then be processed as if it were originally in the format SMTP%"user@system".i  K Second, the logical name CCLIENT_INTERNET_AUTO may be defined (any value). tK This causes any unrecognized transport where the address format looks like  H tsp%"...@..." to be treated as if it were one of the well known internetO transports, and reformatted accordingly. This saves having to define a separate H preprocessing rule for each of the separate transports in use.  However,N caution should be exercised as it will treat ANY unrecognized transport havingM this format in this way, which may not always be the intended effect.  If theiL unrecognized transport has a format other than tsp%"...@..." then it will beG treated as any other unrecognized transport and encoded using the localL encoding format.  O This latter method is, in effect, a shorthand for a pre-processing rewrite ruleo
 of this form:   F   * define CCLIENT_ADDRESS_PREPROCESS_1 "<*%""*@*"">=<SMTP%""?1@?2"">"    ' 4.6.5.5 Mapping Non-Internet TransportsE  D A Foreign Mail Interface transport does not have to support internetJ addressing, or have anything to do with internet based mail.  Therefore noJ general rules can be used to define how they should be mapped. Should suchH transports be in use, then the recommended method of handling them is as follows:  N   * First, define how an address of the form  tsp%address  should be rewritten.     (the default is  "tsp%address"@local.host)  M   * Second, set up one or more pre-processing rules to map it into one of thetH     known internet formats, such as  SMTP%"user@system"). Maybe there isL     gateway system that knows how to route these addresses properly in which8     case a simple rewrite rule like this should suffice:  R       $ define CCLIENT_ADDRESS_PREPROCESS_1 "<tsp%address>=<""tsp%address""@relay>  0    Do take care with quotes in 'address' though.      0 4.6.5.6 Mapping DECnet Node Names and Namespaces  N A typical DECnet, DECnet/OSI or DECXnet-plus address has one of these formats:  /    *  USERNAME			[ where no DECnet is present ]X:    *  NODE::USERNAME		[ where DECnet phase IV is present ]N    *  NAMESPACE:.NODE::USERNAME	[ where DECnet/OSI or DECnet-plus is present ]    H With no additional user configuration, such addresses are mapped into anM internet-style of address using the local format encoding mechanism specifiedh by RFC1405:p      *  USERNAME@local.host.name&    *  "NODE::USERNAME"@local.host.name1    *  "NAMESPACE:.NODE::USERNAME"@local.host.nameu    L The 'local.host.name' part is taken from one of three sources; the first one1 found is used. Sources are checked in this order:   7    *  Translation of the logical name CCLIENT_GW_MAIL11,"    *  The local internet host name8    *  The local decnet node name (SYS$NODE logical name)    O This behaviour will be modified by the presence of a logical name of the form  aH CCLIENT_NODE[_namespace][_node]   where 'namespace' and 'node' are takenL verbatim from the original address (having first been uppercased). If such aO logical name exists, then the existing namespace and nodename are discarded and 6 its translation name is used as the 'local.host.name'.   For example:  I   Without any matching CCLIENT_NODE[_namespace][_node] logical name, then "   these translations will be made:%     * JOHN			-->	JOHN@local.host.nameo7     * SYMNW06::JOHN		-->	"SYNW06::JOHN"@local.host.nameiC     * OMNI:.IT.TRIESTE::JOHN	-->	"OMNI:.IT.TRIESTE"@local.host.namef  -   If the following logical names are defined:o"     * CCLIENT_NODE		-->	"test.com"9     * CCLIENT_NODE_SYNW06	-->	"synw06.elettra.trieste.it" ;     * CCLIENT_NODE_OMNI_IT.TRIESTE -->	"elettra.trieste.it"t    '   Then these translations will be made:m     * JOHN			-->	JOHN@test.com6     * SYNW06::JOHN		-->	JOHN@synw06.elettra.trieste.it8     * OMNI:.IT.TRIESTE::JOHN	-->	JOHN@elettra.trieste.it      , 4.6.5.7  Alternative DECnet nodename mapping  I For compatibility with an earlier method of mapping DECnet nodenames, thesN logical name  CCLIENT_NORFC1405 may be defined (any value).  This modifies theJ default behaviour when no   CCLIENT_NODE[_namespace][_node]   logical name exists.m  I   Without any matching CCLIENT_NODE[_namespace][_node] logical name, thens"   these translations will be made:     * JOHN				JOHN      * SYNW06::JOHN			JOHN@SYNW06-     * OMNI:.IT.TRIESTE::JOHN		JOHN@IT.TRIESTEA  K   With matching CCLIENT_NODE[_namespace][_node] logical mames defined, thend   the behaviour is as above:     * JOHN			-->	JOHN@test.com6     * SYNW06::JOHN		-->	JOHN@synw06.elettra.trieste.it8     * OMNI:.IT.TRIESTE::JOHN	-->	JOHN@elettra.trieste.it     4.6.5.8 Mapping X.400 Addresses   N X.400 address configuration is limited to the specification of a hostname usedM as the X.440 to SMTP gateway. The logical name CCLIENT_GW_X400 specifies this @ host. If not defined, then the local internet host name is used.     4.7 Automatic INBOX filing  H The INBOX is a special folder that receives all new mail delivered to an account.  N Under VMS MAIL, this is the NEWMAIL folder in the default mail file. When mailI is read from this folder, VMS MAIL automatically transfers it to the MAIL   folder in the default mail file.  L With IMAP, and with PINE, messages are NOT automatically transferred; a userD must request explicit filing of a message to another folder. This is incompatible with VMS MAIL.   N To provide compatibility with VMS MAIL, a logical name may be defined to force@ automatic filing of such messages if required. The logical name:     CCLIENT_AUTOFILEINBOXn  M may be defined to the name of a VMS MAIL folder (EG "MAIL") and messages will N be automatically filed to this folder when the inbox is closed, exactly as VMS MAIL would do.   For example:5   $ define /system /exec CCLIENT_AUTOFILEINBOX "MAIL"E    L It's worth noting that PINE has a separate auto-file mechanism for just readL messages and it is preferable to use these rather than the general mechanism provided by the logical name.u       4.8 Logging and debugging   K Several logicals control the amount of information written to log and debugd files.      IMAPD_LOGFILE? 		Defines a file to which the IMAPD daemon writes basic loggingy 		information.      IMAPD_LOGLEVELp> 		Controls the amount of detail written to the logfile; higher= 		values write more info. A zero value causes no logging info < 		to be written. Currently causes info generated by the main6 		IMAPD program and the TCP_VMSx modules to be logged.8 		(TCP_VMSx is only logged if compiled with the NETTRACE6 		define and, if it is, cannot be linked with the PINE 		main program).  ; 		Currently, these levels are recognized for IMAPD logging:e   		  0		No logging at all   		  1-10		Standard logging* 				1: basic logging of commands/responses 				2: additional info  5 		  11-20		Detailed logging of I/O (only with NETRACEA 				option)E 				11: trace calls to network       CCLIENT_LOGLEVEL> 		This logical controls the c-client library debugging output,; 		as shown by the levels listed below. This debug output is > 		displayed via the mm_dlog callback function and applies only8 		to c-client modules compiled with the LOGTRACE option.M                 Compilation with this option slows execution significantly in,%                 the affected modules._  @ 		At present, these logging and debugging levels are recognized:  3 		  <20		No debugging (but reserved for future use)m   		  21-99		Debugging onl0 				21: trace entry/exit, parameters/exit status$ 				23: trace status of system calls" 				25: additional debugging trace  > 		Currently, the only c-client module containing debug code isA 		the VMS_MAIL module, and then only if it has been compiled witht? 		the LOGTRACE option. [ I would have added tracing for the TCPhA 		modules here but as these may be used to write the debug outputIA 		I would end up in a recursive output loop; thus they log with a  		different method]. 		= 		For the IMAPD application, the debug info is written out ase4 		unsolicited (*) NO responses to the client and, if; 		IMAPD_LOGFILE is defined, is also written to the logfile.   ? 		For the PINE application, the debug info is added to the pinea( 		debug file if one is being maintained.     4.9 Mailbox Subscription Files  G The IMAP functions 'SUBSCRIBE MAILBOX', 'UNSUBSCRIBE MAILBOX' and 'FIND.? MAILBOXES' use and maintain a list of mailboxes in the VMS filesL SYS$LOGIN:.MAILBOXLIST. This is not a configurable filename.  It is a simple2 text file that can be manually edited if required.      4.10 Mail file prototype logical  N The c-client CREATE function allows the user to create an empty MAIL.MAI file.L The VMS callable mail routines provide no facility to do this so it has beenN implemented manually. It works by getting the FDL specification of an existingM MAIL.MAI file and then creating a new file using that FDL specification. ThisnM ensures that the format of the file is always correct for the current version, of VMS.e  L The software will first try to obtain the FDL of the user's default MAIL.MAIO file. If this fails, it will try to obtain the FDL of the file specified by thewM CCLIENT_MAILPROTOTYPE logical name. If neither file can be accessed, then thePM create operation will fail. Therefore, it is necessary for the system managerEN to set up a dummy MAIL.MAI file somewhere in the system and point this logical< at it. It is suggested that the following steps be followed:  M    * Set the CCLIENT startup file to define the CCLIENT_MAILPROTOTYPE logicale      name to point to:        IMAPD_CONF_DIR:MAIL.MAI      * Login as SYSTEM  9    * Copy SYSTEM's MAIL.MAI file to CCLIENT_MAILPROTOTYPEa  P    * Go into MAIL, select the CCLIENT_MAILPROTOTYPE file and delete all messages2      in it. Then purge and compress the mail file.  =    * Make sure that the prototype mail file is World readable   O Do NOT point CCLIENT_MAILPROTOTYPE st a live MAIL.MAI file. This is because theg= operation will fail should that file be open by someone else.b    I Creation of an empty folder within VMS MAIL is not supported. As such, itPM becomes necessary to 'pretend' to create a folder under certain circumstancesSI without actually doing it. If we don't, operations like APPEND will fail.m here's what we do:  A   *  If the mailfile does not exist, create it and return successt  J   *  If the mailfile exists, but the folder doesn't, do nothing and return
      success.d  J      In both of the above cases, note the mailfile/folder combination in aN      separate list so that subsequent validity/existence checks can 'find' it.I      This works because VMS MAIL will automatically create a non-existentl      folder when needed.  F   *  If both mailfile and folder already exist, return failure status.  N So far, this has not been found to cause any unexpected behaviour. If it does, please report it.a      4.11 Placement of RFC822 headers  M Mail delivery agents will usually place the message into the mailbox with thelN RFC822 headers at the beginning of the message, separated from the body of the message by a single blank line.e  O Some will, or can be configured to, place the headers at the end of the messageiL body, separated by a special separator line.  This is presumably intended toH make it easier for simple mail clients to access the body of the message- without first wading through all the headers.   L By default, the headers are expected to be found at the head of the message.L However, the logical name  CCLIENT_HEADERS_ATEND  may be defined to indicateK that the headers can instead be found at the end.  The value of the logical + name should be the complete separator line.l  N Should this logical name be defined but the separator line not be found withinA the message, then the original VMS MAIL headers will be returned.    NOTE: L   Should the separator line appear as part of the message body legitimately,L   then the headers will likely get confused. It is STRONGLY recommended thatG   mail delivery agents be configured to place headers at the beginning.      4.12 Mailbox Purging  O A VMS mailbox stores messages in a complex way. When messages are deleted, they L are moved to the WASTEBASKET folder. Later, when the mail file is closed theL wastebasket folder is (optionally) emptied by a PURGE operation. The deletedM bytes of the messages stay around until a special RECLAIM operation is forcednN or until the system thinks there are too many and forces an automatic RECLAIM.  I By default, the C-CLIENT library uses the mail default behaviour and onlyiF purges messages and reclaims the space occasionally. This makes things* generally more reliable but eats up space.  L If the logical name CCLIENT_MAILFILE_PURGE_RECLAIM is defained to any value,J then the PURGE and RECLAIM operations are performed each time a mailbox is closed.t     4.13 Time Zone Setting  J When a message is sent, a date field is added in the standard format. ThisL includes the time zone setting as an offset from Universal Time (UTC) in the format:p        +nn00	EAST of Greenwich      -nn00	WEST of Greenwich    L The timezone setting is determined by examining the system wide logical nameO SYS$TIMEZONE_DIFFERENTIAL. This is defined in OpenVMS 6.x and above but it must K be configured using the procedure SYS$MANAGER:UTC$CONFIGURE_TDF. On earlier I versions of VMS, the logical name should be defined by hand in the systemx startup procedure.  H The format of this logical name is as an offset from UTC in seconds. ForK example, 1 hour EAST would be "+3600", two hours WEST would be "-7200". The@B offset should take into account any current daylight savings time.     4.14 Long Record Support  I The documented OpenVMS callable mail software limits the size of a singlesM record in a message to 255 bytes. Therefore any message which contains longereK records cannot be read. This is the default mode of operation, whereby onlyw/ the documented callable mail interface is used.t  M OpenVMS callable mail does provide an undocumented method of obtaining longerhL records. This interface allows records of up to 65535 bytes to be retrieved.O However, use of undocumented calls is generally unsafe as future changes to the N interface may cause problems. For this reason, the undocumented interface willN be used ONLY if the logical name  CCLIENT_MESSAGE_USE_LONG_RECORDS is defined.H This should be used only in the knowledge that it may break under future releases of OpenVMS. . 5. KNOWN BUGS AND PROBLEMS ==========================  M There are probably loads left (please tell me !  Code fixes wanted too..) butt@ this release fixes all those that I have been able to determine.     5.1 Corrupt Mail Files  L Although not strictly a PINE related bug, problems can arise if the MAIL.MAIO file is corrupted in some way. A number of potential corruptions have been seen1K that can cause problems which PINE cannot handle (VMS MAIL will likely also"I crash in a a similar manner). Some known ones are briefly described here.a       5.1.1 Empty Folders,  N It is not supposed to be possible to have an 'empty' folder in MAIL.MAI but itN is possible to create one by exploiting a bug in callable MAIL (at least it isJ at version 6.2 of VMS). This causes PINE and IMAPD to get confused and may0 crash or otherwise misbehave shortly afterwards.    . 5.1.1.1 Detecting the empty folders corruption  L You can detect this sort of corruption quite easily. Simply go into VMS MAIL+ and SELECT the suspect folder. The message:y    'selected 0 messages'   rather thans    'no such folder'n   indicates corruption.     + 5.1.1.2 Fixing the empty folders corruptione  N You cannot delete this empty folder at all. What has to be done is to copy allK messages to a completely new mail file and then delete the old corrupt mailt0 file. This sequence should deal with the problem     1. Go into VMS MAILm  %   2. For each folder in the mail filen   	*  SELECT folder   	*  MOVE/ALL folder  newmailfile  N   3. Ensure that the mail file is completely empty of messages. If not, repeat      step 2.  J   4. Rename the 'newmailfile' to the next highest version of the mail file      being fixed up.  .   5. Delete the lower version of the mail file  L You should take care if new mail arrives between steps 3 and 4 as it will go into the original mail file.       5.1.2 Long records  L The documented limit on a mail message record is 255 bytes. However, mail isH capable of delivering longer lines into a mailbox and will under certainL cirumstances. If this happens, PINE and IMAPD (and VMS MAIL) will crash whenO trying to read the long record into a buffer. There is no known way to read thecE whole record so the best course of action is to delete the message inf	 question.t   NOTE:tN   Use of the undocumented long record support may assist. See section 4.14 for
   details.    ' 5.2 Parallel PINE and VMS MAIL sessionsw  K Use of PINE (or the IMAPD server) implictly assumes exclusive access to thesO mail folder. Unfortunately, it doesn't have this. If another PINE, IMAPD or VMSiM MAIL session is also accessing the same folder and messages are deleted, thish/ may result in unexpected PINE or IMAPD crashes.g       5.3 Message Deletion  K When PINE, or a client using the IMAP/POP servers, deletes a message from a I folder, the display still shows the message as being there.  It will onlysN disappear from the display when the folder is closed and re-opened.  This is aM limitation on the c-client routines which access the mailbox and is primarilyy1 due to the way in which VMS MAIL handles folders.e  M It is possible that this limitation may be removed in a future release but itn is unlikely.      0 5.4 Notification of new INBOX mail does not work  O For similar reasons to those outlined in 5.3 above, no 'new mail' notificationseO are issued while the INBOX remains open.  To see new mail, you must close, then%N re-open INBOX.  PINE, unfortunately, keeps the INBOX permanently open during a@ session so you will need to exit then re-enter PINE to see them. s 6. REPORTING A PROBLEM ======================  N If you encounter a problem with PINE, first be certain that it is NOT simply a, setup or configuration problem. For example:  J    * Read the documentation on setup to make sure everything has been done      correctly.o  (    * Check all logical names are correct  7    * Check contents of configuration files are correct.   3    * Check access to configuration files is correctE  0    * Check quotas and privileges where relevant.    M When reporting a problem, it is important to give sufficient details to allowe= that problem to be reproduced. Typically, you should include:   ;    * System config (machine, VMS version, Which C compiler)*      * Logical name definitionse      * All configuration files  /    * What you did to create the error (exactly)t  M    * A copy of the message (if any) that PINE was trying to read at the time.e  7    * Copies of all error messages and trace/debug logs.m  L Try enabling all debugging (using the -d9 switch on the PINE startup commandO and defining the IMAPD_LOGLEVEL logical name to 20 and CCLIENT_LOGLEVEL logicaleL to 30). The .pine-debugx file and the IMAPD_LOGFILE will then contain useful	 pointers.e  K If you can, build a DEBUG version of the utility that fails and display thep( following items at the point of failure:      * Call stackn  8    * The current line in each active module on the stack  O    * Values of any variables relevant to the current line at each level (ensureEG      that they are displayed in a format appropriate to the type of the       variable.  L All information about the specific problem can be sent to me and I'll try toO fix it. However, please try to send problem reports only if they appear to be a B bug in PINE. I'm not keen on simply debugging a duff configuration6 unless it actually results in a crash of the software.  J Requests for enhancements to PINE should not be sent to me unless they areN specifically related to the VMS port; otherwise send them to the developers at the University of Washington.N n 7. SUMMARY OF LOGICAL NAMES  ===========================H  F Several logical names are used to control the actions of the software.     7.1 C-CLIENT Logical Names  J These logical names affect any application which makes use of the C-CLIENT library.      * CCLIENT_ADDRESS_PREPROCESS_n< 		Defines a set of initial address rewriting rules which are4 		applied before the standard processing is applied.  + 		Acceptable value: <pattern>=<replacement>s  / 		Default: no pre-processing rules are applied.	       * CCLIENT_ADDRESS_REWRITE_nW4 		Defines a set of address rewriting rules which are> 		applied before standard processing. If there is a match, the" 		standard processing is bypassed.  + 		Acceptable value: <pattern>=<replacement>Y  * 		Default: no rewriting rules are applied.       * CCLIENT_AUTOFILEINBOX-: 		Controls whether messages in the INBOX are automaticallyA 		filed to another folder once read. If defined to a folder name, $ 		they will be moved to that folder.  ? 		Acceptable values: Any mail folder name. The name "MAIL" will & 		provide compatibility with VMS MAIL.  ' 		Default: Messages are not auto-filed.        * CCLIENT_GW_MAIL11eA 		Defines the 'local-domain-name' to use when a DECnet address is  		mapped into RFC1405 format.M  1 		Acceptable Values: Any valid internet host namea  > 		Default: The local internet host name, or the local SYS$NODE       * CCLIENT_GW_X400 = 		Defines the 'x400 gateway' host name to use when mapping ant 		X.400 address into SMTP.  0 		Acceptable value: Any valid internet host name  ( 		Default:  The local internet host name       * CCLIENT_HEADERS_ATENDw? 		Controls the placement of RFC822 headers. If defined, headersi< 		are assumed to have been placed at the end of the message,, 		separated from it by a fixed line of text.  = 		Acceptable values: the text delimiting the headers from thet 		body of the message.  5 		Default: Headers exist at the start of the message.d       * CCLIENT_INBOXFOLDERNAMEy< 		Defines the name of the folder in the default mail file to' 		which the reserved name "INBOX" maps.a  ' 		Acceptable values: A mail folder namee   		Default: NEWMAIL       * CCLIENT_INTERNET_AUTO A 		If defined (any value), specifies that ANY unrecognized foreign < 		mail address of the form   tsp%"...@..."  is treated as an 		internet-capable transport.A  7 		Acceptable values: anything (actual value is ignored)e  @ 		Default: Any unrecognized transport is encoded using the local 		format encoding mechanism.       * CCLIENT_LOGLEVEL; 		C-client library debug level. Debugging output applies to	A 		modules compiled with the LOGTRACE option and is written to the 6 		applications debug log using the mm_dlog() callback.   		Acceptable values:  0-30   		Default: No debug output    "   * CCLIENT_MAILFILE_PURGE_RECLAIM> 		If defined, causes mail to purge the wastebasket and reclaim; 		deleted messages bytes each time a mail folder is closed.0   		Acceptable Values: Any stringg  - 		Default:  No purge or reclaim is performed.o       * CCLIENT_MAILPROTOTYPE @ 		Defines a file whose format will be copied when creating a new 		(empty) mail file.  1 		Acceptable values: name of a non-open mail filey   		Default: MUST be defined    $   * CCLIENT_MESSAGE_USE_LONG_RECORDS@ 		Specifies that the undocumented calls in OpenVMS callable mail= 		are to be used to retrieve message records, allowing record.& 		lengths up to 65535 to be retrieved.  @ 		Acceptable values: Anything - only the presence of the logical 		name is required.p  ; 		Default: Only documented calls to callable MAIL are used,	5 		restricting the maximum record length to 255 bytes.	       * CCLIENT_NODE> 		The address of the local system used when mapping a VMS MAIL* 		address that consists of just a username  1 		Acceptable values: Any valid internet host named  > 		Default: The current host name if possible otherwise nothing       * CCLIENT_NODE_nodetA 		The host name to use when converting a DECnet IV address of theh 		form 'node::user' to SMTP.  1 		Acceptable Values: Any valid internet host name    		Default: uses the name 'node'        * CCLIENT_NODE_namespace_node.> 		The host name to use when converting a DECnet/OSI address of+ 		the form 'namespace:.node::user' to SMTP.l  1 		Acceptable Values: Any valid internet host namet   		Default: uses the name 'node'I       * CCLIENT_NORFC1405nA 		Controls how DECnet addresses are converted to SMTP. If defined < 		(any value) then addresses which do not have a translation< 		specified by the 'CCLIENT_NODExxx' logicals are mapped to:: 		'user@node'. Otherwise, they are mapped according to the5 		RFC1405 standard: '"node::user"@local-domain-name'.   0 		Acceptable values: Anything (value is ignored)  ) 		Default: Map using the RFC1405 standardl     7.2 PINE Logical Names  , These logicals control the PINE applications  
   * PINE_ROOT : 		The root of the tree containing the PINE executables and  		configuration files. REQUIRED.   * PINE_DIR? 		The directory containing the pine executables for the currenth  		system architecture. REQUIRED.     * PINE_EXE9 		The PINE.EXE image for the current system architecture.r 		REQUIRED.u     * PINE_CONF_DIRS8 		The directory containing the PINE configuration files. 		REQUIRED.l       * PINE_SENDMAIL_QUEUEl> 		Used only if no 'smtp-server=...' definition is found in the 		configuration files.  ? 		If defined, PINE will use the local sendmail facility to postaA 		messages by creating a batch job and submitting it to the queue = 		define by this name. A separate process is required to taken: 		jobs from the queue and process them. Supported ones are= 		MULTINET's own SMTP delivery agent and the freeware package  		VMS-SENDMAIL.R  5 		Acceptable values:	Any batch queue used by the mailN 		delivery agent.   3 		Default: Mail is delivered using the foreign mailt 		interface in callable mail.*     * PINE_SPOOL? 		Defines the direcvtory for outgoing mail spool files when thei 		sendmail option is used.  * 		Acceptable Values:	A writeable directory  6 		Default: The normal default for the sendmail option.     * PINE_MAIL_PROTOCOL= 		Defines the foreign mail transport name E.G. "SMTP" or "MX"d< 		overrides MAIL$INTERNET_TRANSPORT if this is also defined.  ; 		Acceptable values: The prefix of the shareable image used . 		to send mail via the foreign mail interface.  > 		Default:  Mail cannot be sent via the foreign mail interface. 		(unless MAIL$INTERNET_TRANSPORT is defined).     * MAIL$INTERNET_TRANSPORTe@ 		As for PINE_MAIL_PROTOCOL. This logical name, new with OpenVMS> 		6.2, performs the same function but is often already defined 		as it is used by VMS MAIL.  3 		Acceptable values:	Same as for PINE_MAIL_PROTOCOL   = 		Default: Mail cannot be sent via the foreign mail interfacea( 		(unless PINE_MAIL_PROTOCOL is defined)     7.3 IMAPD Logical Namese  4 These logicals control the IMAPD server applications     * IMAPD_ROOT; 		The root of the tree containing the IMAPD executables ands  		configuration files. REQUIRED.  
   * IMAPD_DIRI? 		The directory containing the IMAPD executable for the currente  		system architecture. REQUIRED.  
   * IMAPD_EXEe: 		The IMAPD.EXE image for the current system architecture. 		REQUIRED.m     * IMAPD_CONF_DIR8 		The directory containing the IMAPD configuration file. 		REQUIRED.      * IMAPD_ALERTFILE > 		The name of a file containing text messages. If defined, the= 		server will output the contents of this file when the IMAPDa; 		server starts (as an unsolicited response) and thereaftere9 		whenever the modification date of the file has changed,u5 		indicating new or updated information is available.   0 		Acceptable value: name of a readable text file  ' 		Default: No alert messages are outputt       * IMAPD_LOGFILEd? 		If defined, specifies the name of a log file created for eacht 		IMAPD session.  ? 		Acceptable values: Name of a file that should be created. The , 		directory must be writeable by the server.  ! 		Default: No log file is createde       * IMAPD_LOGLEVEL? 		Specifies the level of logging information written to the logm> 		file. The higher the value, the more information is written. 		  0 - no logging" 		  1 - log only received commands) 		  2 - log status responses to commands.   % 		Acceptable values: An integer valuer   		Default: 0       * IMAPD_TIMEOUTa< 		Specifies a time, in seconds, after which the IMAPD server> 		should auto-logout the user if no commands have been issued.  ? 		Acceptable values: An integer value, specifying the number ofm 		seconds to wait.   		Default:  No auto-logout       * IMAPD_LOGTRY< 		Specifies the number of failed attempts at login to accept 		before exiting.f  & 		Acceptable values: An integer value.   		Default: 3   7.4 IPOP3D Logical Names  5 These logicals control the IPOP3D server applicationse     * IPOP3D_ROOTl< 		The root of the tree containing the IPOP3D executables and  		configuration files. REQUIRED.     * IPOP3D_DIR? 		The directory containing the IMAPD executable for the currentl  		system architecture. REQUIRED.     * IPOP3D_EXE; 		The IPOP3D.EXE image for the current system architecture.  		REQUIRED.t  # 8. RELEASE NOTES AND CHANGE DETAILSs. ===================================             N This section details major changes since the previous release and a history ofN specific changes to the software. Later changes may supercede earlier changes.      9 3.91-2 FINAL RELEASE - CHANGES SINCE 3.91-1 FINAL RELEASEn9 ---------------------------------------------------------   ' Summary of new features in this release ' =======================================r  O   * Added the PINE_SPOOL logical to define where to put temporary files createdr     by the SENDMAIL interface.    $ Summary of bug fixes in this release$ ====================================  F   * Corrected problems with rename of newly created, empty, mailboxes.  K   * Fixed up the use of SYS$NODE for the hostname, when node has no DECnet, /     so that trailing '::' is properly stripped.c  E   * Fixed up BUG preventing PICO from getting the right terminal sizep$     characteristics in a subprocess.  J   * Fixed timing problem in the SENDMAIL interface whereby two users could1     write to the same spool file at he same time.i  I   * Fixed up bug in Message router headers. Additional headers containingeC     invalid/incomplete RFC822 headers are now properly reformatted.   L   * Fixed up bug preventing recognition of headers starting with "apparent-"     or "apparently-"    1 Summary of changes that may affect configurations.1 =================================================      NONE     General Changess ---------------   A   * PINE_SETUP.COM : Added example of the PINE_SPOOL logical namer 								30-OCT-1997e  N   * AAAREADME.TXT : Updated documentation with info on PINE_SPOOL logical name 								29-OCT-1997e     C-CLIENT Changes ----------------  L   * [.IMAP.ANSI.C-CLIENT]VMSBUILD.COM : removed the STDPROTO definition fromN     the list of compiler /defines and added it into the LINKAGE.H routine that     is created.l 								12-NOV-1997   J   * [.IMAP.ANSI.C-CLIENT]LOG_VMS.C : In order for the STDPROTO value to beL     set up, there must be a call to myusername() before any reference to it.O     Since the username is now set by a call to env_parameters, the myusername()cL     function did nothing. Fixed this up by inserting a call to it just priorH     to the env_parameters call.  This affected only the CREATE function. 								12-NOV-1997t  K   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added the rename_new_mailbox functioneJ     to update the linked list of newly created empty mailboxes when such aJ     mailbox is renamed. Added calls to it in the vms_mail_rename function.K     This prevents 'mailbox not found' errors from occuring when the renamedp     mailbox is accessed. 								12-NOV-1997s  H   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Headers prefixed by "apparent-" orG     "apparently-" were not recognized. Added them to the table of labelq-     prefixes so that they are now recognized.n 								10-NOV-1997F  M   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : If a mail message is received on a nodeaM     with no DECnet via local MAIL, and no nodename mappings were defined, thetK     translation of SYS$NODE was used to obtain the host name. However, thiseN     contains trailing '::' which were not properly stripped off. Now they are. 								30-OCT-1997   K   * [.IMAP.ANSI.IMAPD]IMAPD.C : Modified to call 'mylocalhost()' to get thet     local host name. 								29-OCT-1997c  L   * [.IMAP.ANSI.IPOPD]IPOP3D.C : Modified to call 'mylocalhost()' to get the     local host name. 								29-OCT-1997t  N   * [.IMAP.ANSI.C-CLIENT]ENV_VMS.C : Moved the 'mylocalhost()' routine to here=     where it belongs. It now calls the stack specific routinei     'get_local_host_name'. 								29-OCT-1997   K   * [.IMAP.ANSI.C-CLIENT]TCP_VMS_NETLIB.C : Rewrote the get_local_host_namenN     routine to call the NETLIB routines directly rather than use a callback toI     mylocalhost(). Deleted mylocalhost() from this module and moved it tos     ENV_VMS.C. 								29-OCT-1997c  M   * [.IMAP.ANSI.C-CLIENT]TCP_VMS_MULTINET.C : Rewrote the get_local_host_name M     routine to call the MULTINET routines directly rather than use a callbackoL     to mylocalhost(). Deleted mylocalhost() from this module and moved it to     ENV_VMS.C. 								29-OCT-1997   O   * [.IMAP.ANSI.C-CLIENT]TCP_VMS_NO.C : Rewrote the get_local_host_name routinedJ     to get the SYS$NODE translation directly rather than use a callback toI     mylocalhost(). Deleted mylocalhost() from this module and moved it to      ENV_VMS.C. 								29-OCT-1997h  N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : The format_mr_headers routine mistakenlyL     assumed that the optional additional rfc headers section would contain aL     complete valid set of rfc822 headers. It doesn't. Thus, the headers wereI     treated incorrectly and included as part of the text body rather than K     added to the headers.  The code now uses a different test that does notuE     attempt to validate the headers other than by the presence of theX     RFC-822-Headers: line. 								23-OCT-1997e  F   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.H : Added a new entry to the messageH     structure 'mapnum'. Eventually, this will be used to map between theL     external message number and the internal message number so that expunged'     messages can be properly displayed.a 								17-OCT-1997s  L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Changed name of vms_mail_get_directory*     routine and made it strictly internal. 								17-OCT-1997k    J   * [.IMAP.ANSI.C-CLIENT]LOG_VMS.C : Revised the 'login' code to fetch theE     login directory directly rather than call the VMS_MAIL.C routine.u 								17-OCT-1997l     Pine Changes ------------  H   * [.PINE]TTY_VMS.C : More tidying of the terminal size detection code. 								12-NOV-1997r  J   * [.PINE]TTY_VMS.C : Tidied up the code which fetches the terminal size. 								29-OCT-1997   G   * [.PINE.OSDEP]SENDMAIL_VMS. : On a busy system, multiple users couldrN     generate spool files of the same name due to the granularity of the clock.H     Affects only systems where the SENDMAIl-VMS interface is being used.L     The timing window is now smaller. Also added the logical name PINE_SPOOLI     to define where to place the temporary files  created by the SENDMAILtM     interface. Thanks to Bob Forrest for the suggestion and Claudio Allochio i     for the implementation.p 								28-OCT-1997t 								H   * [.PINE]PINE.H : Updated with latest version number id "3.91-2 (vms)" 								23-OCT-1997      Pico Changes ------------  G   * [.PICO]OS_VMS.C : More tidying of the terminal size detection code.d 								12-NOV-1997a  O   * [.PICO]OS_VMS.C : Fixed up an inverted test on the default page/column sizem     of the terminal. 								31-OCT-1997   M   * [.PICO]OS_VMS.C : Cleaned up some code in this module. Used include filesPN     instead of local definitions where possible, Modified printf statements to-     be fprintf(stderr), Simplified some code.f 								29-OCT-1997N    E   * [.PICO]OS_VMS.H : ttgetwinsz() routine fouls up when running in a M     subprocess because the system service getjpi does not return the terminal D     name under those circumstances.  Modified the routine to use the2     SYS$COMMAND logical name as the terminal name. 								29-OCT-1997.      7 3.91-1 FINAL RELEASE - CHANGES SINCE 3.91 FINAL RELEASEi7 -------------------------------------------------------C  ' Summary of new features in this release ' =======================================a  K   * Support for VMS MAIL messages with records longer than 256 bytes. Up to J     65535 bytes is now supported. Usage controlled by the new logical nameI     CCLIENT_MESSAGE_USE_LONG_RECORDS. This feature is subject to breakingrJ     in a future release of OpenVMS if the callable mail interface changes.  O   * Major rewrite of VMS header reformatting functions. Includes the ability totO     perform user configurable rewrites on the headers, via pattern matching and 4     substitution strings specified in logical names.  ;   * Major rewrite of the rfc822 header detection mechanism.e    $ Summary of bug fixes in this release$ ====================================  J   * Solved problems of very long delay during mailbox closure (however, it4     introduces a slight delay at mailbox open time).  >   * Rewriting of VMS headers now more consistent and accurate.  -   * Postponed-messages behaves more correctly   C   * Minor problem with SERVICE_SETUP.COM procedure parameter checksl    1 Summary of changes that may affect configurations 1 =================================================   K   * New logical name CCLIENT_INTERNET_AUTO may need to be defined to retain G     the previous handling of unrecognized foreign mail transports which $     handle internet-style addresses.     General Changes  ---------------f  H   * CCLIENT_SETUP.COM : Added examples of new logical names and improved#     summaries of each logical name.l 								8-OCT-1997  7   * AAAREADME.TXT : Added info about new logical names.  								8-OCT-1997  @   * AAAREADME.TXT : Added information about long record support. 								25-SEP-1997N  N   * AAAREADME.TXT : Complete overhaul of the address rewriting section to makeL     the mechanisms clearer and describe the new pattern matching rules, plus     other new features.C 								25-SEP-1997   M   * SERVICE_SETUP.COM : Checking of the service port parameter was incorrect.sN     Changed 'P2' to 'P3' in the test. Thanks to Ted Allwood for spotting this. 								26-AUG-1997:     C-CLIENT Changes ----------------  M   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed up a problem with fetchbody whichnL     was returning the body part of the previous message read rather than the     current message required.e 								8-OCT-1997  J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Modified the routines which need theI     current username to call the   myusername()  function rather than thet     special entry to mm_login. 								8-OCT-1997  K   * [.IMAP.ANSI.C-CLIENT]LOG_VMS.C : Modified the server_login code to calleN     the set_username function so that the logged in user is stored rather thanH     the user who owns the process! The myusername() function now returns     the right information. 								8-OCT-1997  M   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Restructured the basic mail file/folder H     access routines into a short suite of common routines. This helps toD     simplify a number of message/folder move/copy/delete operations. 								7-OCT-1997  F   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Restructured the message readingL     functions to handle the Message Router/X.400 specials headers. These are     now properly converted.  								3-OCT-1997  K   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Tidy up the routines which get statustL     information about messages. Simplified calling sequences where feasible. 								3-OCT-1997  H   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added a new function to handle theM     storage of text and headers into the local cache. This greatly simplifiesrO     the main message read routine prior to adding the new code for X.400 headera4     checks and reformatting (which isn't done yet!). 								1-OCT-1997  J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed up odd problems with the flagsL     settings. Hopefully they now properly track those in the actual mailbox. 								1-OCT-1997  K   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added preliminary code to the mailboxi?     name parsing routine to allow a format like '~username' andCO     '~username/folder'. We don't allow this to work yet because of the securitye1     implications that still need to be worked on.a 								1-OCT-1997  L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Rewrote the parse_mailbox_name routine#     to make it shorter and clearer.	 								30-SEP-1997o  F   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Massaged the VMS date field fromN     'dd-mmm-yyyy' into 'dd mmm yyyy'. That is, replaced hyphens with spaces to'     look more like the RFC format date.l 								30-SEP-1997R  N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed up various problems with the flagsN     settings. When the mailbox was opened, the status of the flags was unknownN     because we hadn't accessed the messages at all. The status of the flags isL     now set from the individual message's attributes word at the time of theL     open.  At the same time, removed the code that initializes the search soJ     that it does not read all messages in.  This removes the long delay atN     folder close. However, there is a slightly longer folder open time, due toF     the need to read in the status flags (seen, marked, answered etc.) 								30-SEP-1997u  H   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed up bug in the reading of theN     message into memory. When the LOCAL->buf was resized upwards, the new size<     was too short by one byte, leading to random overwrites. 								30-SEP-1997t  J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : To reduce the memory requirements ofM     large mailboxes, modified the cache to only cache the current message andeL     not every message read.  This works but gives slow response on an index.L     May have to look into ways of getting the header information faster. NetM     result is a dramatic decrease in memory usage for large messages (so lessoO     opportunity for PINE and the servers to crash. Downside is a longer time toR/     access messages if accessed more than once.: 								26-SEP-1997a  O   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed bug in a debugging statement in theaI     long record handling code. When a long record was encountered, printfRK     collapsed trying to print it. Added an upper limit on the length of theO     printed record.e 								26-SEP-1997	  J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Major rewrite of the algorithm whichI     checks the body of a message to see if it starts with a set of RFC822eJ     headers. Because of the wide use of extra non-conformant RFC822 headerM     fields, it is not possible to rely on a simple match of the label names. lI     So a somewhat more ambitious algorithm is nowe used.  We examine eachnN     header in the text to see if it matches the format 'label <white space> :'M     If not, then this is not a valid header block.  Next we see if the headertO     is a recognized one. If not, we flag the block as suspect. Next we check tonO     see if the header is a recognized 'originator' or recipient' field (such asiM     'from', 'to', 'cc' etc.) and flag it as such if it is.  At the end of the L     header block, we then apply the following tests:  First, if we've had noM     suspect headers, the header block is valid.  Otherwise, if there has beenrN     both a valid originator and a valid recipient field, then the header block6     is valid, otherwise it's not a valid header block.;     My thanks to Claudio Allocchio for the basic algorithm.	 								26-SEP-1997s    N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Major rewrite of the long record supportK     code which uses undocumented callable mail features. The main change islI     that long record support is no longer used by default but only if the.O     logical name CCLIENT_MESSAGE_USE_LONG_RECORDS is defined. If not, then onlyeN     standard callable mail interfaces are used, restricting the maximum record     length to 255 bytes. 								25-SEP-1997i    E   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Major rewrite of the VMS headermM     reformatting code. Includes new pattern matching facilities, which can be_C     used by the user to set up their own header rewrite rules, morerM     knowledge about standard internet transports (such as MX, SMTP, IN etc.),eP     new knowledge about the UK CBS transport,  and various other improvements toM     the parsing and reformatting. I owe a major debt to Claudio Allocchio fortE     his suggestions and information about the X400 header formats. In I     particular, my thanks for his patience in testing several preliminarys,     versions of the code over several weeks. 								23-SEP-1997   J   * [.IMAP.ANSI.C-CLIENT]VMS)MAIL.C : Cleaned up some debugging statements     which contained extra \n.	 								11-SEP-1997i    F   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added the keywords 'precedence',L     'errors-to', 'warnings-to', 'return-receipt-to', 'dl-expansion-history',K     'disposition-notification-to'  and 'delivery-receipt-to' to the list of=     recognized rfc822 headers.N     Also removed the extra check for an '@' sign in the line - not all headers     that should have one do. 								11-SEP-1997u    J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : The check for an initial header lineO     (to determine whether or not it's an RFC822 message) is now more rigourous. K     Essentially, the entire header text is scanned to ensure that each line M     starts with a recognized keyword. Continuation lines are also recognized.rG     Anything that does not look like a recognized header will cause theeO     message parser to assume that it is NOT an RFC822 message. The check itselfeI     is quite basic (we don't check the full syntax of each header) but ith>     should identify all but the most devious of message texts. 								9-SEP-1997    ;   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added missing call tonK     __Delete_New_Mailbox to the append routine. This fixes up some problems ,     with the postponed-msgs folder handling. 								8-SEP-1997    H   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed is_rfc822 routine so that itM     correctly identifies X-.. headers; also made some changes to speed up the J     parsing in the case where the line is not a header (basically, it mustK     contain a colon and we don't search beyond this colon for header info).  								4-SEP-1997    I   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added strscan routine to facilitateaN     future improved parsing of VMS mail headers. This finds the end of a token-     made up of a specified set of characters.  								29-AUG-1997e  E   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Rewrote the header/text parsingeJ     algorithm to be cleaner and faster. We no longer parse the VMS headersN     unless no RFC822 headers are detected. The memory allocation algorithm nowI     uses only that necessary to hold the message and is always just largeNN     enough. If headers are requested at the bottom but the separator string isN     not found, we look for them at the top. If not found there either, then weL     use the VMS headers. Minor changes made to a number of address rewriting      routines to facilitate this. 								28-AUG-1997s    gK   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added routines to use an undocumented M     callable mail interface and data structure to get long lines. The maximum.M     length handled is now 65535 bytes (the maximum that VMS MAIL can actuallyw     store).p 								27-AUG-1997h    J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed up a typo in the list of knownL     RFC822 header keywords 'supsersedes:' was renamed to 'supersedes:'; also/     added the alternate spelling 'supercedes:'.  								27-AUG-1997E  N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : A typo in the __is_rfc822_header routineJ     prevented extension headers of the form 'X-...' from being recognised. 								26-AUG-1997	     PINE Changes ------------  K   * [.PINE]IMAP.C : Removed the special VMS entry to mm_login that gets theEJ     current username as it's no longer necessary for the C-CLIENT library. 								8-OCT-1997  O   * [.PINE]PRINT.C : Removed /NOTIFY from the print command.  User can add thisrM     in the print configuration if they want but the default causes the screenA     layout to get scrambled. 								7-OCT-1997 t/ 3.91 FINAL RELEASE - CHANGES SINCE 3.91 BETA 131/ -----------------------------------------------   ' Summary of new features in this releasea' =======================================   G   * Timezone details are now added to the Date field (as an offset from      UTC/GMT)     General Changest ---------------   K   * Made sure documentation now refers to the final release instead of beta-     where relevant.. 								28-JUL-1998o  L   * AAAREADME.TXT : Added information about the time zone setting and how it     should be configured.h 								28-JUL-1997l   C-CLIENT Changes ----------------  T   * [.IMAP.ANSI.C-CLIENT]ENV_VMS.C : The Date field generated on an outgoing messageN     now has correct timezone details included. Previously, due to restrictionsG     in VAX C, the code has been written to always assume GMT.  Now, theh<     timezone is determined from the system wide logical nameK     SYS$TIMEZONE_DIFFERENTIAL. This is defined if OpenVMS 6.x or greater isaM     running and if it has been configured via @sys$manager:utc$configure_tdf;uP     Otherwise it should be defined manually as the number of seconds offset fromM     GMT (prefixed by + for east and - for west). E.G. "+3600" = GMT + 1 hour.S 								18-JUL-1997m      PINE Changes ------------  L   * [.PINE]PINE.H : Modified the version string to reflect the final release 								28-JUL-1997f 2) 3.91 BETA 13 - CHANGES SINCE 3.91 BETA 12e) -----------------------------------------a  ' Summary of new features in this release ' =======================================e  I   * DELETEing a mailbox is now implemented. All messages in the specifiedh;     folder are removed but the containing MAIL.MAI is left.T  J   * RENAME of a mailbox now implemented. This allows the automatic monthly*     rename of the sent-mail folder to work      + Summary of major bugs fixed in this releasea+ ===========================================t  8   * Fixed source of crash when appending or sending mail  9   * Fixed bug in handling of multiple postponed messages.n  0   * Fixed some bugs in header address rewriting.     General Changesr ---------------O  D   * CCLIENT_SETUP.COM : Added a missing definition for DEFSYS to the      CCLIENT_SETUP.COM procedure. 								9-MAY-1997  M   * SERVICE_SETUP.COM : The MULTINET CONFIGURE line written to the config was-<     incorrect in two places. Also added missing close quote. 								24-APR-1997      C-CLIENT Changes ----------------  L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added the DELETE mailbox functionality 								16-JUL-1997S  H   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed up another little bug in theI     address rewriting routine _-fmt_smtp. It was not searching for an '@'yN     purely outside of brackets. Fixed this by using the stritem routine rather     than strbreak. 								28-MAY-1997m  N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Before PINE calls OPEN, CREATE or APPENDM     it calls the ISVALID routine to see whether the folder exists. We also dooM     this within the OPEN and CREATE routines and these calls are unnecessary.EO     They were removed. Strictly they are also unnecessary in the APPEND command9O     but PINE presses ahead with an append operation even if the folder does noteL     exist This causes a later 'imap append validity confusion' error. SO theO     check has been left in APPEND. At some stage, I'll try to work out why this	5     happens (may be a bug in the original PINE code).s 								23-MAY-1997l  F   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed up a formatting bug in theK     __fmt_smtp routine. A counter was off by one and resulted in the @ sign ;     being included within quotes and the address truncated.r 								23-MAY-1997r  N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed up a bug in the __fmt_smtp addressN     rewriting routine. It failed to detect the prescence of '@' in the addressO     due to calling the wrong function. As a consequence, it added the host name 
     in again.L 								21-MAY-19973  M   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed up a bug in the code that deletesuN     an item from the linked list of 'empty' mailboxes. It was in fact deletingJ     all subsequent mailboxes in the list rather than just the current one. 								21-MAY-1997   N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Incorporated the scanning of the list ofN     'empty' mailboxes into the routine that scans the folders in a mailfile soM     that the calling routines need not take special action to deal with thim.aH     As a consequence, simplified some of the other scanning routines andM     changed the format of the folder pattern structure by adding a new field.s 								21-MAY-1997o  K   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Made the FIND ALL.MAILBOXES * command N     search the special list of 'empty' mailboxes so that the list of mailboxesL     so returned is consistent with the one that the 'mailbox_exists' routineJ     checks. Previously, this could cause trouble if a CREATE'd mailbox was3     deleted and then recreated in the same session.o 								21-MAY-1997m    M   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Implemented the rename mailbox functionk9     so that monthly saving of the sent-mail folder works.  								16-MAY-1997=    M   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Selection of transport name was faulty. M     Corrected the operation of the __transport_name() function. Thanks to Ianl     Miller for spotting this.i 								29-APR-1997e  ) 3.91 BETA 12 - CHANGES SINCE 3.91 BETA 11 ) -----------------------------------------   ' Summary of new features in this releasef' =======================================   K   * Support for sending mail via MULTINET SMTP and via the freeware package      VMS-SENDMAIL.   O   * Support for RFC822 headers at the end of the text body, via the new logicalM!     name "CCLIENT_HEADERS_ATEND".d  ;   * Support for TCPWARE in the SERVICE_SETUP.COM procedure.d  M   * Support for RFC1405 local format addresses, when DECnet addressare mapped5     to internet format._  H   * New IPOP3D_SETUP.COM procedure to define logical names for the IPOP3     server.P  I   * New CCLIENT_SETUP.COM module to define logical names that control the:     C-CLIENT operation.-  E   * New VMSBUILD option (NOTCP) to specifically select NO TCP supportm  N   * New VMSBUILD option (COMPILE-ONLY) to specifically select compilation onlyF     (no link phase). Link may be done separately with LINK-ONLY option  M   * New logical name CCLIENT_MAILFILE_PURGE_RECLAIM; if defined, each mailbox H     close operation will perform a purge of the WASTEBASKET folder and a&     reclaim of deleted messages/bytes.  (   * Additional RFC822 headers recognized  L   * Where VMS MAIL headers are rewritten, continuation lines are inserted if     necessary for long lines.d  M   * Separate directories for VAX and ALPHA objects and executables during thetJ     build. Building for VAX no longer destroys the objects/executables for     ALPHA, and vice versa.    1 Summary of changes that may affect configurationso1 =================================================   L   * INSTALL.COM has been modified to expect new logical names IPOP3D_DIR andK     IPOP3D_DIR. The IPOP3D executable is now copied to this location ratheri     than to IMAPD_DIR.       Implications:rG 	* Check that the IPOP3 logicals are defined before running INSTALL.COM	           to update the system.L  K   * A FIND ALL.MAILBOXES command no longer displays the true folder name to I     which the INBOX name maps. This is to prevent clients from displaying .     the same folder under two different names.       Implications:eE 	* Check the .MAILBOXLIST file for all users and remove any referenceyG           to the real name of the INBOX folder (which is NEWMAIL unlessoB           redefined via the logical name CCLIENT_INBOXFOLDERNAME).  J   * A mailbox close does not now perform an automatic purge/reclaim on theM     mailfile. Define the new logical name CCLIENT_MAILFILE_PURGE_RECLAIM (anys%     value) to restore this behaviour.-  K   * A number of the IMAPD_xxx logical names which were not exclusive to thelL     IMAPD daemon have been renamed to CCLIENT_xxx to more accurately reflectB     the fact that they affect anything using the C-client library.       Implications:oA 	* Check configuration logical names and convert to the new namesM? 	* Check IMAPD_SETUP.COM and (new) CCLIENT_SETUP.com proceduresi8  	* Ensure CCLIENT_SETUP.COM is called at system startup    I   * DECNET Addresses are now mapped according to the RFC1405 standard and K     an optional DECnet-to-SMTP relay address may be included. A new logicaloK     name "CCLIENT_GW_MAIL11" optionally defines this relay. The new logicalPG     name "CCLIENT_NORFC1405" can be used to restore previous behaviour.        Implications:iF 	* Ensure that the new address syntax is correct for your SMTP server.8 	  if not, consider using the old syntax or defining the7           CCLIENT_NODE_xxx logicals to perform mapping.w    N   * Due to PINE (and VMS MAIL) being picky about the case of folder names, theM     case-insensitivity of folder names has been removed. Folder names ARE nowlD     case-sensitive. The special name INBOX remains case insensitive.       Implications:oG 	* Check that subscribed folder names in the .MAILBOXLIST file for each G 	  user match the case of the folder name in the corresponding mail.maigD 	  file. Any that do not should be converted by manually editing the 	  .MAILBOXLIST file.       + Summary of major bugs fixed in this release + ===========================================   D   * The potential for ACCVIO's during PINE startup has been reduced.  O   * Spaces around VMS MAIL addresses are now stripped off before rewriting them L     into RFC format. Separators between addresses are also properly handled.  L   * Rewriting of non-SMTP addresses better handles the various formats found     in VMS MAIL.  J   * The append routine no longer aborts when a NULL flags specification is     passed.s  M   * Creation of a mailbox in a non-existent subdirectory now properly createso     the subdirectory first.P  H   * Use of an empty mailbox no longer causes an IMAPD or PINE crash whenG     the mailbox is pinged. Instead, it correctly returns zero messages.o  H   * When setting new mail count, make sure we don't go negative to avoid.     large newmail counts caused by wraparound.  M   * Address rewriting of some DECnet addresses no longer aborts when compiledr     with VAX C or GNU C.       Change History ==============   General Changes2 ---------------B  G   * INSTALL.COM : Source of executables now taken from the architecturet"     specific executable directory. 								17-APR-1997a  J   * AAAREADME.TXT : Added a new section summarizing all logical names used     by the software. 								17-APR-1997a  J   * AAAREADME.TXT : Added a nore about the COMPILE-ONLY option to VMSBUILD 								17-APR-1997w  M   * BUILDKIT.COM : New procedure added which will build a binary-only kit forcL     distribution. A number of options are provided to control how the kit is8     built. Thanks to Claudio Allochio for the procedure. 								16-APR-1997t  L   * AAAREADME.TXT : New NOTCP option documented; this specifically selects a     build without TCP support. 								16-APR-1997e  L   * INSTALL.COM : Now copies the IPOP3D server to the place specified by theL     IPOP3D_EXE logical; MTEST is copied into PINE_DIR rather than IMAPD_DIR. 								16-APR-1997l  J   * IPOP3D_SETUP.COM : Added this procedure to define the logicals for theL     IPOP3 server. It needs to be tailored for local use and then called from     system startup.  								16-APR-1997u  N   * PINE_SETUP.COM : Added example of the PINE_SENDMAIL_QUEUE logical name forE     supporting the direct interface to MULTINET_SMTP or VMS-SENDMAIL.M 								16-APR-1997D  H   * AAAREADME.TXT : Added details of configuration for use with MULTINET     SMTP and VMS-SENDMAIL. 								16-APR-1997t  =   * CCLIENT_SETUP.COM : Added details of the new logical nameV#     CCLIENT_MAILFILE_PURGE_RECLAIM.h 								14-APR-1997i  H   * AAAREADME.TXT : Re-organised descriptions of mail servers to be more?     geenric, with specific server details in separate sections.n 								14-APR-1997d  I   * CCLIENT_SETUP.COM : new module which contains new logical names (morehH     precisely, those renamed from the IMAPD_xxx suite) which control theO     actions of any application using the c-client library.  These logical names L     have the form CCLIENT_xxx. Configurations should be changed to use these     new logical names! 								20-MAR-1997r  L   * IMAPD_SETUP.COM : Removed those logical names which were not specific toO     the IMAPD daemon, renamed them to CCLIENT_xxx, and placed them into the newo!     setup file CCLIENT_SETUP.COM.1 								20-MAR-1997A  A   * IMAPD_SETUP.COM : Added example of the IMAPD_GW_X400 logical.r 								21-FEB-1997   K   * AAAREADME.TXT : Revised section on address conversions to bring it into 2     line with new X400 stuff and new parsing code. 								21-FEB-1997.  J   * AAAREADME.TXT : Added a section on reporting problems and what sort of     detail is required.o 								21-FEB-1997P  L   * AAAREADME.TXT : Updated with details of RFC1405 conformance and add info/     about the IMAPD_HEADERS_ATEND logical name.R 								14-FEB-1997   O   * IMAPD_SETUP.COM : Updated examples on address mappings to be clearer and to 2     include detail on the IMAPD_GW_MAIL11 logical. 								12-FEB-1997a  L   * AAAREADME.TXT : Added note about need for DEC patch to C RTL for certain8     combinations of DEC C compiler and OpenVMS versions. 								6-FEB-1997  M   * VMSBUILD.COM : Add a new build option NOTRACEBACK to allow the generation)P     of images that may be INSTALL'ed with privileges. Thanks to Claudio Allochio     for the suggestion.P 								30-JAN-1997I  ;   * AAAREADME.TXT : Rewrote section on configuration files.p 								30-JAN-1997x  L   * AAAREADME.TXT : Added a new section describing how to set up the networkE     servers over the TCPWARE stack. Thanks to Curtis Williams for then     information. 								30-JAN-1997X  N   * AAAREADME.TXT : Added a note about the required header file NETLIBDEF.H ifJ     building with NETLIB support. It's not necessarily there if NETLIB wasN     installed as part of another MADGOAT product. Thanks to Clive Mcdowell for     spotting this. 								29-JAN-1997s  O   * AAAREADME.TXT : Added info about potential problems when the same folder isiO     opened by two different sessions at the same time. Essentially, this is not9     allowed! 								29-JAN-1996E  I   * AAAREADME.TXT : Added more info on folder-collections, showing how to L     display all folders in the default MAIL.MAI file rather than just INBOX. 								28-JAN-1998r  H   * SERVICE_SETUP.COM : Now includes rudimentary support for the TCPWAREA     network stack. Thanks to Curtis Williams for the information.  								28-JAN-1997p  9   * SERVICE_SETUP.COM : Miscellaneous changes to clean up  								28-JAN-1997t   C-Client Library Changes ------------------------  N   * [.IMAP.ANSI.C-CLIENT]VMSBUILD.COM : Object modules and executables are nowK     placed in an architecture specific directory to avoid problems when the E     software is built for multiple architectures in the same cluster.  								17-APR-1997u  H   * [.IMAP.ANSI.C-CLIENT]VMSBUILD.COM : Added the COMPILE-ONLY option toD     suppress the link phase. Incompatible with the LINK-ONLY option. 								16-APR-1997   O   * [.IMAP.ANSI.C-CLIENT]VMSBUILD.COM : Added the NOTCP option to build withoute     TCP support. 								16-APR-1997   K   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Modified the match_folders routine toLI     suppress the display of a folder name if it is actually the real namexN     of the INBOX folder. This is to prevent clients displaying the same folder4     under two different names and causing confusion. 								16-APR-1997   H   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed a bug in the DECnet nodenameO     mapping routine which failed under VAX C or GNU C but was fine under DEC C.RM     The problem was caused by a NULL pointer passed to sprintf in a situationn     similar to this:)         sprintf(output,"%.*s", n, string)aI     if string is NULL and n is ZERO, nothing should be output and sprintfSO     should not try to access the NULL parameter. In DEC C it doesn't but in VAX K     C and GNU C it does. Changed the NULL pointer to be a pointer to a NULL      string instead.a 								15-APR-1997a  N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Improved parsing of local-part addressesO     when rewriting an SMTP format address to better handle embedded quotes that      are not \ prefixed.	 								15-APR-1997   H   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added checks for additional RFC822K     headers to the __is_rfc822 routine. Also added a more general check for-I     extension headers. Thanks to Claudio Allochio for the updated list ofn     headers and code fragments.  								12-APR-1997i  J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Updated the mailbox close routine to4     perform a purge/reclaim only if the logical nameG     CCLIENT_MAILFILE_PURGE_RECLAIM exists. This is a change to previousE     behaviour. 								12-APR-1997   N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Changed some logical names from IMAPD_xxM     to CCLIENT_xx where the function is specific to the c-client library (andnL     hence affects all appications) rather than specific to the IMAPD server. 								21-MAR-1997	  N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Updated the address rewriting mechanismsG     to better handle addresses containing quotes and quoted characters.2 								20-MAR-1997G  L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Updated the 'stritem' routine to allow9     the specification of a set of terminating characters.= 								19-MAR-1997E  N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added the 'strbreak' routine, similar toD     strpbrk, which searches a string for one of a set of characters. 								19-MAR-1997.  K   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Extensively restructured and debugged J     the address rewriting code. It now seems to deal correctly with a wideK     range of different address styles that can appear in FROM:, TO: and CC:aI     fields of VMS MAIL (though it's still a long way from being perfect).eE     Thanks to Claudio Allochio for a useful testbed of x400 and other-
     messages.  								20-FEB-1997d  L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Modified the address scanning routines;     to deal with embedded quotes and '\' quoted characters.I 								20-FEB-1997t  I   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Discovered a major problem with the N     'search' function. It doesn't work for all strings. rather than rely on itN     further, added a new routine 'strfind' which is similar to 'strstr' exceptN     that (a) it is case-insensitive and (b) the string being searched is not aH     null terminated string (length is a separate parameter). Changed allG     references to 'search' into 'strfind' in VMS_MAIL.C where feasible.  								20-FEB-1997r  I   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : First attempt at adding support forNL     X.400 syntax received via the MRGATE. Thanks to Claudio Allochio for the"     basic idea and code fragments. 								18-FEB-1997N  J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Updated the address parser to handleF     properly spaces and commas as address separators, allowing for the9     presence of quotes around all or part of the address.d 								18-FEB-1997h  I   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : First attempt at adding support foraN     RFC822 headers appearing at the end of the text body. The new logical nameK     "IMAPD_HEADERS_ATEND" may be defined to the EXACT line used to separateMI     these headers from the preceding text body. If this is defined and nom>     headers are found, then we revert to the VMS MAIL headers. 								14-FEB-1997w  O   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Replaced a number of string concatenation-B     operations by using the sprintf routine to do it more cleanly. 								14-FEB-1997a 								O   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added a check on the length of an addressAJ     line so generated when rewriting VMS MAIL headers. If it's getting too<     big, use a continuation line in the RFC approved manner. 								14-FEB-1997u  >   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added a new logical nameM     "IMAPD_NORFC1405" to cause nodename mappings in the default case (no nodeu:     mapping logicals defined) to revert to the old format. 								14-FEB-1997r  N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added code to strip leading and trailingJ     blanks form each VMS MAIL address before rewriting to RFC format. This@     prevents spurious spaces appearing in the converted address. 								14-FEB-1997s  O   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Restructured the VMS MAIL headers addressiE     rewriting code. The old way was getting messy and hard to follow.M 								13-FEB-1997   N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Small bug was detected in the parsing ofN     the VMS MAIL FROM: field, which resulted in an extra space appearing afterJ     the name. caused by over-zealous pointer auto-incrementing. Now fixed.1     Thanks to Claudio Allochio for spotting this.d 								12-FEB-1997o  J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Encoding of DECnet address is now inK     RFC1405 format, if no other node mapping can be determined from logicaldH     names. The name of the mail relay is determined from the new logicalK     name IMAPD_GW_MAIL11. Thanks to Claudio Allochio for the suggestion ande     code modification. 								12-FEB-1997   L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Previous attempt to fix up the problemJ     of negative new mail counts had a comparison reversed. Corrected this. 								10-FEB-1997i  J   * [.IMAP.ANSI.C-CLIENT]VMSBUILD.COM : Simplified the building of the TCPJ     support module. We now name the TCP modules to include the name of theL     stack they support (TCP_VMS_NETLIB.C, TCP_VMS_MULTINET_C, TCP_VMS_NO.C).0     This greatly simplifies the build procedure. 								7-FEB-1997  J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : In a few places, strncpy and strncatM     had been used without being followed by the addition of a null byte. ThisPO     lead to some unterminated strings being used and was (part of) the cause of      mysterious aborts. 								6-FEB-1996  K   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Discovered that the main PINE routine L     is fussy about folder name case. Our attempt to lowercase everything wasJ     incompatible with this. As a result, the code to lowercase all mailboxM     names has been removed to avoid conflict. This now means that all mailboxMN     names will be mixed case. The foldername part will be in the case in whichF     VMS MAIL stores it (and you CAN have separate upper and lower caseJ     foldernames in VMS MAIL).  This will make it more likely that a folderJ     specification error will be made by a user, but what IS specified will     behave consistently. 								4-FEB-1997  N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : The APPEND function was not handling theM     case where the flags specification was a NULL pointer, which it can be ifuN     you look at the call from the mail_append routine in MAIL.C ! As a result,O     it aborted. Since we don't actually use this variable (VMS mail provides noaN     way to action the flags anyway), all references were removed thus avoiding>     the problems associated with dereferencing a null pointer. 								3-FEB-1997  L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : The CREATE function failed to properlyO     create the subdirectory if it did not exist. This was due to a fault in theeL     parsing of the mailfile to extract the directory specification; the NULLK     byte was not added to the end, leaving an unterminated string. Thus theC     directory name was bad.r 								3-FEB-1997  J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : The PING routine was not prepared toL     deal with a non existent mailbox and would crash. This would happen if aJ     mailbox was empty or if it had just been created. Fixed up the code to     handle it somewhat better. 								29-JAN-1997N  M   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added a check to the set new mail countuO     routine so that the count is never decremented below zero. Because VMS MAILaL     keeps the count as an unsigned 16 bit number, this could result in large      message counts around 65535. 								29-JAN-1997        PICO Changes ------------  M   * [.PICO]VMSBUILD.COM : Object modules and executables are now placed in anaJ     architecture specific directory to avoid problems when the software is9     built for multiple architectures in the same cluster.e 								17-APR-1997C  L   * [.PICO]VMSBUILD.COM : Added the COMPILE-ONLY option to suppress the link2     phase. Incompatible with the LINK-ONLY option. 								16-APR-1997l  M   * [.PICO]VMSBUILD.COM : Added the NOTCP option to build without TCP networks     support. 								16-APR-1997      PINE Changes ------------  M   * [.PINE]VMSBUILD.COM : Object modules and executables are now placed in anoJ     architecture specific directory to avoid problems when the software is9     built for multiple architectures in the same cluster.  								17-APR-1997   L   * [.PINE]VMSBUILD.COM : Added the COMPILE-ONLY option to suppress the link2     phase. Incompatible with the LINK-ONLY option. 								16-APR-1997   M   * [.PINE]VMSBUILD.COM : Added the NOTCP option to build without TCP networkf     support. 								16-APR-1997   M   * [.PINE.OSDEP]SENDMAIL_VMS. : included modifications from Claudio AllochioeI     to support sending mail out via his VMS-SENDMAIL package and also viaf7     MULTINET SMTP, in addition to the existing methods.= 								16-APR-1997   C   * [.PINE]OS_VMS.C : In build_path, there was the possibility of a.K     negative array subscript. Restructured the code to ensure this does notg     happen and cause an ACCVIO.r 								17-FEB-1997e  I   * [.PINE]INIT.C : Applied official patch from U of W. Thanks to Claudion!     Allochio for passing this on.  								14-FEB-1997h  M   * [.PINE]VMSBUILD.COM : Simplified the network interface selection code dues,     to renaming of c-client network modules. 								7-FEB-1997  >   * [.PINE]PINE.H : Updated the version string to reflect B12. 								29-JAN-1997  s) 3.91 BETA 11 - CHANGES SINCE 3.91 BETA 10l) -----------------------------------------s  ' Summary of new features in this releasei' =======================================o  /   *  IMAP CREATE of an empty mailbox now works.n  O   *  IMAP APPEND to a mailbox now works correctly; with the limitation that therO      flags settings are not actioned. This allows messages to be copied betweene      different systems.   N   *  IMAP SUBSCRIBE/UNSUBSCRIBE mailbox commands are now fully implemented andJ      maintain a mailbox subscription file which the FIND MAILBOXES command      interrogates.  N   *  Message flags (SEEN, ANSWERED, FLAGGED) are remembered across sessions asN      they are stored in the mailfile with each message. In particular, SEEN isD      no longer set based on whether or not it's in the INBOX folder.  K   *  Full mailbox names are now properly supported (I.E. ---  ~/... format)o  J   *  Wildcard patterns are now supported on IMAP 'FIND' commands. WildcardN      characters are '*' (match any string), '%' and '?' (both match any single      character).  O   *  PINE's FCC (File Carbon Copy) option and the postponed messages option are       implemented.e  M   *  Improved caching of messages; access to messages is significantly fasterP	      now.h  7   *  Significantly less memory used to access messages.P     *  New logical names: B 	IMAPD_INBOXFOLDERNAME	Defines an alternative to "NEWMAIL" for the 				name of the INBOX folder.l  ? 	IMAPD_AUTOFILEINBOX	If defined, seen messages in the INBOX areT3 				automatically filed (moved) to the folder namedi/ 				by this logical when the mailbox is closed. 3 				Leave undefined for compatibility with previous9( 				releases or with standard PINE/IMAPD' 				functionality; define to "MAIL" for   				compatibility with VMS MAIL.  K         IMAPD_MAILPROTOTYPE	Defined to a dummy mail file so that the CREATE 1 				function can 'borrow' its FDL description for1, 				the new file. Accessed if the user's own0 				default mail file cannot be used. If neither3 				can be accessed, the CREATE function will fail.	  7   * Support for CMU in the SERVICE_SETUP.COM procedure.i  L   * Many internal debugging and tracing facilities now incorporated into theM     VMS MAIL driver. At log levels above 20, these write detailed info to thenN     logfile and also to the application's debug output). Note, use of this MAYL     generate invalid IMAP output so it is not advisable to set the debuggingJ     globally. Modules MUST be built with the LOGTRACE option otherwise theL     debug output is ineffective. For the network module, the option NETTRACE     must be used.i  L   * Additional keywords recognized as the start of RFC822 headers in the VMS     MAIL message._    1 Summary of changes that may affect configurationsX1 =================================================   N   * Prior to this release, FCC and postponement of messages did not work. ThisG     turned out to be because of the complexities of folder creation andrM     validity checking. Now that this has all been fixed up, FCC and postponedaI     messages work correctly. If these have been defined as recommended inEM     versions B10 and earlier, the configuration may now be changed to specifye     any arbitrary folder(s).    G   * Previously the IMAP FIND commands would ignore the wildcard mailbox	I     pattern and just list all folders in the default mail file. Now, thiscK     pattern is not ignored and only matching folders are listed. Any clientnN     using the IMAP server should be checked to make sure that it specifies theJ     appropriate wildcard mailbox format, otherwise a different set of mail)     folders may be displayed from before:   = 	FIND MAILBOXES pattern		Examines the contents of the mailbox ) 					subscription file, maintained by the0 					SUBSCRIBE MAILBOX and" 					UNSUBSCRIBE MAILBOX commands.  & 					NOTE that INBOX is always listed.    > 	FIND ALL.MAILBOXES pattern	Lists the folders contained in the 					specified MAIL.MAI file.      K     The above may alter the list of folders which PINE displays by default.     + Summary of major bugs fixed in this releasey+ ===========================================f  M   * PINE can now open multiple mailboxes (EG INBOX and the currently selected	>     folder) without clashing in their use of global variables.  0   * The IMAP SEARCH function now works properly.  <   * Handling of updates to new mail count now more reliable.  =   * IMAP MOVE/COPY function no longer returns inverted status   7   * Crash dumps now get copied to SYS$LOGIN:.PINE-CRASHa  =   * PINE now works in a subprocess. Previously it would hang..     GENERAL CHANGES: ================  K   * SERVICE_SETUP.COM : Added some fixes for the UCX stack setup. Thanks toT     Clive Mcdowell.a 								23-JAN-1997n  O   * IMAPD_SETUP.COM : Updated with an example of IMAPD_INBOXFOLDERNAME logical.u 								22-JAN-19979  J   * AAAREADME.TXT : Rewrote some sections of the install and configuration     notes to make them clearer.l 								21-JAN-1997e  J   * AAAREADME.TXT : Added notes on the .MAILBOXLIST file maintained by the/     subscribe and unsubscribe mailbox commands.t 								16-JAN-1996t  A   * AAAREADME.TXT : Added section numbering and a contents table.  								9-JAN-1997  O   * AAAREADME.TXT : Updated some details on the restrictions and bugs that have      been removed/fixed.  								8-JAN-1996  H   * AAAREADME.TXT : Added note about how INBOX-PATH variable affects the!     handling of the INBOX folder.P 								6-JAN-1996  J   * AAAREADME.TXT : Added documentation on the IMAPD_AUTOFILEINBOX logical	     name.  								3-JAN-1997  2   * AAAREADME.TXT : Added additional notes on CMU. 								2-JAN-1997  D   * SERVICE_SETUP.COM : Add a rudimentary section for the CMU stack. 								2-JAN-1997  O   * IMAPD_SETUP.COM : Updated with example of IMAPD_AUTOFILEINBOX logical name. I     Also added a note to each logical that can also affect either PINE orR     IPOP3D.b 								20-DEC-1996U  M   * AAAREADME.TXT : Added info on MAXBUF sysgen parameter, more on debugging,tK     info on upgrading an existing setup, and info on various considerationso/     needed before setting up a network service.  								20-DEC-1996e  5   * AAAREADME.TXT : Updated info on CMU configurationd 								11-DEC-1996   G   * AAAREADME.TXT : Added some details on nodename mapping via logicals9 								11-DEC-1996.  @   * AAAREADME.TXT : Added some notes on the debugging facilities 								10-DEC-1996P  N   * SERVICE_SETUP.COM : Fixed a silly bug caused by writing the wrong filenameN     into the configuration procedure created. Also fixed missing 'file= ' spec     in the UCX command.d 								10-DEC-19962  ;   * VMSBUILD.COM : removed extra ']' from a directory spec.e 								26-NOV-1996d   C-CLIENT LIBRARY CHANGES:i =========================e  I   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : The append function was writing thepH     message into the mail folder but not adding the transport prefix (EGJ     "SMTP%.."). Added the ability to determine the prefix from the logicalO     names and write the address in this format if one is found. Otherwise writeS     the address as is. 								24-JAN-1997P  D   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : According to the callable mailL     documentation, a mail file may not contain more than 256 characters in aO     single record. However, recently encountered a message where one record waseN     over 4000 bytes long. Can't handle this properly but added extra checks inN     the read routine to at least detect it when debugging is on (so we can seeI     which message it is). Discovered that the mail status returns are notfL     defined anywhere so, by trial and error, determined the status codes and     defined them manually. 								24-JAN-1997   N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : A few cleanup changes to make the moduleM     compile without error on GNU C. Mainly mismatched parameter declarations.u 								22-JAN-1997   J   * [.IMAP.ANSI.C-CLIENT]ENV_VMS.C : Added a cast to a use of cuserid() inM     order to make it compile error free under GNU C (the include files do not A     seem to define it as a function returning (char *) anywhere !) 								22-JAN-1997u  L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed a bug in the append routine thatM     was writing out data beyond the stored headers. Corrected the code to usenO     the size counter rather than expect the null string terminator (which isn't	     there!). 								22-JAN-1997L  K   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Changed the flag that says 'have beenIM     pinged' from an int to a bit and changed its name to 'pinged' rather thanw     TotalMessagesCount.i 								22-JAN-1997   A   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Many minor cleanup changes.s 								22-JAN-1997   J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : The create/append functions were notO     behaving when the folder did not exist. This was because VMS has no concept1K     of an 'empty' folder. Added some stuff to fake empty folders. Following N     this change, postponed messages and FCC work properly even when the folder     does not exist.d 								22-JAN-1997	  C   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : renamed a number of routines.d 								22-JAN-1997e  M   * [.IMAP.ANSI.C-CLIENT]VMSBUILD.COM : Added a long-standing missing /definesO     for the name STDPROTO. This allows the higher level driver function to know.M     that the standard prototype driver is the VMS_MAIL one. Without it, there2O     is no prototype driver and things nose-dive. This particularly affected theHL     mail_create routine; but seems to affect nothing else. Creating an empty%     mail file now works at long last.t 								17-JAN-1997m  N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added a 'vms_mail_folder_exists' routineJ     to simplify various places where we want to know if the folder exists. 								17-JAN-1997r  N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.H : Reduced the constant that determines theN     initial size of the mail stream LOCAL buffer. No real need to do so but it'     saves memory for smaller mailboxes.w 								17-JAN-1997r  N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Modified the 'vms_parse_mailbox' routineM     to accept NULL for output buffers (for cases where we don't actually needo     the result). 								17-JAN-1997u  M   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Modified the find_all routine to remove J     the specific check for 'POSTPONED-MSGS'. Matching changes to PINE haveN     made it look for this folder using the standard find mechanisms so no need     for a special check. 								16-JAN-1997   J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Combined routines to get informationF     about the current message into a single general 'get message info'O     routine. This is faster and cleaner than having a separate routine for each      item needed. 								16-JAN-1997   O   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added single character wildcarding to the G     matchwild routine. Both '%' and '?' now match any single character.t 								16-JAN-1997s    H   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Implemented the subscribe mailbox,K     unsubscribe mailbox, find mailboxes (which was previously equal to findEJ     all.mailboxes) commands. These maintain and use a mailbox subscriptionE     database file called SYS$LOGIN:.MAILBOXLIST (a simple text file).n 								15-JAN-1997     M   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Implemented the code to CREATE an emptyoG     MAIL file. This works by using FDL$GENERATE to get the format of an H     existing mail file (either the user's default mail file, or the fileI     specified by the new logical name IMAPD_MAILPROTOTYPE) and then usingdG     FDL$CREATE to generate a new one. However, for some reason (not yetiM     determined), the vms_mail_create routine never seems to get called by theeA     application, and the status of a CREATE command is always OK.B 								14-JAN-1996C    J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Restructured VMS MAIL header parsing+     routines to be cleaner and work better.  								14-JAN-1997r  L   * [.IMAP.ANSI.C-CLIENT]VMSIO.C : Removed the single character tracing codeA     from the VMSIO.C module. It's too verbose for real debugging.a 								13-JAN-1997c  I   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added 'chrcasecmp' and 'strcasecmp'EK     function to allow case independent character and string equality tests.l 								13-JAN-1997t    M   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added the vms_mail_append routine. This O     implements the IMAP APPEND function and allows messages to be copied into am     mailbox from the network.e 								10-JAN-1997     N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Now that the message flags are picked upO     from the mail file itself, the NEW status of a message cannot be determinedkM     by its presence in an INBOX. This causes some confusion about whether the E     new mail count can be updated. Now, the new mail count is updated7O     immediately that the message is read based on whether it's now seen but waseJ     not previously seen. This is handled within the vms_mail_update_status&     routine. It is folder independent. 								9-JAN-1997  K   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : I believe that implementation of fullaN     mailbox name specifications is now complete so the ALLOWFULLMBXSPEC optionO     has been removed and such specifications are always allowed everywhere now.  								9-JAN-1997  E   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added the ability to define thelO     folder name to which INBOX maps. By default it is "NEWMAIL". An alternativeaO     folder may be specified by defining the logical name IMAPD_INBOXFOLDERNAME.nK     Note that this controls only how the VMS_MAIL interface interpretes the.I     mailbox name INBOX and has nothing to do with the setting of the PINEA     variable 'Inbox-Path'. 								9-JAN-1997  L   * [.IMAP.ANSI.IMAPD]IMAPD.C : Removed the call to mm_exists() added to theL     IMAPD application a long time back since it was only added to compensateJ     for what now turns out to be a missing call to mail_exists on the open     routine (see below). 								9-JAN-1997  K   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added a missing call to mail_exists()lI     in the mail stream open routine, so that the application is correctlyr(     notified of the number of messages.  								9-JAN-1997  M   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Reworked the message caching yet again.OO     Both headers and text body are now cached after the first read of a messageiN     from the mail file. Subsequent reads of the message (headers or text body)L     are taken from the cache. The cache is only flushed when the mail stream     is closed. 								9-JAN-1997  H   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed up a major bug in the SEARCHO     subfunctions. Each routine assumed that the message information had alreadyhO     been read into memory. It hadn't, so erroneous results were returned. Fixed-N     this by ensuring that a fetchstructure is done before starting the search.J     A side effect of this is to introduce a long pause on the first searchK     while the whole folder is read in. If no search is done, the closing ofAO     an INBOX takes longer because this reads in all messages in order to searchh      for SEEN UNDELETED messages. 								8-JAN-1997  K   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Sorted out some bugs with the messagetK     status flags maintenance. It now remembers the flags across sessions byEL     using callable mail's flags field (marked and replied). Also pick up theO     new mail flag from the same place, so that messages can be truly flagged asSN     new or seen, regardless of whether they are in the INBOX or not. Note thatN     the documentation for callable mail does not mention that the NEW flag may@     be set or unset within callable mail - but it seems to work.L     NOTE: A side effect of this change is that the update_status routine hasM     been implemented. This appears to be called for EVERY message in a folder H     when that folder is closed and results in a long pause if the folder     contains many messages.s 								8-JAN-1997    N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Reworked the folder listing code so thatF     we can pass parameters to it (like a wildcard pattern). Also addedL     rudimentary pattern matching (IE * is allowed anywhere). The output fromI     the IMAP FIND commands now contains only mailbox names that match the=J     pattern. Note that the mailfile portion of the pattern may not contain6     wildcards - only the foldername part. For example:   	*		} 1         mail*		}  All are valid wildcard patternss         *faq		}         ~/mail/xyz*	}              But:D 	~/*/newmail	}  Invalid because the mail file part may not contain a 	~/mail*/jo*	}  wildcard  L     Additionally, the mailbox name is now fully lowercased before passing it,     back to the application, INBOX excepted. 								7-JAN-1997  M   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Modularised and tidied up more code. No,@     new features, it's just easier to follow in some places now. 								7-JAN-1997  I   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added first attempt to retrieve and J     maintain the message flags (new, marked, replied etc.) in the VMS MAILJ     file. The current ones are now correctly displayed but PINE hasn't yetE     got the hang of updating them so it remembers them for next time. L     Implemented the vms_mail_update_status routine to do all this (which wasM     there before but did nothing!). Also added a new routine to get the flagsi,     from the mailfile when it's first read.  								7-JAN-1997  N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : If the INBOX (IE VMS NEWMAIL folder) hadN     been open for some time, the newmail count it obtained when it started mayN     no longer be accurate. Therefore when updated on closure of the inbox, theM     system's new mail count for the user might be incorrect. Fixed this up byiI     obtaining the current new mail count just prior to updating it by thedN     number of seen messages. This makes it as accurate as it can be within the4     normal timing windows of getting and setting it. 								6-JAN-1997    N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed up the 'is_rfc822' routine so that/     it does not assume null-terminated strings.	 								6-JAN-1997  E   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Renamed vms_split_message to beCL     vms_read_message; used the LOCAL->buf structure as the temporary messageO     buffer (also reduced its default size from 65000 to 25000 bytes); moved theeM     caching into vms_read_message and removed a few unnecessary memory bufferuP     copies. I hope this will make access to the message text quite a bit faster. 								6-JAN-1997  O   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Removed the global message cache; made ittG     local to the mailstream instead. This should remove the last set of /     potential conflicts between open mailboxes.h 								3-JAN-1997  J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : added additional keywords that couldA     indicate the start of RFC822 headers after the VMS MAIL ones: N     read-receipt-to and x-authentication. Also added test for headers normallyI     associated with newsgroups, to deal with mail posted via a newsgroup.  								3-JAN-1997  L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Converted all mail and message contextN     references either to local variables or to references to the LOCAL copies.F     Removed all the global versions and stuff relating to stacking and     unstacking the context.s 								3-JAN-1997    F   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Made the VMS_MOVE_FOLDER routineH     redundant by recoding other routines that call it to use alternativeL     methods. This was necessary because it was the ONLY routine that did notL     have sufficient context info passed to it. As such, we needed to rely onP     global context, causing bugs galore. Now it's gone, all the context info can;     be stored and used from the mailstream LOCAL structure.h 								3-JAN-1997  H   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Begin to remove the use of globalsM     for mail and message context. Started by initializing them into the LOCAL.J     structure and passing the context as parameters to subsidiary routinesK     where possible. The procedure vms_move_folder, which was added to allowyM     PINE to do special things, is a problem because it has no means to obtain=L     the original mail context, therefore we have to keep the global variable     around until this is fixed.	 								3-JAN-1997  H   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : reworked the ping function so thatF     the global 'TotalMessagesCount' is removed and becomes part of theK     LOCAL structure. Unexpected pings should not now mess up message counts E     for another mailstream. Removed all the related global variables.E 								3-JAN-1997  N   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Rewrote the vms_split_message routine toL     be more structured. Also remove dependence on null terminated strings soC     that mail messages may now contain null bytes without problems.e 								3-JAN-1997  J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Removed all references to the global8     'Globalmailfile' as rewrites have made it redundant. 								2-JAN-1997  J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added more checking to the 'isvalid'(     routine and more debug tracing code. 								2-JAN-1997  L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Now keep the parsed mail file name andO     folder name in the LOCAL structure rather than reparsing it each time, alsoeJ     use the 'inbox' flag in the LOCAL structure correctly. The test for anO     inbox is no longer reliant on the folder name everywhere - this flag is setaL     by the mailbox name parser and stored in the LOCAL structure. It is TRUEH     only when the mailbox name is "INBOX" or if the parsed result is the,     "NEWMAIL" folder in the default mailbox. 								2-JAN-1997  K   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.H : Moved some defines from VMS_MAIL.C toeJ     here; also updated the VMSMAILLOCAL structure to include space for theM     parsed filename and foldername, the mail/message context and the count ofnD     current messages. Made provision for storing the cache here too. 								2-JAN-1997  L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added the ability to configure whetherI     SEEN messages in INBOX are automatically filed away to another folderaN     on closure. This is controlled by the logical name IMAPD_AUTOFILEINBOX. IfL     not defined, messages are left in INBOX, otherwise they are moved to the)     folder specified by the logical name.o 								20-DEC-1996a    J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added more debugging code to various
     routines.i 								20-DEC-19961    F   * [.IMAP.ANSI.C-CLIENT]TCP_VMS.H : A problem with CMU has been notedJ     whereby the value of the BUFLEN constant, at 8192, causes CMU to fail.O     First fix was to drop the value to 4096 but then realized it was actually aMI     SYSGEN problem. The value of MAXBUF should be set to at least that ofEM     BUFLEN and, in any case, the recommended value for CMU is 8300 so put theSN     value of BUFLEN back up to 8192. Thanks to Sterling Bjorndahl for spotting     the problem. 								20-DEC-1996G    K   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Recognized additional keywords as the N     start of RFC822 headers following the VMS MAIL standard set. This helps toO     prevent problems when these headers appears as the first line of the RFC822 J     headers. Ideally, we should add all known headers here, although it isO     likely impossible to cater for all possible 'X-...' headers. Thanks to Alanr     Flavin for noting this.  								19-DEC-1996y  I   * [.IMAP.ANSI.C-CLIENT]VMSIO.C : Fixed up a tiny bug whereby the formatrN     code for printing a status code in the logfile was set to '%0x08x' insteadM     of '0x%08x'. This caused apparently incorrect status output. Non fatal toe     everyone though. 								10-DEC-1996t  H   * [.IMAP.ANSI.C-CLIENT]VMSBUILD.COM : removed USELOGGING and MAILTRACE6     options, replaced them with NETTRACE and LOGTRACE. 								10-DEC-1996o    L   * [.IMAP.ANSI.C-CLIENT]TCP_VMSx.C : reworked the logging code slightly. ItL     now requires compilation under the NETTRACE define. I couldn't make thisJ     work via debugging, as described for VMS_MAIL below, because the debugK     output recurses back into the tcp routines and causes problems. Added ah%     DBGPRINT macro to make it easier.M 								10-DEC-1996M    L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : reworked the debugging code to use theO     mm_dlog facility. This causes debug output to go to PINE's debug file or topK     the IMAPD logfile and as unsolicited response codes to the client. Only9L     printed if the code is compiled with the LOGTRACE option (which replaces=     the MAILTRACE). Added a DBGPRINT macro to make it easier.' 								10-DEC-1996   O   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : If the nodename mapping logicals were not.M     defined, a bug caused the translation of node::user style of addresses toED     be reformatted into an invalid RFC address. This has been fixed. 								10-DEC-1996e  J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : updated the chkstat routine to writeK     the error message via mm_dlog if not aborting, rather than use fprintf.e 								10-DEC-1996l  L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed a major bug whereby the updatingO     of the new mail count updated the wrong user. We hadn't added the parameter O     that specifies which user to update so it updated the current user. If that O     happened to be the IMAPD daemon running as SYSTEM, then SYSTEM's mail count L     got updated. It was OK within PINE because the current and intended userM     are the same. Thanks to David Mathog for spotting (and suggesting the fixh     for) that one. 								9-DEC-1996  M   * [.IMAP.ANSI.C-CLIENT]NEWSRC.C : Fixed two problems.  a backup copy of the I     .newsrc file was being created with a name of .newsrc.old; as this ismL     invalid on VMS, change the name to .newsrc-old.  Also deleted a previousM     copy of the backup so avoiding the accumulation of more and more versionsM     of it over time. 								28-NOV-1996s  L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : The IMAP COPY function was returning aJ     failed status even though the copy worked. This was due to an invertedM     status check on return from the call to vms_mail_message_copy. Fixed this      up.  								26-NOV-1996r     PICO CHANGES ============  M   * [.PICO]OS_VMS.C : Attempted to make use of the POPEN and PCLOSE functionsSJ     in DEC C (not available with VAX C) but ran into trouble with them notE     being recognized by the compiler (!) yes, that's right - they ARErO     documented but are NOT in the RTL (at least not with VMS 6.1!). So, insteadcM     I've ifdef'ed the code with a HAVEPOPENCLOSE name. Once we find out underiN     what conditions they are available, the build procedure can be modified toB     define it accordingly. At the moment it is not defined at all. 								17-JAN-1997r     PINE CHANGES ============  L   * [.PINE]TTY_VMS.C : Installed patch to make PINE work when started from a8     subprocess (EG SPAWN PINE). Thanks to Phil Ottewell. 								22-JAN-1997e    H   * [.PINE]OS_VMS.C : When attempting to write the crash dump file, pineL     compared the struct stat elements 'st_dev' from two different calls (oneO     from fstat and one from stat) for equality. Unfortunately, these are stringnN     pointers and strcmp should be used to test for equality. Having done this,     we now get a crash dump! 								20-JAN-1997     L   * [.PINE]SEND.C : Put back the code to deal with the POSTPONED-MSGS folderO     as all the changes made to folder handling should make this work (it does!)m 								16-JAN-1997u  L   * [.PINE]OS_VMS.H : Changed the DF_MAIL_DIRECTORY from SYS$LOGIN: to null.M     Now all folder names should be treated as folders within the default mail,M     file and found if they exist. Removes the need for a special check in thesL     find all mailboxes routine of the c-client library (see above). However,M     I'm still not getting the composer's 'postpone' option to work. The debug C     trace shows the folder being found, but it's not being written.d 								16-JAN-1997	  L   * [.PINE]MAILCMD.C : Managed to do away with the need for the special callI     to VMS_MOVE_FOLDER when saving a message to another mailbox. This wasgK     always problematic because the callable mail context variables were notcL     available resulting in some messy (and buggy) fiddling about with globalK     contexts. Now this is OK, we can remove the only routine that relies onEL     globals for the message context and keep everything where it belongs, in*     the LOCAL structure of the mailstream. 								3-JAN-1997    =   * [.PINE]PINE.H : Changed version string to reflect Beta 11A 								26-NOV-1996.  ( 3.91 Beta 10 - Changes since 3.91 Beta 9( ----------------------------------------   C-CLIENT LIBRARY CHANGES:t =========================c  J   * [.IMAp.ANSI.C-CLIENT]TCP_VMSL.C : Fixed a strange bug where the serverF     code tried to accept a call from the wrong port, but only when theO     underlying stack was CMU. It worked fine on UCX and MULTINET. This appearedsO     to be caused by the initialization of a socket structure to set up the portlO     being corrupted. Couldn't find the bug specifically but re-ordered the codeeO     and it went away! I'll keep trying to find the underlying cause but for nowt     it works (or seems to).i 								22-NOV-1996v  K   * [.IMAP.ANSI.C-CLIENT]VMSBUILD.COM : Now that the TCP module is separate9K     and includes it's own stack-specific headers directly, there is no need G     to add /include=(stackpath) to the compilation line. This makes allnJ     modules, with the exception, of the TCP_VMSx.C one, stack independent.&     Modified VMSBUILD.COM accordingly. 								20-NOV-1996I  K   * [.IMAP.ANSI.C-CLIENT]OS_VMS.H : Reworked headers to minimize conflicts.  								19-NOV-1996N  N   * [.IMAP.ANSI.C-CLIENT]OS_VMS.C : Remove the include of TCP_VMS.C as part ofN     the separate compilation changes. Also reworked the header files to try to     minimize conflicts.y 								19-NOV-1996   O   * [.IMAP.ANSI.C-CLIENT]TCP_VMSx.C : Separated the TCP modules into separatelytN     compilable ones so that socket headers can be made specific. This avoids a8     lot of problems caused by incompatible header files. 								19-NOV-1996h  L   * --- C-CLIENT library now compiles under GNU C, not entirely cleanly, but
     it works!  								18-NOV-1996L  ?   * [.IMAP.ANSI.C-CLIENT]VMSIO.C : Added missing declaration ofh     tcp_server_init routine. 								18-NOV-1996s  M   * [.IMAP.ANSI.C-CLIENT]*.* : Miscellaneous changes to make the VMS portionsaL     of the code compile more cleanly under GNU C. Still getting warnings but2     it works now. The following changes were made:8        env_vms.c	Add include unistd.h to declare cuserid;        log_vms.c	added casts to structure initialization int/ 			server_login() to fix pointer compatibility.n=        os_vms.c		Added ifdef around socket includes for GNU Cd5 			and added a struct definition for timeval as GNU C 1 			finds it in two incompatible places otherwise. C        vms_mail.c	many pointer mismatches fixed up, and conflictingh6 			static/non-static declarations matched up properly. 								18-NOV-1996X    L   * [.IMAP.ANSI.C-CLIENT]VMS_TCPL.C : Add support for GNU C.  GNU C does notN     recognize some non-standard definitions in netlibdef.h (variant struct andN     variant union). Got around this by copying the declarations we need inline.     (still use the real include if not GNU C).M     This makes the GNU C support prone to breaking due to changes in a futureaN     release of NETLIB (This version is 2.0J) but is a small price to pay if it
     works. 								18-NOV-1996e  H   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : The VMS MAIL headers include SUBJ.M     However, the rfc822 parser does not recognize this as a subject field, soaK     pine's index display and headers on messages show a blank field for theeF     subject of any message received via VMS/DECNET mail. Fixed this by-     rewriting the 'SUBJ' header as 'Subject'.a 								15-NOV-1996d    L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Modified the VMS mail to RFC822 headerN     conversion routines to properly deal with the unquoted '@' form of addressN     introduced in VMS 6.2 (and available on earlier VMS via unofficial patchesN     to VMS MAIL).  Now an address of the form 'user@system' is left untouched. 								15-NOV-1996o    O   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : When a message has been sent and receivediH     locally via VMS MAIL, the mail headers on the message are simply theJ     standard VMS MAIL headers (FROM, TO, CC, SUBJ).  The code parses theseK     and converts addresses to an RFC822 syntax. However, the lack of a date*I     field causes some problems when PINE wants to display the date in thejK     folder index list. Got around this by extracting the date of receipt ofbL     the message and adding a date field with this date in it. Also store the     date in the elt. 								14-NOV-1996   H   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Modified the vms address parser toI     recognize the form  xyz%"....."  and just return the ..... part. ThisLM     should deal with MOST (not all) smtp style addresses that VMS sees in itseK     FROM, TO and CC headers. There are still a few formats that will returnsO     funny address (EG: DSN%xxxxx) but it's a good start. I may make it possibleeG     to use logicals to remap the addresses based on the XYZ part later.t 								14-NOV-1996o    O   * [.IMAP.ANSI.C-CLIENT]OS_VMS.C : ifdef'ed the include of some of the network D     files to do different things for GNU C (which doesn't handle the)     <xyz/name.h> syntax the way we want).M 								7-NOV-1996    L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed a few odd problems that were not'     spotted in time for the B9 release.  								4-NOV-1996     PICO CHANGES ============  E   * [.PICO]OS_VMS.C : A few mods to declarations to clean up compiler.!     warnings on mismatched types.h 								18-NOV-1996u  K   * [.PICO]COMPOSER.C : Removed incorrect filename separator character fromtH     a filename. Due to unix/vms filename differences. Thanks to Sterling     Bjorndahl. 								12-NOV-1996   K   * [.PICO]ATTACH.C : Allowed the characters '[' and ']' in the filespec ofh:     an attachment under VMS. Thanks to Sterling Bjorndahl. 								12-NOV-1996.   H   * [.PICO]DISPLAY.C : Added a 'movecursor' call which seems to fix up aJ     display problem. Maybe a bug in VAXCRTL? Thanks to Sterling Bjorndahl. 								12-NOV-1996f  L   * --- PICO now compiles, error free, with GNU C !! Still a few warnings to
     clear up.  								12-NOV-1996o  H   * [.PICO]ANSI.C : Added an include for gnu_hacks header so that we canH     use the special GNU C GLOBALDEF macro (globaldef isn't understood byD     GNU C). Thanks to Sterling Bjorndahl. Also slightly reworked the&     ifdef sequence to make it clearer. 								12-NOV-1996t  H   * [.PICO]EDEF.H : Added an include for gnu_hacks header so that we canG     use the special GNU C GLOBALREF macro as globalref isn't understoodeL     by GNU C. Thanks to Sterling Bjorndahl. Also slightly reworked the ifdef      sequence to make it clearer. 								12-NOV-1996y     PINE CHANGES ============  O   * [.PINE]VMSBUILD.COM : Now that the TCP module is separate and includes it's.@     own stack-specific headers directly, there is no need to addN     /include=(stackpath) to the compilation line. This makes all modules, withE     the exception, of the TCP_VMSx.C one, stack independent. Modified      VMSBUILD.COM accordingly.	 								20-NOV-1996   J   * [.PINE]VMSBUILD.COM : It appears that the GNU C link loses some globalL     information if the modules are retrieved from a library. This caused theN     initialization of the mail drivers to fail weirdly.  Modified VMSBUILD.COMN     to link the modules explicitly rather than fetch them from the library. It!     now appears to work properly.e 								18-NOV-1996o  :   * --- PINE now compiles reasonably cleanly under GNUC !! 								18-NOV-19969    O   * [.PINE]TTY_VMS.C : Corrected definition of get_windsize() function to matcho     declaration. 								18-NOV-1996i  I   * [.PINE.OSDEP]SENDMAIL_VMS. : Added some missing function declarationsr(     to get a cleaner compile under GNUC. 								18-NOV-1996r  H   * [.PINE]OS_VMS.C : Various mods from Sterling Bjorndahl incorporated;M     fixes up a problem writing the crash dump and gives a cleaner compilation,     under GNU C. 								18-NOV-1996a  G   * [.PINE]OS_VMS.H : Added suitable #ifdef so that both GNUC and DEC CAH     are flagged as ANSI compilers. Thanks to sterling Bjorndahl for the      GNU C mods.C 								18-NOV-1996b  A   * [.PINE]PINE.H : Updated the version string to reflect Beta10.n 								4-NOV-1996     GENERAL CHANGESe ===============o  E   * AAAREADME.TXT : Added a short note to the stack information aboutAE     configuring CMU to fire up the imapd server when a call comes in.  								22-NOV-1996l  N   * VMSBUILD.COM : Removed all remaining references to stack specific includesL     and added the OPTIMIZE option. Optimization is off by default because itM     can cause erratic behaviour, due to optimizer bugs. This option allows it'K     to be switched on if you are sure that your compiler's optimizer is ok.- 								21-NOV-1996d  N   * INSTALL.COM : Added this procedure to copy executables to the right place,F     after first checking that the necessary logical names are defined. 								20-NOV-1996d  O   * AAAREADME.TXT : Added new RESTRICTIONS and PRE-REQUISITES section; fixed a  ;     few typos and missing definitions in the setup section.e 								20-NOV-1996o  L   * PINE_SETUP.COM : The f$getsyi("ARCH_NAME") lexical was not present priorI     to VMS 5.5 so inserted a check for this. Default to "VAX" if earlier.  								12-NOV-1996   M   * IMAPD_SETUP.COM : The f$getsyi("ARCH_NAME") lexical was not present priorlI     to VMS 5.5 so inserted a check for this. Default to "VAX" if earlier.e 								12-NOV-1996M    F   * VMS_GNUC_LINK.OPT : Create a linker options file for GNU C support 								10-NOV-1996s  G   * USER_SETUP.COM : Added a procedure to create a user under which the L     servers can run. Thanks to Ian Miller of softel for the UCX information. 								10-NOV-1996A  C   * SERVICE_SETUP.COM : Added a procedure to create the TCP serviceEN     configuration for the IMAPD daemon. Thanks to Ian Miller of softel for the     UCX information. 								10-NOV-1996e  B   * AAAREADME.TXT : Updated documentation with better installationL     instructions. This time, included more comprehensive notes on setting up.     the underlying network stack and services. 								7-NOV-1996    I   * VMSBUILD.COM : Rewrote the procedures to be cleverer at detecting the M     compiler and network stack to use automatically, and to check the network N     and compiler selection options for validity a lot better. Also, first stabO     at incorporating support for GNUC (very difficult as it wont recognize somelL     of the NETLIB declarations and has trouble finding socket related header     files).e 								7-NOV-1996 C' 3.91 Beta 9 - Changes since 3.91 Beta 8E' ---------------------------------------r   C-CLIENT LIBRARY CHANGES:r =========================G  J   * [.IMAP.ANSI.IMAPD]IMAPD.C : Thanks to Matt Madison of Process SoftwareJ     for finally stomped on the accursed bug that prevented the server fromL     accessing the network when compiled with VAXC. It turns out that networkM     applications must set up their channels to the network BEFORE any other CuK     RTL I/O. I thought this had been done but forgot that there's a call toaO     fopen() to set up the logfile BEFORE the call to openio() to initialize theSK     network. This was done so that openio() could log its actions. Now thatiO     I've moved things around, the server works but logging from within openio()T     is no longer possible. 								1-NOV-1996    I   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Implemented mail_move and mail_copyL     functions. 								1-NOV-1996    I   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed a minor bug in VMS_MAIL which	N     prevented calls to 'islower' rtl function being found with VAXC. This is aB     macro under VAXC and so needs an include of ctype.h. Added it. 								31-OCT-1996     K   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added code to make the mail_fetchfast E     routine work, Quick and dirty, it just calls mail_fetchstructure.e 								31-OCT-1996c    E   * [.IMAP.ANSI.C-CLIENT]VMSBUILD.COM : Added two additional options:V;     MAILTRACE: to compile in the vms mail tracing code, andoM     ALLOWFULLMBXSPEC: to compile in support for arbitrary mailboxes specified I     using the ~ format. These options are available only for the C-clientr     build procedure. 								31-OCT-1996R    H   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : added some additional tracing codeB     to follow the mail file/folder open and close actions. This isL     conditionally compiled in when /DEFINE=MAILTRACE is specified at compile&     time. trace output goes to stderr. 								31-OCT-1996r  K   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : PINE keeps INBOX open all the time so9M     it is necessary to support several independent open streams (at least twoe"     for IMAPD and three for PINE).N     The existing code doesn't support this and we get very confused if foldersM     are opened and closed successively. Attempt to provide better support forw7     this by allowing a small stack of context pointers.aI     This should now allow PINE to switch properly between INBOX (which is G     kept permanently open), a folder list, and any other folder withouteL     disaster. Just to play safe I've made room for 5 stacked sets of contextI     info and added checks for stack over and underflow. I may have brokennN     the inbox ping function however as I'm still not sure how this is supposed#     to work (see KNOWN BUGS above).r 								31-OCT-1996y    L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Modified the mail_close routine to NOTK     move \SEEN messages from NEWMAIL to MAIL. Although this is how VMS MAILoM     does it, it is NOT how PINE on other systems works and is less intuitive.nJ     NOTE that this also applies to the IMAPD and IPOP3D servers - messages'     remain in the INBOX unless deleted.t 								30-OCT-1996s    M   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added date parsing, even for non-rfc822 L     format messages by calling the MAIL$ routine to get the date. PINE stillG     seems unable to display the date in the folder index for non RFC822e     messages though. 								30-OCT-1996u  O   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Made the support for '~' format mailboxestD     conditional on the ALLOWFULLMBXSPEC define. This is because fullI     implementation of this is some time away - it needs a rewrite of this M     module and some features we need are not present in callable mail (createu%     empty mailbox, append to folder).a 								30-OCT-1996r  K   * [.IMAP.ANSI.C-CLIENT]VMSBUILD.COM : Added /include=[] when the null tcpd     stack was selected.7 								29-OCT-1996C  O   * [.IMAP.ANSI.C-CLIENT]TCP_VMSN.C : Fixed a bug in the null tcp stack supporte&     which had a 'then' after an 'if' ! 								29-OCT-1996h    <   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added the logical nameH     MAIL$INTERNET_PROTOCOL (usually defined in VMS 6.2)  as one of thoseE     examined to define the SMTP transport when sending a message. Theo3     logical name PINE_MAIL_PROTOCOL overrides this.s 								9-OCT-1996  J   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Improved the VMS MAIL header parsingE     code which remaps based on logical names to take into account anya@     namespace that appeared (this is for DECnet/OSI addressing).  7     An address of the form:			(DECnet Phase V format..)d!         NAMESPACE:.NODENAME::USER   !     is now converted to the form:_         USER@ADDRESS  C     where ADDRESS is obtained, in order, from one of the following:hL         - Translation of the logical name  IMAPD_NODE_'namespace'_'nodename'         - The original NODENAMEa    8     An address of the form:			(DECnet Phase IV format..)         NODENAME::USER  !     is now converted to the form:i         USER@ADDRESS  C     where ADDRESS is obtained, in order, from one of the following: @         - Translation of the logical name  IMAPD_NODE_'nodename'         - The original NODENAMEl    2     An address of the form:			(No DECnet format..)         USER  !     is now converted to the form:e         USER@ADDRESS  C     where ADDRESS is obtained, in order, from one of the following:g. 	- Translation of the logical name  IMAPD_NODE         - The current hostname  	     NOTE:tO       This affects messages returned by the IMAPD and IPOP3D daemons, and localb       mail read by PINE.  	     NOTE:tJ       This is a CHANGE from the previous beta release, where the namespaceM       was IGNORED. If you had namespaces before and used logicals of the formnL       IMAPD_NODE_'nodename' to remap addresses, you MUST now use logicals ofH       the form IMAPD_NODE_'namespace'_'nodename' to specify the mapping.M       For most users, this is probably just a matter of adding the word LOCALtO       into the logical name (since LOCAL is the most common default namespace).  								3-OCT-1996    I   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Corrected the 'is_valid' routine toeH     return T only if the mailbox name parses correctly. previously, thisJ     routine always returned T (and, for some reason, called gethostname!).  K   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : More rewrites to tidy up the handlingvE     of mailboxes. In particular, defined the syntax of a mailbox mores*     precisely. The following are accepted:  ?          INBOX		--> selects [default mail file, NEWMAIL folder]a:          folder		--> selects [default mail file, 'folder']  F          ~/folder	--> selects [mail file in login directory, 'folder']L          ~/subdir/folder--> selects [mail file in relative subdir, 'folder']  M     The file used is always called MAIL.MAI and must existed in the specified A     directory. Mail files with any other name are not accessible.s  O     This change brings the mail folder syntax into line with unix imapd serversrL     and prevents users accessing any mail folder outside their own directory0     tree (a big problem with previous releases!)  O     NOTE: This change affects the syntax of a folder collection. previously theiN     form SYS/[] was allowed and this found all folders in the default mailbox.N     In fact the SYS syntax was a dummy and ignored. Now it MUST NOT be present.     due to the redefinition of mailbox syntax.  L     NOTE: a syntax involving any non-default mailbox does not currently workL     correctly within PINE for anything other than reading. Attempts to save,@     rename etc. will likely go awry. Much more work needed here. 								3-OCT-1996  L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Extensive rewrites to tidy up the codeH     and fix bugs in determining the user's default mail directory. Added5     a routine to parse a mailbox and insert defaults.r 								1-OCT-1996  L   * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added a routine to check for an rfc822H     header and a general routine to parse the message body and split outL     the headers and text. This code was duplicated in several places and was     very messy.n 								30-SEP-1996a     IMAPD CHANGES: ==============  G   * [.IMAP.ANSI.IMAPD]IMAPD.C : Modified the client to use the original I     mailbox spec supplied by the user. Previously it had been modified toeN     overcome the limitations of the VMS_MAIL interface module. Now all parsingM     of a mailbox name is done within VMS_MAIL, where defaults are inserted asf     necessary. 								3-OCT-1996     IPOPD CHANGES: ==============  J   * [.IMAP.ANSI.IPOPD]IPOP3D.C : Modified the client to use the fixed nameL     INBOX. Previously it needed to use the '(dir)newmail' syntax to get overJ     the limitations of the VMS_MAIL interface module. Now all parsing of aJ     mailbox name is done within VMS_MAIL.C, where defaults are inserted as     necessary. 								3-OCT-1996    O   * [.IMAP.ANSI.IPOPD]IPOP3D.C : Added calls to the mail_fetchstructure routinexN     in order to make sure that the size counts are up to date. Previously theyP     had assumed that the rfc822_size field was uptodate and correct (it wasn't). 								3-OCT-1996    
 PINE CHANGES:e
 =============u  B   *  [.PINE]OS_VMS.C : Changed case of calls to LIB$FIND_FILE and L      LIB$FIND_FILE_END to match declaration. This causes VAXC a headache and!      gives a compilation warning.. 								11-OCT-1996o  N   *  [.PINE]OS_VMS.H : Changed the default debug level from 9 to 2. Don't know.      how this got changed but 9 was excessive. 								9-OCT-1996    G   *  [.PINE]IMAP.C : Added a special entry point to mm_login (-1) whichsL      retrieves the current username. This is necessary because, unlike unix,J      the IMAPD server does not change its username after a login. Thus theO      VMS_MAIL interface has to obtain the username using the mm_login callback.tJ      Unfortunately, PINE's one doesn't do the right thing, hence this fix! 								4-SEP-1996    ?   *  [.PINE]PINE.H : Updated version string to indicate beta 9.  								30-SEP-1996d     GENERAL CHANGES: ================  L   * AAAREADME.TXT : Added some info on known bugs, VMSBUILD compile options,-     additional notes on miscellaneous things.t 								31-OCT-1996C    O   * AAAREADME.TXT : Added some blurb about the differences between unix and VMSND     mailboxes and the interpretation of the standard mailbox syntax. 								9-OCT-1996    N   * AAAREADME.TXT : Updated the documentation with info on the IPOP3D startup,K     the new mailbox standard formats and the new logical name translations.d 								4-OCT-1996    I   * IMAPD_SETUP.COM : Added details of the new logicals with some example      definitions. 								4-OCT-1996    N   * VMSBUILD.COM : Redefined P2 to be a list of modules to be recompiled. ThisN     allows selected modules only to be built during development. If blank, the:     whole set of modules making up the item is recompiled. 								1-OCT-1996    N   * VMSBUILD.COM : Merged the DEBUG option into the P1 option list and removedO     all special code dealing with CTYPE and readonly (not needed anymore). ThiseJ     latter stuff caused compilation problems with the multinet stack under	     VAXC.T 								30-SEP-1996h c' 3.91 Beta 8 - Changes since 3.91 Beta 7 ' ---------------------------------------n   C-CLIENT LIBRARY CHANGES:1 =========================Y  O   *  [.IMAP.ANSI.C-CLIENT]VMSIO.C : Added a 'special_puts' routine to interceptaD      'puts' calls for the network. Implemented for the IPOP3 server. 								27-SEP-1996m    J   *  [.IMAP.ANSI.C-CLIENT]VMSIO.C : Added a check on the LOG macro; if notJ      defined, define it to do nothing (in case user program has not set up      logging). 								27-SEP-1996N    E   *  [.IMAP.ANSI.C-CLIENT]VMSIO.C : Fixed up a bug in the size of thetE      input buffer. It was one too small and didn't leave room for thee      terminating null. 								27-SEP-1996I    K   *  [.IMAPD.ANSI.C-CLIENT]TCP_VMSL.C : Added the tcp_clienthost routine tocL      get the name of the calling host. This returns, in order of precedence,G      one of:  calling system name, calling system address or "UNKNOWN".  								26-SEP-1996	  M   *  [.IMAP.ANSI.C-CLIENT]TCP_VMSM.C : Various minor problems fixed up in the       MULTINET interface. 								25-SEP-1996'    M   *  [.IMAP.ANSI.C-CLIENT]TCP_VMSL.C : Various minor problems fixed up in the(      NETLIB interface. 								25-SEP-1996s    I   *  [.IMAP.ANSI.C-CLIENT]TCP_VMSN.C : Modified the 'get_local_host_name'.<      routine to call mylocalhost and avoid code duplication. 								25-SEP-1996U    I   *  [.IMAP.ANSI.C-CLIENT]TCP_VMSL.C : Modified the 'get_local_host_name't<      routine to call mylocalhost and avoid code duplication. 								25-SEP-1996     I   *  [.IMAP.ANSI.C-CLIENT]TCP_VMSM.C : Modified the 'get_local_host_name'x<      routine to call mylocalhost and avoid code duplication. 								25-SEP-1996r    K   *  [.IMAP.ANSI.C-CLIENT]TCP_VMSL.C : Added a routine (tcp_server_init) toGM      the NETLIB interface to set up a TCPSTREAM for the standard I/O channelsf;      allocated by netlib when started by the master server.	 								24-SEP-1996.    K   *  [.IMAP.ANSI.C-CLIENT]TCP_VMSM.C : Added a routine (tcp_server_init) toaO      the MULTINET interface to set up a TCPSTREAM for the standard I/O channelsu=      allocated by multinet when started by the master server.o 								24-SEP-1996h    H   *  [.IMAP.ANSI.C-CLIENT]TCP_VMSL.C : Modified NETLIB interface modulesA      to support NETLIB 2.0 (NETLIB 2.0 or above is now required).n 								24-SEP-1996g       IMAPD CHANGES:
 =============l  H   *  [.IMAP.ANSI.IMAPD]IMAPD.C : Replaced the definitions for the SYSLOGG      calls (which don't exist on VMS) to generate no compiler warnings.9 								27-SEP-1996E    K   *  [.IMAP.ANSI.IMAPD]IMAPD.C : Split out the special vmsio network servermM      intercept code into separate modules VMSIO.H and VMSIO.C. This way, they H      can be included into other modules as needed (also makes editing of      new releases much easier).s 								27-SEP-1996P    H   *  [.IMAP.ANSI.IMAPD]IMAPD.C : Added a call to log the calling host if      logging is on.p 								26-SEP-1996t    O   *  [.IMAP.ANSI.IMAPD]IMAPD.C : Fixed up the special_printf code to return theiM      proper status and, in particular, the error status. Also tidied up a fewe      odds and ends.h 								26-SEP-1996i  K   *  [.IMAP.ANSI.IMAPD]IMAPD.C : Fixed up bug whereby vms_mail_open routinedO      could not find mailbox. Don't know why this occurs for sure but it's fixedaI      by checking for a user specified mailbox directory and adding in the0L      default if it's not there. The VMS_MAIL open routine should do this butG      it doesn't seem to work right. The previous fix prevented the userX      specifying an alternative.9 								25-SEP-1996.    A   *  [.IMAP.ANSI.IMAPD]IMAPD.C : Modified the special I/O routineV1      'special_printf' to use var_args constructs.X 								25-SEP-1996	    G   *  [.IMAP.ANSI.IMAPD]IMAPD.C : Modified network interface code to useGJ      only calls to the TCP interface modules, rather than ifdefing code toN      support MULTINET/NETLIB. The main IMAPD program should now be independent"      of the particular stack used. 								25-SEP-1996             
 PINE CHANGES:e
 =============o  F   *  [.PINE]OS_VMS.C : Fixed a problem with inode comparisons that was(      preventing compilation under VAX C. 								26-SEP-19960    J   *  [.PINE]OS_VMS.C : Modified the network interfaces to use the routinesM      in the tcp interface module rather than using ifdefs to select different J      code for different network interfaces. PINE itself should now be freeJ      of stack dependencies (all hidden in the tcp_vmsx.c modules from the       c-client library).k 								24-SEP-1996,  L   *  [.PICO]COMPOSER.C : function packheader did not allow for a null lengthM      string when checking for a terminating comma. This could cause an accesslN      violation. I've patched the code to check for a null string and ignore it      if it's there.e 								13-SEP-1996	  ?   *  [.PINE]PINE.H : Updated version string to indicate beta 8.- 								13-SEP-1996-     POP3 SERVER CHANGES: ====================  H   *  [.IMAP.ANSI.IPOPD]IPOP3D.C : First stab at building the POP3 serverI      for VMS. Included the VMSIO code, some changes to mailbox naming andt<      sorted out the SYSLOG calls (which don't exist on VMS).H      It works! Must be started by a master server on port 110. It is NOT:      usable as a detached process listening out for calls. 								27-SEP-1996      GENERAL CHANGES: ================    J   *  VMSBUILD.COM : Modified each one to accept a VAXC option to allow theL      use of the VAXC compiler instead of the default DEC C compiler. This isL      most useful for testing that the whole thing compiles under the variousM      compilers. The default is to select whichever compiler exists with DEC C.      being preferred.m 								27-SEP-1996n  I   *  AAAREADME.TXT : Added information about special setups that might beT6      necessary for specific stacks (MULTINET and UCX). 								27-SEP-1996s    O   *  VMSBUILD.COM : Tidied these up to add /NOLOG to delete and purge commands,dH      turn off redundant verification and add progress messages, document&      parameters, add LINK-ONLY option. 								27-SEP-1996s    H   *  [.PINE]VMSBUILD.COM : removed all references to stack type from the8      /DEFINE list as it's no longer referenced anywhere. 								26-SEP-1996i    M   *  [.IMAP.ANSI.C-CLIENT]VMSBUILD.COM : removed all references to stack typeLA      from the /DEFINE list as it's no longer references anywhere.f 								26-SEP-1996   B   *  Updated details of multiple smtp-servers in the configuration      instructions. 								13-SEP-1996   N   *  Added a MAKECLEAN.COM procedure to delete the various .EXE, .OBJ and .OLB!      files created after a build.s 								12-SEP-1996  o' 3.91 Beta 7 - Changes since 3.91 Beta 6T' ---------------------------------------r  
 PINE CHANGES:o
 =============	  I   *  [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C  Fixed a bug in the use of a foreign L      protocol mail interface (used only if the smtp-server is not defined inI      the pine configuration interface, and selected with the logical namedM      PINE_MAIL_PROTOCOL).  There were several problems found and fixed in thec      vms_mail_send routine:o  O        - No distinction was made between addresses in the TO: field and the CC:s          field.l  P        - Each line of pine's mail file was copied separately to the message bodyL          (This seemed to have a bug causing an access violation) rather than<          using the special filename option in callable mail.  J        - The calls to the callable mail interface specified that a routineK          should be called for each successful delivery but this routine wasrM          defined with the wrong number of parameters (zero instead of three).V 								12-SEP-1996t    J   *  Fixed a very strange timing bug in the purge_status_message() routineM      which supplied sleep with a zero value and somehow locked up when tryingrJ      to send a message.  I've inserted a check to always supply a positive      value to sleep. 								11-SEP-1996h  G   *  With debugging (-d switch) active, the .PINE-DEBUGx file was beingTI      created correctly but the code to rename the highest version did not O      delete any previous version. Of course, it was originally written for unixpO      where renaming into an existing file destroys the existing copy. On VMS it0F      doesn't, but preserves the older version. As this is not requiredK      behaviour, the code has been modified to explicitly delete the highesti      version if it exists. 								11-SEP-1996e  J   *  PINE was attempting to read the default system configuration from theH      SYS$MANAGER directory rather than from the directory defined by the       logical name PINE_CONF_DIR.      This has now been fixed.L 								11-SEP-1996e  H   *  PINE was attempting to read the fixed system configuration from theK      directory defined by the logical name UTIL$ rather than PINE_CONF_DIR.e      This has now been fixed.a 								11-SEP-1996O       GENERAL CHANGES: ================  F   *  Merged changes and installation/configuration files into a single      aaareadme.txt file. 								11-SEP-1996t    K   *  Added some info to the aaareadme.txt file about the configuration fileA      usage and contents. 								11-SEP-19966    K   *  [.PINE]PINE.H : The version ID was still at 3.91-vms-b4; changed it to C      3.91-vms-beta7 to properly reflect the current version number.  								11-SEP-1996p    L   *  The DEBUG code is now compiled in to the PINE utility by default. It isK      controlled by the '-d' switch on the PINE command line. The default ist:      level 2. Switch off completely using the  -d 0  flag. 								11-SEP-1996,    O   *  [.PINE]VMSBUILD.COM : The wrong build procedure for PINE was inadvertentlynD      supplied. It did not have appropriate changes added to properlyJ      distinguish VAX C and DEC C and could confuse compilations under bothM      compilers.  This has now been corrected and the right build procedure isoI      now supplied. This did not prevent the building of PICO or the IMAPDe      daemon. 								11-SEP-1996'  ' 3.91 Beta 6 - Changes since 3.91 Beta 5n' ---------------------------------------.   IMAPD CHANGES: ==============  L   *  [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : In the VMS header parsing, also treat%      "Via:" as a valid RFC822 header.T 								Sept 4, 1996  G   *  [.IMAP.ANSI.IMAPD]IMAPD.C : Bug fixes to the code which parses thehL      messages to sort out the headers from the text and return the length ofO      each. This was not being done under all circumstances and resulted in some 9      short string counts which could confuse the clients.  								Sept 3, 1996      I   *  [.IMAP.ANSI.IMAPD]IMAPD.C : Added fuller checks on I/O status checksUK      to/from the network. Should prevent the code hanging or looping if thep      network connection dies.o 								Sept 3, 1996    L   *  [.IMAP.ANSI.IMAPD]IMAPD.C and [.IMAP.ANSI.C-CLIENT]VMSBUILD.COM : FixedO      the NETLIB support code. This let me find some interesting DEC C and VAX CAN      header conflict bugs. If compiling with DEC C, it is probably inadvisableO      to point logicals like SYS, ARPA etc. to the SYS$LIBRARY If you also have,rK      or previously had, VAXC installed. The logicals cause DEC C to pick upTI      certain header files from there, rather than from the standard DEC CpN      library. Unfortunately, they conflict in their contents and cause variousO      facilities to become unavailable (Someone really should shoot the inventor O      of C header files - they are a facility that is grossly misused and abused-L      even by professional programmers! DEC C writers have not helped mattersA      with their proliferation of ifdefs and modes of compilation)u  G      Also had to slightly edit the code to call the right TCP interfacet#      routine to get the local name.r 								Sept 2, 1996    N   *  [.ANSI.IMAP.C-CLIENT]VMS_MAIL.C : Found a more effective/efficient way ofM      dealing with VMS/RFC822 header selection. Basically, start by extracting L      the VMS MAIL headers into a buffer. If the first line after this set ofO      headers looks like it's an RFC822 style header, copy those over the top ofnO      the VMS MAIL headers rather than reading them into a separate buffer. It'sa"      cleaner and uses less memory. 								Sept 2, 1996    H  *  [.IMAP.ANSI.C-LIENT]IMAPD.C : Added logging to the IMAPD code.  EachO     activation of IMAPD will create a logfile if the logical name IMAPD_LOGFILEhK     is defined with a valid file name. The logical is checked each time the I     IMAPD program starts so it can be dynamically assigned/deassigned forMI     selective logging only when there's a problem to solve.  The level ofnO     logging sent to this file is controlled by the logical name IMAPD_LOGLEVEL.dL     If defined with a numeric value greater than zero, then logging messages%     are written to the IMAPD_LOGFILE.2  2     The level of logging currently recognized are:$       0 or non-numeric: (No logging)  	0 - nothing written to log file  8       1-10: progressively higher levels of IMAP tracing 6         1 - Basic trace of IMAP commands and responses  O       11-20: internal trace of I/O routines and other technical debugging stuffp8 	10: Trace of each read/write of an I/O buffer to stdout- 	11: Trace of every character read from stdinr  O     IMAPD Logging consists (currently) of all commands read by the IMAPD daemondN     and their parameters. NOTE that this includes login passwords at present!!J     Command responses are logged too, though not the data generated by the     command.  M  *  [.IMAP.ANSI.C-CLIENT]IMAPD.C : The alert facility has been implemented. ArN     logical name of the form IMAPD_ALERTFILE can be defined to point to a textO     file. If this text file can be opened, it is copied to the IMAP user at theeD     start of each IMAP session. Each line in the file is printed as:         * OK [ALERT]  text  K     Whether or not the IMAP client can detect and print them is, of course,P     client dependent.  								August 30, 1996i    L *   [.IMAP.ANSI.IMAPD]IMAPD.C : The idle timeout code was originally writtenM     using the ANSI function setitimer. As this is not available with VAX C orDO     with DEC C until VMS 7, the code was originally commented out for VMS. It'sc'     been put back and uses alarm() now..  J     Previously the idle timeout was fixed via a define in the source. I'veM     changed this so that the value can be specified via a system wide logical	     name IMAPD_TIMEOUT.[       For example:0        $ define /system /exec imapd_timeout 1800  I     Sets an idle timeout of 1800 seconds (30 minutes).  A value of 0 (the "     default) sets no idle timeout. 								August 30, 1996n    L *   [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added the ability to remap DECNET nodeI     names into replyable internet address format, via logicals. With thise!     facility, a name of the form: @ 	node::username		(or Namespace:.node::username under DECnet/OSI)  +     attempts to translate the logical name:=         IMAPD_NODE_nodeA  2     And the translation is used to replace 'node'.       For example:  K       Suppose the logical name  IMAPD_NODE_BLACK is defined to "campus.edu"M       then the address:a         BLACK::JOHNb         is mapped into:          JOHN@campus.edue  4       With no logical name, the translation will be:         JOHN@BLACK 								August 30, 1996e    L *   [.IMAP.ANSI.IMAPD]IMAPD.C : The program was originally written for unix,J     where INETD can fork off a process with stdin and stdout automaticallyO     connected to the client channels. This has the advantage of allowing things	K     like printf to work directly to the sockets. With VMS, we can't do this G     (easily) so I've resorted to a rather nasty trick of redefining thenO     standard i/o calls with macros to our own special routines which attempt tomM     detect how to properly handle the I/O. Not a pretty sight but it seems to K     work! Handling of network read/write error returns is still a bit flakyeO     though. More work needed. It does now work with MULTINET and (shortly) withw     NETLIB.n  N     I can't claim credit for the idea of intercepting the I/O code - that goesO     to Yehavi Bourvine who added something similar to the 3.89 port. I've takenSN     the idea and refined it to make it cleaner and QIO free. The original codeH     had no concept of restrictions on I/O buffer length so would merrilyL     overwrite code and data structures. My rewrite is careful not to do this,     and splits reads/writes where necessary. 								August 30, 1996e    N   *  [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : When a local or DECnet message is foundO      (IE one sent through normal VMS mechanisms rather than via SMTP software),oL      the IMAPD daemon returns the usual VMS mail header lines. These are, ofN      course, not in rfc822 format and confuse various mail header parsers. TheL      code now modifies these headers (the FROM:, TO: and CC: fields) into an      RFC822-like syntax.  (      The following forms are recognized:2          username		   maps to	username	(No DECnet)=          node::username		   maps to	username@node	(DECnet IV):C          namespace:.node::username maps to	username@node	(DECnet V)	  K      Additionally, a comma separated list of names in each field is allowedoK      and each is converted as above. I don't support space separated names!  								August 15, 1996_    L   *  [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : I've further tidied up all the memoryK      allocation bugs I can find in IMAPD and it appears to be fairly stable]3      now. Big messages may still confuse it though.  								August 14, 1996o    N   *  [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : The IMAP daemon reads each message intoE      memory. It allocates space for the message using a primitive andmO      inefficient technique and does not check whether the allocation succeeded.IJ      This leads to random crashes later when the invalid pointers are usedJ      (well, it was written originally for unix where error checking is not      necessary ..   :-) )   N      The algorithm has been modified to greatly reduce the memory requirementsN      for each message. This won't stop the crashes but should make them happenG      less often. I could not find a way to die gracefully if the memorytO      allocation failed. At the moment, the check simply prints an error messageCJ      and dies rather than crashing; whether the mail client can print this!      message is client dependent.r  K      One way to circumvent the problem is to increase the amount of virtual[D      memory allocated to the imapd process. This is stack dependent.J      Really though, the code needs to be heavily modified to not read each      message into memory first.. 								August 12 1996     GENERAL CHANGES: ================  & *   I've added two startup procedures:L       IMAPD_STARTUP.COM can  be called from system startup to initialize theK       logical names IMAPD uses. Note that this should be tailored for local	       use first!  J       PINE_STARTUP.COM can be called from system startup to initialize theJ       logical names PINE uses. Note that this should be tailored for local       use first!  N       Both files contain examples of the optional logicals. Tailor and comment       to personal taste. 								August 16, 1996 