From: SMTP%"everhart@evms.zko.dec.com" 4-NOV-1996 18:51:26.25 To: EVERHART CC: Subj: PINE for VMS, 3.91 BETA 9 now available - comp.os.vms #158455 From: everhart@sareks.zko.dec.com Date: Mon, 4 Nov 1996 17:33:46 -0500 Message-Id: <96110417334629@sareks.zko.dec.com> Reply-To: everhart@evms.zko.dec.com To: everhart@gce.com Subject: PINE for VMS, 3.91 BETA 9 now available - comp.os.vms #158455 X-VMS-To: smtp%"everhart@gce.com" In article <009AADD7.249365E0.508@alder.cc.kcl.ac.uk>, Andy Harper - KCL Systems manager writes: A new beta of PINE for VMS is available (PINE 3.91 BETA 9) which contains a number of changes to improve stability. Details are enclosed below for those interested. Regards, Andy Harper Kings College London What is PINE ? -------------- Pine is a program that runs on a number of different platforms to provide a screen based mail and news reading facility. It originates at the university of washington. Mail folders on remote systems can be read as easily as local mail folders, using standard POP and IMAP protocols. What is IMAP ? -------------- Several people asked 'what is IMAP' after my earlier message went around. Well it's a protocol that allows a client to access mailboxes on a server. It differs from the POP protocol in a number of key areas: * POP only accesses the NEWMAIL folder; IMAP can access any folder * POP downloads messages to the client; IMAP keeps them on the server (in either case, messages can be downloaded or left on the server if you wish but access to such messages with POP becomes tricky). POP is not good for people who move from PC to PC, whereas IMAP handles this neatly. * POP can only read a mailbox and delete items from it; IMAP can additionally search, rename and store (though therse are not implemented in this VMS port). This allows suitable clients to move messages between folders on different systems. What Mail clients use IMAP? --------------------------- Most of the clients around still use POP (Eudora, pegasus, netscape mail etc.) but a number are starting to incorporate IMAP access to. The commercial one we use is called Simeon by ESYS Corporation (this is not a recommendation and I have no connection with the company!) and there is a freeware one called ATISMAIL around. There's also talk of adding IMAP to NETSCAPE mail and perhaps EUDORA. It IS an internet 'standard' and is therefore likely to become more prevalent over time. What about this IMAP server? ---------------------------- We had a need for a functional IMAP server on our VMS systems, and a number of others seemed to be interested too, so I set about finding one. One such is the IMAPD server included with the PINE software from Univ. of Washington, which was ported to VMS by Yehavi Bourvine (based on the one included in the PINE 3.91 kit from U of Washington). This was known as 3.91 beta 5 for VMS. I've updated Yehavi's port with some additional bug fixes and features and my latest beta is 3.91 Beta 9. Although there are later releases of pine (3.95 is current I believe) there are no working VMS ports (though 3.95 does include a partial port which is grossly incomplete). My improvements to 3.91 are primarily: * Fixing some problems with PINE sending mail out * Completing the port of the IMAP server * Fully supporting the NETLIB TCP/IP interface * Adding a few new features, such as logging and decnet node mapping * Supporting builds with DEC C 5.3 and VAXC 3.2, on both VAX and ALPHA AVAILABILITY: ------------- FTP: ftp://ftp2.kcl.ac.uk/zip/pine_3_91_beta_9.zip (ZIP format) CHANGES MADE: ------------- 3.91 Beta 9 - Changes since 3.91 Beta 8 --------------------------------------- C-CLIENT LIBRARY CHANGES: ========================= * [.IMAP.ANSI.IMAPD]IMAPD.C : Thanks to Matt Madison of TGV/CISCO, finally stomped on the accursed bug that prevented the server from accessing the network when compiled with VAXC. It turns out that network applications must set up their channels to the network BEFORE any other C RTL I/O. I thought this had been done but forget that there's a call to fopen() to set up the logfile BEFORE the call to openio() to initialize the network. This was done so that openio() could log its actions. Now that i've moved things around, the server works but logging from within openio() is no longer possible. 1-NOV-1996 * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Implemented mail_move and mail_copy functions. 1-NOV-1996 * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Fixed a minor bug in VMS_MAIL which prevented calls to 'islower' rtl function being found with VAXC. This is a macro under VAXC and so needs an include of ctype.h. Added it. 31-OCT-1996 * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added code to make the mail_fetchfast routine work, Quick and dirty, it just calls mail_fetchstructure. 31-OCT-1996 * [.IMAP.ANSI.C-CLIENT]VMSBUILD.COM : Added two additional options: MAILTRACE: to compile in the vms mail tracing code, and ALLOWFULLMBXSPEC: to compile in support for arbitrary mailboxes specified using the ~ format. These options are available only for the C-client build procedure. 31-OCT-1996 * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : added some additional tracing code to follow the mail file/folder open and close actions. This is conditionally compiled in when /DEFINE=MAILTRACE is specified at compile time. trace output goes to stderr. 31-OCT-1996 * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : PINE keeps INBOX open all the time so it is necessary to support several independent open streams (at least two for IMAPD and three for PINE). The existing code doesn't support this and we get very confused if folders are opened and closed successively. Attempt to provide better support for this by allowing a small stack of context pointers. This should now allow PINE to switch properly between INBOX (which is kept permanently open), a folder list, and any other folder without disaster. Just to play safe I've made room for 5 stacked sets of context info and added checks for stack over and underflow. I may have broken the inbox ping function however as I'm still not sure how this is supposed to work (see KNOWN BUGS above). 31-OCT-1996 * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Modified the mail_close routine to NOT move \SEEN messages from NEWMAIL to MAIL. Although this is how VMS MAIL does it, it is NOT how PINE on other systems works is is less intuitive. 30-OCT-1996 * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added date parsing, even for non-rfc822 format messages by calling the MAIL$ routine to get the date. PINE still seems unable to display the date in the folder index for non RFC822 messages though. 30-OCT-1996 * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Made the support for '~' format mailboxes conditional on the ALLOWFULLMBXSPEC define. This is because full implementation of this is some time away - it needs a rewrite of this module and some features we need are not present in callable mail (create empty mailbox, append to folder). 30-OCT-1996 * [.IMAP.ANSI.C-CLIENT]VMSBUILD.COM : Added /include=[] when the null tcp stack was selected. 29-OCT-1996 * [.IMAP.ANSI.C-CLIENT]TCP_VMSN.C : Fixed a bug in the null tcp stack support which had a 'then' after an 'if' ! 29-OCT-1996 * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added the logical name MAIL$INTERNET_PROTOCOL (usually defined in VMS 6.2) as one of those examined to define the SMTP transport when sending a message. 9-OCT-1996 * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Improved the VMS MAIL header parsing code which remaps based on logical names to take into account any namespace that appeared (this is for DECnet/OSI addressing). An address of the form: (DECnet Phase V format..) NAMESPACE:.NODENAME::USER is now converted to the form: USER@ADDRESS where ADDRESS is obtained, in order, from one of the following: - Translation of the logical name IMAPD_NODE_'namespace'_'nodename' - The original NODENAME An address of the form: (DECnet Phase IV format..) NODENAME::USER is now converted to the form: USER@ADDRESS where ADDRESS is obtained, in order, from one of the following: - Translation of the logical name IMAPD_NODE_'nodename' - The original NODENAME An address of the form: (No DECnet format..) USER is now converted to the form: USER@ADDRESS where ADDRESS is obtained, in order, from one of the following: - Translation of the logical name IMAPD_NODE - The current hostname NOTE: This affects messages returned by the IMAPD and IPOP3D daemons, and local mail read by PINE. NOTE: This is a CHANGE from the previous beta release, where the namespace was IGNORED. If you had namespaces before and used logicals of the form IMAPD_NODE_'nodename' to remap addresses, you MUST now use logicals of the form IMAPD_NODE_'namespace'_'nodename' to specify the mapping. For most users, this is probably just a matter of adding the word LOCAL into the logical name (since LOCAL is the most common default namespace). 3-OCT-1996 * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Corrected the 'is_valid' routine to return T only if the mailbox name parses correctly. previously, this routine always returned T (and, for some reason, called gethostname!). * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : More rewrites to tidy up the handling of mailboxes. In particular, defined the syntax of a mailbox more precisely. The following are accepted: INBOX --> selects [default mail file, NEWMAIL folder] folder --> selects [default mail file, 'folder'] ~/folder --> selects [mail file in login directory, 'folder'] ~/subdir/folder--> selects [mail file in relative subdir, 'folder'] The file used is always called MAIL.MAI and must existed in the specified directory. Mail files with any other name are not accessible. This change brings the mail folder syntax into line with unix imapd servers and prevents users accessing any mail folder outside their own directory tree (a big problem with previous releases!) NOTE: This change affects the syntax of a folder collection. previously the form SYS/[] was allowed and this found all folders in the default mailbox. In fact the SYS syntax was a dummy and ignored. Now it MUST NOT be present due to the redefinition of mailbox syntax. NOTE: a syntax involving any non-default mailbox does not currently work 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 * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Extensive rewrites to tidy up the code and fix bugs in determining the user's default mail directory. Added a routine to parse a mailbox and insert defaults. 1-OCT-1996 * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Added a routine to check for an rfc822 header and a general routine to parse the message body and split out the headers and text. This code was duplicated in several places and was very messy. 30-SEP-1996 IMAPD CHANGES: ============== * [.IMAP.ANSI.IMAPD]IMAPD.C : Modified the client to use the original mailbox spec supplied by the user. Previously it had been modified to overcome the limitations of the VMS_MAIL interface module. Now all parsing of a mailbox name is done within VMS_MAIL, where defaults are inserted as necessary. 3-OCT-1996 IPOPD CHANGES: ============== * [.IMAP.ANSI.IPOPD]IPOP3D.C : Modified the client to use the fixed name INBOX. Previously it needed to use the '(dir)newmail' syntax to get over the limitations of the VMS_MAIL interface module. Now all parsing of a mailbox name is done within VMS_MAIL.C, where defaults are inserted as necessary. 3-OCT-1996 * [.IMAP.ANSI.IPOPD]IPOP3D.C : Added calls to the mail_fetchstructure routine in order to make sure that the size counts are up to date. Previously they had assumed that the rfc822_size field was uptodate and correct (it wasn't). 3-OCT-1996 PINE CHANGES: ============= * [.PINE]OS_VMS.C : Changed case of calls to LIB$FIND_FILE and LIB$FIND_FILE_END to match declaration. This causes VAXC a headache and gives a compilation warning. 11-OCT-1996 * [.PINE]OS_VMS.H : Changed the default debug level from 9 to 2. Dont know how this got changed but 9 was excessive. 9-OCT-1996 * [.PINE]IMAP.C : Added a special entry point to mm_login (-1) which retrieves the current username. This is necessary because, unlike unix, the IMAPD server does not change its username after a login. Thus the VMS_MAIL interface has to obtain the username using the mm_login callback. 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-1996 GENERAL CHANGES: ================ * AAAREADME.TXT : Added some info on known bug, VMSBUILD compile options, additional notes on miscellaneous things. 31-OCT-1996 * AAAREADME.TXT : Added some blurb about the differences between unix and VMS mailboxes and the interpretation of the standard mailbox syntax. 9-OCT-1996 * AAAREADME.TXT : Updated the documentation with info on the POP3D startup, the new mailbox standard formats and the new logical name translations. 4-OCT-1996 * IMAPD_SETUP.COM : Added details of the new logicals with some example definitions. 4-OCT-1996 * VMSBUILD.COM : Redefined P2 to be a list of modules to be recompiled. This 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 * VMSBUILD.COM : Merged the DEBUG option into the P1 option list and removed all special code dealing with CTYPE and readonly (not needed anymore). This latter stuff caused compilation problems with the multinet stack under VAXC. 30-SEP-1996