soyMAIL Release Notes and Change Log
------------------------------------
With thanks to all those who have tried soyMAIL and taken the time to report
it wanting in some respect (and apologies if I've neglected to acknowlege your
contribution on this list).
Jeremy Begg (vsm.com.au)
Jerry Alan Braga (flanagan.ca)
Verne Britton (wvnet.edu)
Alex Daniels (themail.co.uk)
Derek Garson (ilg.com.au)
Christoph Gartmann (immunbio.mpg.de)
Francesco Gennai (isti.cnt.it)
Victoriano Giralt (uma.es)
Hunter Goatley (goatley.com)
Willem Grooters (grootersnet.nl)
Dave Jones (ohio-state.edu)
Carl Karcher (waisman.wisc.edu)
Bill Korendyk (wilkor.ca)
Marty Kuhrt (kuhrt.com)
Tom Linden (kednos.com)
Ira Melamed (farmingdale.edu)
Rene Mendoza (coloradomtn.edu)
Phil Ottewell (pottsoft.com)
Jean-Pierre Petit (esme.fr)
Karl Rohwedder (gmx.de)
Massimo Vitali (marionegri.it)
Frank Weichert (Ruwel-Pfullingen.de)
Dean Woodward (locktrack.com)
************
* v1.2.2 *
************
* bugfix; CerealDataOut() perhaps those ambits were not the issue, set a
minimum buffer space of 256 (to catch possible zero-length data streams that
still need a hash).
************
* v1.2.1 *
************
* Rework reply-all address compilation so that the original 'to:' goes to
the new 'to:', original 'cc:' to new 'cc:', and duplicate addresses are
eliminated.
* Make minor allowances for user option selected monospace font. However
the three tested browser families all seem to handle monospace differently so
it's all very hit-and-miss. Who selects monospace unless it's fixed format
anyway! (Bill? :-)
* New user option [message-order] allows the message listing order to be
specified. This currently requires a manual edit of the user
SOYMAIL_OPTIONS.TXT (as I did not want to have do a round of language-specific
message changes for an interim release). Set to 1 for ascending order (more
recent messages towards the top - default) or -1 for descending order (more
recent towards the bottom).
* Ackk!! Looks like I'll need to reinstate the BETA test phase ...
* bugfix; ComposePage() HTML-escape the hidden signature.
* bugfix; ComposeTextMassage() retain quote-char as a string.
* bugfix; ComposeSendMessage() check reply-to for VMS address (Non-
info-WASD subscribers are lucky to have info-WASD subscribers get all of my
stupid errors winnowed-out before public release.)
************
* v1.2.0 *
************
* New configuration directive [vms-occluded]. This option when enabled
'hides' VMS-specific features and behaviours (e.g. the VMS user options, and
[extract] button described below).
* New configuration directive [disk-quota-percent]. This option controls the
user disk quota used percentage before utilisation notifications are generated.
These use the status information to notify the client of disk quota in use with
each folder opened once disk quota usage reaches the percentage. It defaults
to 85%, can be disabled by setting to anything above 100, and made permanently
enabled by setting to 0.
* New user option [sig-file] allows the source of the signature file to be
specified. That set by the VMS Mail configuration (default), a
soyMAIL-specific file (SOYMAIL_SIGNATURE.TXT), or none.
* The help "About" page now contains a disk quota report item.
* The message read page now contains an [extract] button (if VMS is
not occluded). Selecting this button extracts the specified message parts
(attachments) as files into the user home directory. File names are prefixed
with "SOYMAIL-" to avoid clashes with non-soyMAIL files in the area. The rest
of the file name is generated from the part name.
* Identify and make available any HTML content in a non-MIME message or in
MIME text/plain in-line content. Requested functionality for the occasional
broken message that gets through.
* The message composition page now provides for the selective [forward]ing
(from the message read page) of MIME attachments (without the [save] and
're-attach' of prior versions). It also indicates the presence of MIME
attachments in the original by introducing [[attachment-name]] into the message
text of [reply..]ed-to messages.
* The message composition page has had significant JavaScript enhancements
to refine address entry and message reset/clear/new functionality. This
reduces the number of times the composition page needs to makes a request of
the soyMAIL server. The [normal/wide] button has been replaced with one
divided into two segments, [20 x 72] (initial value). The left controls the
number of text rows, the right the number of text columns.
* The RFC "Date:" field is now derived from the client browser (via
JavaScript if enabled) rather than from the system soyMAIL is executing on to
better represent message origination date/time.
* Configuration directive [SMTP-default-host] has proved to be problematic
when interacting with genuine VMS addresses. As a result a VMS address has
been defined to be one containing a node specification (i.e. "::") or an all
upper-case string. Either of these characteristics is used to determine
address type (Internet or VMS) and additional checks have been provided to
ensure that appropriate addresses are supplied for copy-self, etc.
* Search "Results page every:" option now has an "all hits" item which will
return a single listing containing all hits.
* German versions of the help files thanks to Karl Rohwedder.
* New language file messages; [about_disk_quota], [disk_quota_used],
[attach_extract], [attach_extract_done], [option_soy_sig_file],
[option_soy_sig_file_default], [option_soy_sig_file_soymail]
and [option_soy_sig_file_none].
* Remove language file messages; [vms_foreign], [compose_edit_normal],
[compose_edit_wide].
* Modify language file messages; [option_vms_sigfile] to [option_sigfile],
[option_vms_sigfile_save] to [option_sigfile_save].
* bugfix; Contact import and merge were severely broken (the author must
have been clinically brain-dead at the time). They now work correctly. All
contact delete/edit/add/merge/import functionality from the contact maintenance
page must be [save]ed to make the changes permanent.
* bugfix; ContactsLoadFile() do not munge (upper-case or otherwise fiddle
with) non-personal (i.e. site-specific) contact file name.
* bugfix; HtmlSkipTagTo() used when sanitising HTML did not allow for
single or double quotation marks outside of markup tags.
************
* v1.1.1 *
************
* Configuration directive [smtp-server-host] now allows a port number to be
specified with the SMTP server host domain name (i.e. "the.host.name:25").
* Anchors created from Web URLS presented on the message read page are now
split into two halves. The left side opens the link in the same window
(target="_top") and the right in a child window (target="_blank").
* Do not infinitely increase the number of 'RE:' or 'FW:' (and any
language-specific equivalents) in subject lines generated by the compose page.
Leave at one, single leading instance of each.
* Optimise search activities (in particular) at CallMailMessageHeader() by
completely replacing mail$message_get() with mail$message_info() and adding
mail$message_get() to CallMailMessageGet() for non-external mail messages only.
This change was suggested by Dave Jones after investigations demonstrated a
reduction to 35% of original search durations by eliminating an RMS file open
implicit in mail$message_get() with external message files. My own testing has
shown this delivers a reduction to between 65% and 45% of previous search times
depending on the search parameters and the directory content. In other words;
well worth the modification but YMMV.
* Specialized user option [accessability-1] enables a heavy underscore
beneath the detail of each message on the folder message listing page. This is
intended to assist those with vision impairment to differentiate each message
displayed against it's associated button. This option must be manually enabled
by editing the user options file.
* bugfix; AddressIsRfc() RFC2822 only allows the double quotation character
(0x34) to quote, while AddressIsRfc() and MtaAddressExtract() allows backslash
(0x92) to escape a single character.
* bugfix; PublicMessageRequest() detect [search] button.
* bugfix; ContactsLoadFile() set 'rdptr->ContactsTextPtr = NULL' after
parsing LDIF content so that an empty LDIF file is not confused with a VMS
mailing list.
* bugfix; CallMailFileList() parsing of directory entry name length and
entry flags (per Dave Jones) and use memmove() for shuffling inside the one
buffer.
************
* v1.1.0 *
************
* Add configuration directive [private-request]. By default private access
is recognised with a path (excludes the script component) beginning "/~". This
can be overridden using the [private-request] configuration directive. It is
intended to be used inside a conditional configuration test to indicate that
this request is for private access to mail. It disables use of the "/~"
sentinel. This 'conditional' approach was considered the more flexible.
* Add configuration directive [update-last-login] with parameter INTERACTIVE
or NON-INTERACTIVE. For each initial (GET) session the SYSUAF entry for the
authenticated username has it's last-login (interactive or non-interactive)
date/time updated.
* Christoph Gartmann reports that Camino, Safari and Opera browsers on the
Macintosh platform are suitable for soyMAIL (in that order and with some very
minor inconsistencies).
* bugfix; ComposeSelfAddress() miscalculation of size for calloc() under
certain combinations of source address components.
* bugfix; RequestPublic() parsing folder with GET.
************
* v1.0.0 *
************
* On the private and public message display (read) page precede each message
part/attachment with an anchor/link to allow a right-click, browser
'save-target-as' dialog to be initiated, so allowing the part easily to be
saved on the browser-local system.
* Configuration directive [public-access] now supports a wildcard folder
result (à la yahMAIL) allowing browsing of a public access folders. There are
now three variations on public access.
* Public access now supports searching. The configuration directive
[search-control] may be used to disable and tailor this to suit requirements.
* A child ([^]) compose window now has the additional button [send-close]
available. After a successful message send the compose window is automatically
closed.
* Message [compose_send_close] added.
* LangLoad() in conjunction with LANGDEF.H used to provide details on
missing/extra entries in a language file when SOYMAIL$WATCH is defined. When
messages are added/deleted or names changed the data in LANGDEF.H must now be
changed (as well as in the language file itself).
* soyMAIL messages support five languages at this initial release.
de - German Karl Rohwedder
en - English yours truly
es - Spanish Victoriano Giralt
fr - French Jean-Pierre Petit
nl - Dutch Willem Grooters
Many thanks to these contributors.
* In folder listings MAIL and NEWMAIL no longer are shown unless they
contain messages. Note that 'newmail', 'newMAIL', 'NeWmAiL' and 'NEWMAIL' are
all separate folders (i.e. folder names are case-sensitive).
* bugfix; OptionsSoyMail() propagation of personal you-got-mail audio when
when changing language option.
* bugfix; CerealDataOut() allow ambit 3x intermediate buffer space for data
that actually increases in size during cerealising (serialising). For example;
a succession of short, null-terminated strings (detected due to the mail file
name structure).
************
* v0.4.3 *
************
* User option [wrap-text-at] has been superceded by [massage-read].
* User option [massage-read] is a more comprehensive plain-text message
'massager' providing 1) long line wrapping, 2) removal of extra line
breaks, and 3) removes any PGP/GnuPG clear-text signature armor headers
(RFC2440) leading and trailing a message.
* Messages [message_wrap_on] and [message_wrap_off] changed to
[message_massage_on] and [message_massage_off] respectively. Message
[options_soy_wrap] changed to [options_soy_massage].
* Successfully tested against "Purveyor Encrypt Export/v1.2.2 OpenVMS".
Only two minor code accomodations required. Installation of soyMAIL for this
platform must be performed manually. Server environment configuration requires
significant understanding of Purveyor.
************
* v0.4.2 *
************
* Configuration directive [SMTP-default-host] allows a host/domain name to
be automatically appended to unqualified user parts of an address. With this
set entering an address of 'daniel' would result in a send to
'daniel@the.host.name'. This of course disables a default send via VMS Mail.
With this directive set VMS Mail can still be used by prepending a node name to
the address (e.g. '0::DANIEL', 'DELTA::DANIEL', etc.)
* Logout revisited (and can't guarantee it won't be the last)!!
Configuration directive [logout-realm] enables the [logout] button and
functionality for the VMS Apache and OSU server environments. This is combined
with logout funtionality that actually *works* :-) across the three platforms.
By default the logout button is 'greyed-out' (italicised) on non-WASD platforms
and if pressed provides a status panel informational explaining it's not
supported for that site. See the Install and Admin document for further
detail.
* Dutch language message file courtesy Willem Grooters (grootersnet.nl).
* Refine HTML and HTML->plain-text processing to better handle some HTML
character entities (HtmlNumericDeEntify() and HtmlCharacterDeEntify()).
* AttachFile() ensure any file system path is stripped from the attachment
name before saving (MSIE at least supplies the full path).
* LangSame() modify comparison so that the message can contain HTML entities
useful in some buttons (e.g.
). This will allow some longish, non-English
language button labels to be folded with a newline (at least in Firefox,
Mozilla and MSIE, Opera 8.5 doesn't seem to support this).
* AddressListMassage() refine address reduction (yep - again!)
* bugfix; InetMailParseHeader() handling non-MIME MIME-like headers.
* bugfix; ContactsSave() to empty LDIF file.
* bugfix; MessageBodyIdentify() when generating plain from HTML-only content
first call MimeDecProcessPart() to potentially decode it.
* bugfix; MessageBodyIdentify() default a non-MIME message message to 8-bit,
plain-text.
************
* v0.4.1 *
************
* OOPS! Show-stopping initialization bug described below requires a much
too hasty release with a quick bump in the version designation to differentiate
it for any who downloaded it yesterday. My regrets to those did :-(
* HtmlSanitise() suppress "background-image" in .
* bugfix; ComposeSelfAddress() 'len' initialization. Rats!
************
* v0.4.0 *
************
* A NOTE TO LANGUAGE FILE AUTHORS. Messages can be used in all sorts of
contexts, particularly inside string literal quotes - both single and double.
It is therefore necessary to substitute the HTML entities ", ’,
etc., for anything that might be misinterpreted as JavaScript code quotes (i.e.
" (0x22) and ' (0x27)).
* A NOTE TO VMS APACHE SITES. There is currently an issue with SWS 2.0 and
2.1 when POSTing request bodies greater than 64kB. This potentially affects
the uploading of attachment files, personal newmail audio files, and possibly
editing the text of extremely large messages. This issue is currently under
investigation by the HP OpenVMS Secure Web Browser/Server Project Team.
* French language message file courtesy Jean-Pierre Petit (esme.fr).
* Ensure detected MIME parse problems are reported by MimeDecParseBody()
and all callers of the function act appropriately to suspend MIME processing on
that particular message.
* Remove the message count from [<<<][9_messages]{range}[>>>] dialog range
button. It was observed to be a bit confusing and contributing little of
informational value.
* Move input focus to the field most appropriate to the stage of message
composition. Default to the message body text.
* The username is no longer included when generating the form action URI
unless the POSTMASTER facility is in use. The URI path shown when using
soyMAIL now remains something like /cgi-bin/soymail/~ rather than
/cgi-bin/soymail/~DANIEL This reduces the leakage of potentially sensitive
information (often the VMS username) through the HTTP "Referer:.." header if
links included in email messages are selected. The user of soyMAIL is still
available in local access logs via the authenticated username field.
* bugfix; Old habits die slowly - do not upper-case the username component
when parsing it from the path in RequestPrivate() as this can interfere with
VMS external authentication.
* bugfix; The self address and the "From:" RFC822 header field should be
identical. ComposeSelfAddress() is now used to generate this/these addresses.
* bugfix; allow MIME related headers (e.g. "Content-type:") to precede the
"MIME-version:" header. Cancel the MIME interpretation if the version header
is not ultimately found in the message header.
************
* v0.3.9 *
************
* Corrected the Install and Admin document Apache authorization rule to be
(should check my setup rather than just
imagining what it might be!)
* The message display page now has an additional message disposition button
panel after longer messages (currently 32 lines).
* Messages [option_soy_apply] and [option_soy_restore] abbreviated.
* bugfix; CgiLibEnvironmentInit() for VMS Apache SWS V2.n and later (as with
Apache CSWS V1.n) freopen("mrs=16384"). This caused fwrites() (RMS, C-RTL
buffer?) larger than some magic number (65535, 32767?) to fail.
************
* v0.3.8 *
************
* Support the VMS Mail copy-send/forward/reply user options in the soyMAIL
compose page by appropriately adding the [SELF] address to the CC field when
[reply], [reply-all], [forward] or [compose] is used. That address can be
cleared from the CC field (if no copy is required for this message) and is only
added the once.
* As 'convenience functionality' when the new mail message count gets out of
step with the actual contents of the NEWMAIL folder (as it sometime is wont to
do) then reset it. Implemented by CallMailGoToNewMail().
* Refine [logout] mechanism to improve overall behaviour and avoid a hole if
MSIE [cancel]s. Still no guarantees of course because this is basically a
kludge that tries to hoodwink the browser into thinking it's cached credentials
are no longer valid. The main menu [logout] button now has associated
JavaScript confirm explaining the logout basics (see [logout_confirm] below)
and allowing an opportunity to cancel.
* Language file message [logout_done] removed, [logout_confirm],
[logout_not] and [message_html_to_plain] added.
* Configuration directive [greeting] added to allow an initial site-specific
message shown in the status panel. Overrides the language file [greeting]
message.
* Add rudimentary HTML to plain-text conversion. This allows HTML-only
messages to be read and replied-to as plain text and for sites without an HTML
plug-in editor to respond to HTML messages.
* Make the message type default plain-text first, then HTML if available,
rather than HTML never.
* [close] button now has a JavaScript confirm for compose page.
* bugfix; MainMenuRequest() FOLDER_LIST_CHANGE detect 't' rather than '1'.
* bugfix; CallMailMessageDelete() close mail file to empty the WASTEBASKET
before continuing with request. This prevents a 'phantom' WASTEBASKET folder
appearing in the folder list.
* bugfix; CallMailMessageCopyMove() adjust new message count when changing
contents of NEWMAIL folder regardless of whether it's a copy or a move.
************
* v0.3.7 *
************
* Wish-list; main menu [compose][^] (open in new window) button.
* The main menu [compose] button should provide a blank message regardless
of where it's used from (including the message read page which it didn't prior
to this change), with the exception of the message composition page itself when
it should propagate any in-composition message.
* For child windows (basically those opened with a [^] button) have the main
menu provide a [close] button. This both indicates it is not the primary
soyMAIL window and provides an obvious mechanism to close it when finished.
* Provide a more informative message if CallMailGetUserProfile() reports
MAIL$_NOSUCHUSER because of no profile entry (e.g. new account before mail).
* bugfix; MimeDecProcessPart() sanity check on pointer not length (after all
you can have empty content!)
* bugfix; ContactsEdit() no sanity check on un-specified contact, just
memset() zero it and continue as a 'new' entry.
************
* v0.3.6 *
************
* Wish-list; optional folder buttons on left-side of message listing. These
can be enabled from the options page using the "Folder buttons" selector.
* Support saving message as "message/rfc822" 'attachment'. This will allow
entire messages to be attached and forwarded with other messages.
* Refine MimeDecParseBody() to accomodate "message/rfc822" attachments and
any such internal MIME parts. This issue was reported by Frank Weichert.
* Modified [reply-to] option to [smtp-from] and in conjunction with
[personal-name] have ComposePageRequest() generate a "From:" header more in
line (though not identical) with TCPIP$SMTP_FROM behaviour.
* Add explicit [reply-to] button and field to the composition page so that
messages can individually have a reply-to set against them.
* ComposeMime() add client traceability information to "Received:" header
and "Message-ID:" fields. These now have the format
Received: from () for
@ by
(SOYMAIL AXP-n.n.n) with HTTP;
Message-ID: ...soymail@
* Change default (non-specified) MIME transfer encoding from 7bit to 8bit.
This allows sloppy/non-compliant agents a bit more latitude with non-ASCII
characters (e.g. umlautes).
* Bring 'normal' edit window (and message transmission) line length back
from 78 characters to 72 characters (in line with netiquete 'recommendations').
* bugfix; ComposeMime() default charset should be ISO-8859-1 not IS0-8859-1
* bugfix; AttachComposeList() attachment size calculation
* bugfix; RequestParsePath() attachment names can contain '/'
* bugfix; SearchKeyword() lower-case the keyword!
************
* v0.3.5 *
************
Initial public (well, info-WASD) BETA release.