Article 159787 of comp.os.vms: 22-NOV-1996 PINE 3.91 beta 10 A new beta of PINE for VMS is available (PINE 3.91 BETA 10) which contains a number of new things and changes to improve stability/reduce bugs. 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 these 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. 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 IMAPD server * Fully supporting the NETLIB TCP/IP interface * Adding a few new features, such as logging and decnet address mapping * Supporting builds with DEC C 5.3, GNU C 2.7.1 and VAXC 3.2, on both VAX and ALPHA RESTRICTIONS: ------------ The VMS port cannot current handle any operation which requires creating an empty mailbox or transferring a message from the network into a vms folder. This is due to major restrictions in the VMS callable mail interface. Several discussions with Digital have resulted in no viable workarounds as yet. I hesitate to say that I had some difficulty convincing them of the need for this but I did! AVAILABILITY: ------------- FTP: ftp://ftp2.kcl.ac.uk/zip/pine_3_91_beta_10.zip (ZIP format) CHANGES MADE: ------------- The major changes from the previous release are: * Support for GNU C (version 2.7.1) on VAX * Better mapping of VMS MAIL style addresses to RFC822 format * Corrections to netlib support * More detail on setting up the system, usernames and tcp stacks The following is the complete list of changes. 3.91 Beta 10 - Changes since 3.91 Beta 9 ---------------------------------------- C-CLIENT LIBRARY CHANGES: ========================= * [.IMAp.ANSI.C-CLIENT]TCP_VMSL.C : Fixed a strange bug where the server code tried to accept a call from the wrong port, but only when the underlying stack was CMU. It worked fine on UCX and MULTINET. This appeared to be caused by the initialisation of a socket structure to set up the port being corrupted. Couldn't find the bug specifically but re-ordered the code and it went away! I'll keep trying to find the underlying cause but for now it works (or seems to). 22-NOV-1996 * [.IMAP.ANSI.C-CLIENT]VMSBUILD.COM : Now that the TCP module is separate and includes it's own stack-specific headers directly, there is no need to add /include=(stackpath) to the compilation line. This makes all modules, with the exception, of the TCP_VMSx.C one, stack independent. Modified VMSBUILD.COM accordingly. 20-NOV-1996 * [.IMAP.ANSI.C-CLIENT]OS_VMS.H : Reworked headers to minimize conflicts. 19-NOV-1996 * [.IMAP.ANSI.C-CLIENT]OS_VMS.C : Remove the include of TCP_VMS.C as part of the separate compilation changes. Also reworked the header files to try to minimize conflicts. 19-NOV-1996 * [.IMAP.ANSI.C-CLIENT]TCP_VMSx.C : Separated the TCP modules into separately compilable ones so that socket headers can be made specific. This avoids a lot of problems caused by incompatible header files. 19-NOV-1996 * --- C-CLIENT library now compiles under GNU C, not entirely cleanly, but it works! 18-NOV-1996 * [.IMAP.ANSI.C-CLIENT]VMSIO.C : Added missing declaration of tcp_server_init routine. 18-NOV-1996 * [.IMAP.ANSI.C-CLIENT]*.* : Miscellaneous changes to make the VMS portions of the code compile more cleanly under GNU C. Still getting warnings but it works now. The following changes were made: env_vms.c Add include unistd.h to declare cuserid log_vms.c added casts to structure initialisation in server_login() to fix pointer compatibility. os_vms.c Added ifdef around socket includes for GNU C and added a struct definition for timeval as GNU C finds it in two incompatible places otherwise. vms_mail.c many pointer mismatches fixed up, and conflicting static/non-static declarations matched up properly. 18-NOV-1996 * [.IMAP.ANSI.C-CLIENT]VMS_TCPL.C : Add support for GNU C. GNU C does not recognize some non-standard definitions in netlibdef.h (variant struct and variant union). Got around this by copying the declarations we need inline (still use the real include if not GNU C). This makes the GNU C support prone to breaking due to changes in a future release of NETLIB (This version is 2.0J) but is a small price to pay if it works. 18-NOV-1996 * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : The VMS MAIL headers include SUBJ. However, the rfc822 parser does not recognize this as a subject field, so pine's index display and headers on messages show a blank field for the subject of any message received via VMS/DECNET mail. Fixed this by rewriting the 'SUBJ' header as 'Subject'. 15-NOV-1996 * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Modified the VMS mail to RFC822 header conversion routines to properly deal with the unquoted '@' form of address introduced in VMS 6.2 (and available on earlier VMS via unofficial patches to VMS MAIL). Now an address of the form 'user@system' is left untouched. 15-NOV-1996 * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : When a message has been sent and received locally via VMS MAIL, the mail headers on the message are simply the standard VMS MAIL headers (FROM, TO, CC, SUBJ). The code parses these and converts addresses to an RFC822 syntax. However, the lack of a date field causes some problems when PINE wants to display the date in the folder index list. Got around this by extracting the date of receipt of the messaage and adding a date field with this date in it. Also store the date in the elt. 14-NOV-1996 * [.IMAP.ANSI.C-CLIENT]VMS_MAIL.C : Modified the vms address parser to recognize the form xyz%"....." and just return the ..... part. This should deal with MOST (not all) smtp style addresses that VMS sees in its FROM, TO and CC headers. There are still a few formats that will return funny address (EG: DSN%xxxxx) but it's a good start. I may make it possible to use logicals to remap the addresses based on the XYZ part later. 14-NOV-1996 * [.IMAP.ANSI.C-CLIENT]OS_VMS.C : ifdef'ed the include of some of the network files to do different things for GNU C (which doesn't handle the syntax the way we want). 7-NOV-1996 * [.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 ============ * [.PICO]OS_VMS.C : A few mods to declarations to clean up compiler warnings on mismatched types. 18-NOV-1996 * [.PICO]COMPOSER.C : Removed incorrect filename separator character from a filename. Due to unix/vms filename differences. Thanks to Sterling Bjorndahl. 12-NOV-1996 * [.PICO]ATTACH.C : Allowed the characters '[' and ']' in the filespec of an attachment under VMS. Thanks to Sterling Bjorndahl. 12-NOV-1996 * [.PICO]DISPLAY.C : Added a 'movecursor' call which seems to fix up a display problem. Maybe a bug in VAXCRTL? Thanks to Sterling Bjorndahl. 12-NOV-1996 * --- PICO now compiles, error free, with GNU C !! Still a few warnings to clear up. 12-NOV-1996 * [.PICO]ANSI.C : Added an include for gnu_hacks header so that we can use the special GNU C GLOBALDEF maco (globaldef isn't understood by GNU C). Thanks to Sterling Bjorndahl. Also slightly reworked the ifdef sequence to make it clearer. 12-NOV-1996 * [.PICO]EDEF.H : Added an include for gnu_hacks header so that we can use the special GNU C GLOBALREF macro as globalref isn't understood by GNU C. Thanks to Sterling Bjorndahl. Also slightly reworked the ifdef sequence to make it clearer. 12-NOV-1996 PINE CHANGES ============ * [.PINE]VMSBUILD.COM : Now that the TCP module is separate and includes it's own stack-specific headers directly, there is no need to add /include=(stackpath) to the compilation line. This makes all modules, with the exception, of the TCP_VMSx.C one, stack independent. Modified VMSBUILD.COM accordingly. 20-NOV-1996 * [.PINE]VMSBUILD.COM : It appears that the GNU C link loses some global information if the modules are retrieved from a library. This caused the initialisation of the mail drivers to fail weirdly. Modified VMSBUILD.COM to link the modules explicitly rather than fetch them from the library. It now appears to work properly. 18-NOV-1996 * --- PINE now compiles reasonably cleanly under GNUC !! 18-NOV-1996 * [.PINE]TTY_VMS.C : Corrected definition of get_windsize() function to match declaration. 18-NOV-1996 * [.PINE.OSDEP]SENDMAIL_VMS. : Added some missing function declarations to get a cleaner compile under GNUC. 18-NOV-1996 * [.PINE]OS_VMS.C : Various mods from Sterling Bjorndahl incorporated; fixes up a problem writing the crash dump and gives a cleaner compilation under GNU C. 18-NOV-1996 * [.PINE]OS_VMS.H : Added suitable #ifdef so that both GNUC and DEC C are flagged as ANSI compilers. Thanks to sterling Bjorndahl for the GNU C mods. 18-NOV-1996 * [.PINE]PINE.H : Updated the version string to reflect Beta10. 4-NOV-1996 GENERAL CHANGES =============== * AAAREADME.TXT : Added a short note to the stack information about configuring CMU to fire up the imapd server when a call comes in. 22-NOV-1996 * VMSBUILD.COM : Removed all remaining references to stack specific includes and added the OPTIMIZE option. Optimization is off by default because it can cause erratic behaviour, due to optimizer bugs. This option allows it to be switched on if you are sure that your compiler's optimizer is ok. 21-NOV-1996 * INSTALL.COM : Added this procedure to copy executables to the right place, after first checking that the necessary logical names are defined. 20-NOV-1996 * AAAREADME.TXT : Added new RESTRICTIONS and PRE-REQUISITES section; fixed a few typos and missing definitions in the setup section. 20-NOV-1996 * PINE_SETUP.COM : The f$getsyi("ARCH_NAME") lexical was not present prior to VMS 5.5 so inserted a check for this. Default to "VAX" if earlier. 12-NOV-1996 * IMAPD_SETUP.COM : The f$getsyi("ARCH_NAME") lexical was not present prior to VMS 5.5 so inserted a check for this. Default to "VAX" if earlier. 12-NOV-1996 * VMS_GNUC_LINK.OPT : Create a linker options file for GNU C support 10-NOV-1996 * USER_SETUP.COM : Added a procedure to create a user under which the servers can run. Thanks to Ian Miller of softel for the UCX information. 10-NOV-1996 * SERVICE_SETUP.COM : Added a procedure to create the TCP service configuration for the IMAPD daemon. Thanks to Ian Miller of softel for the UCX information. 10-NOV-1996 * AAAREADME.TXT : Updated documentation with better installation instructions. This time, included more comprehensive notes on setting up the underlying network stack and services. 7-NOV-1996 * VMSBUILD.COM : Rewrote the procedures to be cleverer at detecting the compiler and network stack to use automatically, and to check the network and compiler selection options for validity a lot better. Also, first stab at incorporating support for GNUC (very difficult as it wont recognize some of the NETLIB declarations and has trouble finding socket related header files). 7-NOV-1996