Hypermail 2.0b1 now available

From: Kent Landfield <kent_at_hypermail-project.org>
Date: Fri, 5 Jun 1998 14:19:14 -0500 (CDT)
Message-Id: <199806051919.OAA29653_at_landfield.com>

The merged version of hypermail is now available.

This version is 2.0b1. This is a BETA version at present.

This version is an integration of patches Kevin received and new features added by the individual efforts of many people. This has been run through Purify and has been cleaned up accordingly. There are still some minor issues that will be cleaned up shortly. Even with those, this version is much better than the last version I made available and MUCH better than the original.


The latest release is available via

   FTP: ftp://ftp.landfield.com/hypermail/hypermail.tar.gz

This is a link to the actual hypermail-2.0b1.tar.gz tar file.

You can also get to the new version via the Hypermail Development Center located at


I am *very* interested in feedback on this version, positive or negative.

Systems Tested on:

This version has been tested on

...and is not guaranteed to compile under other environments.

If you are able to compile and test Hypermail on different systems, *please* let me know so I can list them. If you need to make portability changes for a certain platform, please send me just the patches you needed to get it to work so I can incorporate them into the baseline. There should not be toooo many changes that need to be made.

Changes in this release:

WARNING: There have been really too many changes to this version to

         list them all here.  What appears below are some of the 

  o Command line settings override what is in the config file. In the     past the command line variables were read and set before the config     file was read. (Needed to get the name of the config file from the     command line.) This made it hard to have a default list configuration     file and make single runs with only one variable changed. Now processing     sets the hypermail internal options by:   

  	Using Compiled in defaults specified in options.h,
            then reads Hypermail Environment variables if set,
            then looks for and reads any Configuration file specified
        and finally uses the Command line settings specified by the user.

    NOTE: THIS IS DIFFERENT THAN PAST HYPERMAIL USAGE.      o Configurable Setting (.hmrc file) or Compile Time Variable to     Domain-ize Addresses -- addresses appearing in the RFC822 field     which lack hostname can't be made into proper HREFs when Hypermail     does it's thing. They are coded with: mailto:(no%20email)   

    Because the MTA resides on the same host as the list, it is     often not require to domain-ize these addresses for delivery.     In such cases, I think it would nice if Hypermail could be     programmed to output: mailto:kent_at_landfield.com instead.     This would probably work well as a *required* definition     during compilation; however, it should not simply rely on     the output from `hostname` in case you want to override with     an MX entry or alternate domain (if you run virtual domains)   

  o Added capability to have customizable index html headers, message     html headers and html footers. Able to use substitution cookies in     the header and footer template files.   

       Substitution cookies supported:   

           %% - '%' character
           %~ - storage directory
           %e - email addr of message author - Not valid on index pages
           %h - HMURL
           %i - Message-id - Not valid on index pages
           %l - archive label
           %m - Mailto address
           %p - PROGNAME
           %s - Subject of message or Index Title
           %v - VERSION
           %u - Expanded version link (HMURL,PROGNAME,VERSION)
           \n - newline character
           \t - tab character
       Additional cookies generate the complete META lines:
           %A - Author META HTML - Not valid on index pages
                  <META NAME="Author" CONTENT="name (email)">
           %B - <BODY> html statement
           %S - Subject META TAG - Not valid on index pages
                  <META NAME="Subject" CONTENT="subject">

  o Generates META tags in articles Author and Subject.   

  o Now uses "configure" to generate the makefiles. This is rather     weak at present and needs to be added to/tested on other systems     but at least it's a start.   

  o The config.h was renamed to options.h to support configure usage.   

  o patchlevel.h added to facilitate better patches in the future. Still     need to fully integrate it's useage in version displays.   

  o Added example .rc files to show how to customize list's and their     looks.   

  o Removed the _print.c files that had existed in the 103b2 release and     replaced them with template headers/footer files.   

  o Extended archive path creation to make missing directories.   

  o Added capabilities dir pathing to allow archive creation by date     variables.    

        %d - two digit day of month (1-28/30/31)
        %D - three letter day of the week
        %m - two digit month of year (1-12)
        %M - three letter month of year (Jan, Feb, ..., Dec)
        %y - four digit year (1990,..2001)
    RC example:           hm_dir = /some/archive/listname/%y/%M
    ENV example:          HM_DIR=/some/archive/listname/%y/%M
    Command line example: -d /some/archive/listname/%y/%M   

    Expands to: /some/archive/listname/1998/May   

    All files would be archived during that run in that directory.     Subsequent executions will put the messages in the directories     according to the date the messages were received on the archive     site.   

  o All "mailto:" links can include the "subject" so that the Subject:     line of netscape mailer is automatically filled in.   

  o Fixed "Re:" and redundant "Re:" variation && MS FW...   

  o Greatly enhanced getname() to correctly deal with most all email     addresses. X.400 addresses are not well supported yet.   

  o Corrected getreply() to better support the In-Reply-To: formats. The     routine needs to revisited when a readline routine is inserted to     properly deal with continuation lines.   

  o Added additional documentation describing the Hypermail configuration     file.

  o Added additional documentation describing how to customize HTML     generated pages.   

  o Corrected many petty problems such as:

  o Change various storage length defines in hypermail.h

Patches Contributed From: "Roy T. Fielding" <fielding_at_kiwi.ics.uci.edu>

  o Fixed the umask default,   

  o Fixed default directory and file creation modes,   

  o Fixed the many date problems,   

  o Corrected one of the Message-ID bugs,   

  o Removed annoying #start/#end fragments that mess up the browser history.

Patches Contributed By: Byron Darrah <bdarr_at_sed.hac.com>

  o Added a menu bar for a header and footer on all pages and removed     the bulleted list items that it replaces.   

  o Reworked the general appearance of header and footer parts of html pages.   

  o Added the "hm_hmail" configuration parameter and -n command line     option for specifying an email address for input to a hypermail     archive.   

  o Added "New Message" and "Reply" buttons to the menu bar for submitting     messages to a hypermail based list.   

Patches Contributed From: Jared Reisinger <feety_at_hhhh.org>

  o Fixed configfile substring problem.   

  o SHOWBR, IQUOTES, SHOWHR, EURODATE, SHOWREPLIES, and MAILCOMMAND     now run-time configurable.   

  o Fixed post leap-day error.   

  o More robust Message-ID parsing.   

  o Better SHOWHTML handling for indented lines.   

  o Allow IQUOTES when not using SHOWHTML.

Patches Contributed From: Daniel Stenberg <Daniel.Stenberg_at_sth.frontec.se>

  o I had all calls to the decodeRFC2047() function moved to *after* the     merging of long lines.   

  o decodeRFC2047() now correctly concatenates two succeeding "encoded words".     I now call the function mdecodeRfc2047() since it now allocates the new     string.   

  o Now informs if the attachment wasn't properly decoded when stored to disk.     This happens if the Content-Transfer-Encoding specified isn't known to     the parser. When this happens, the attachment is stored as 8bit octetstream.        

  o Now supports the encoding type 'x-uue' for uudecoding. I think there are     mailers that use different names for the same encoding type so we better     watch out for them in the future...   

  o Added the 'demimed' field to the body struct to keep track of     header lines+ that have been RFC2047 converted already.   

  o Kent Landfield sent me an interesting mail that showed me several weird     bugs in the MIME area.

  1. The Quoted-Printable decoder bugged. A quick fix solved that.
  2. The quoted printable decoder didn't support unlimited size of the line the encoded text decodes into. I wrote a new function that seems to do it properly.
  3. Some important headers were not properly supported if they were split up on several lines. I had to rewrite the header parsing system to make this work. It now scans all headers and concatenate them into single lines before any function is trying to parse or decode them.
  4. It also showed a need for a uudecoder for the 'x-uue' encode type. This is only noted for the future as I haven't written any decoder for this format [yet].

  o decodeRFC2047 replaces the former RFC1522 function. I made it support     'encoded-words' anywhere in the line and several different ones on the     same line is now supported. The only flaw I'm still aware of now, is that     if there are two encoded-words next to each other, the result should not     show the spaces between them. My function unfortunately still does.   

  o renamed decodeRFC1522 to decodeRFC2045.   

  o decodeRFC1522 (quoted printable header decoding) didn't do well if the     ending ?= sequence was in the middle of the line. I think this function     will need more extensive testing.   

  o Attached mails' headers (To:, From:, Date: and Subject:) are now shown     in the html.   

  o Attached mails that contains attachments did force me to add a stack system     for the multipart boundary strings. Seems to work now. (Can't wait to see     an attached mail that contains an attached mail that contains ... )   

  o strcpymax() introduced to prevent buffer overflows on extra-long headers   

  o Lines starting with 'from ' messed up the parser pretty badly. It now     checks for 'From ' lines (case sensitive) with an empty preceding line     to split mails.   

  o Now extracts attachments to separate binary files.   

  o Supports multiple lined headers.   

  o Supports quoted-printable and base64 encoded headers.   

  o Supports base64 encoded text/plain   

  o Rewrote the URL and email parsing to allow multiple URLs and email     addresses on each line.   

  o Extended the original functionality to much better deal with MIMEd     mails and the standards from RFC 1521 and 1522. There are still flaws in     compliance with those but the majority of all mails using mimed texts     will be presented in a fairly decent fashion.

Patches Contributed From: David D Kilzer <ddkilzer_at_ti.com>

  o Fixed problem with 'From: ' header lines in messages with the     following format: "From: <email_at_address.com>" wherein the "name"     from the previous email message would be used instead of reverting     to the address itself.

  o URLs can now include ampersands (&) if they are preceded by question     marks (?) in the URL string.

  o Email messages with no Subject line no longer grab the previous     email's subject.

  o Reworked the order of output so that "message" links are always at     the top of the page in article pages and date/thread/subject/author     pages.

  o Now escape '%' in mail URLs.

  o Escape for '+' was wrong, changed to '%2B' (was '%22').

  o Updated replace() function to recurse on 'afterstring' variable     rather than the whole 'newstring'. More efficient and allows '%'     escaping.

  o config.h: Added configuration option for SHOW_MESSAGE_LINKS which     turns all message headers and footers off (except for the links to     the date, subject, thread and author pages). SHOW_MESSAGE_LINKS     overrides the setting of SHOWREPLIES.

  o print.c (writearticles): Removed use of currentemail, currentid,     and currentsubject by forcing use of email2, msgid2, inreply2,     subject2, and name2 when calling struct.c (hashreplylookup). This     was needed after I rearranged the order in which articles were     printed.

  o string.c (convurls): Added code in two locations for the     Message-Id code segment to recurse on the remaining portion of the     line being processed. Each Message-Id found forces a return from     convurls() after a recursive call. This prevents infinite recursion     (a Bad Thing generally speaking). Note: we assume that Message-Ids     and URLs/email addresses do NOT appear in the same line.

  o string.c (convurls): Changed format string from "%.3d" to "%.4d".     Fixed major bug in outputting links for Message-Ids.

  o string.c (convurls): Fixed assumption in code for identifying     Message-Ids that there was only one Message-Id per line. We now     stop gobbling up text used for a link with a space (' ') or a tab     ('\t').

  o string.c (convurls): Added int got_question_mark in URL processing     code to permit an ampersand ('&') in a URL provided it comes after a     question mark in the same URL (a GET method with POST data). Added     one line of code and changed another to accomplish this.

  o string.c (convurls): Added code to check whether the next item to     URL-ize is an email address (containing an at sign, '_at_'). If it is,     we break out of the URL for loop and go process the email address.

  o parse.c (loadoldheaders): Modified initial fgets() call to skip any     non-comment lines (i.e. "<html>" and "<head>").

  o string.c (makemailcommand): Added code to escape percent signs     ('%') when escaping spaces (' ') and plus signs ('+'). Percent     signs must be escaped first since other escape sequences use the     percent sign followed by a two-digit hexadecimal number. We're now     a little more MIME-compliant.

  o string.c (replace): Changed the replace() function to recurse only     on the 'afterstring' portion of the URL instead of the whole rebuilt     URL. This is both more efficient and prevents infinite recursion     problems when escaping percent signs ('%') with '%25'.

  o string.c (makemailcommand): Fixed escape sequence for plus signs     ('+') from '%22' to '%2B'.

LOTS of other small patches from lots of other helpful people. I hope to be able to more accurately list them in the final 2.0 version.


If you have suggestions you would like to make please post them to the hypermail_at_landfield.com mailing list or use the Suggestion facility on the Development Center. (The inclusion of the patches contributed by Byron Darrah <bdarr_at_sed.hac.com> were a direct result of his using the Suggestion facility.)

Enjoy! And thanks to all who contributed.

Kent Landfield                        Phone: 1-817-545-2502             
Email: kent_at_landfield.com             http://www.landfield.com/
Email: kent_at_nfr.net                   http://www.nfr.net/
Please send comp.sources.misc related mail to kent_at_landfield.com
Search the Usenet Hypertext FAQ Archive at http://www.faqs.org/faqs/
Received on Fri 05 Jun 1998 09:21:12 PM GMT

This archive was generated by hypermail 2.2.0 : Thu 22 Feb 2007 07:33:49 PM GMT GMT