Giter Club home page Giter Club logo

hypermail's Introduction

                             Hypermail

                          Version:  2.4.x

This is a release of the 2.4.x version of hypermail.

Hypermail is a program that takes a file of mail messages in UNIX mailbox
format and generates a set of cross-referenced HTML documents. 

SECURITY WARNING: 
   Do not put hypermail's output anyplace where a web server might have 
   server side includes (SSI) enabled unless you are sure you know what 
   you are doing. 

WARNING: 
   There once existed a program call "mail" that came with hypermail.
   'mail' utility has not installed by default for the last two years.  
   This program has been disabled because it was probably easy for spammers 
   to use as an open relay. It also had problems with enabling malicious 
   use of JavaScript and CRLF Injection.  The 'mail' utility is a historic 
   reclic and will not be supplied in future versions.  Its functionality 
   has been replaced with a warning that anyone using it should remove it 
   immediately.  

See the INSTALL file to get started. For a description of how to use it,
see the hypermail.html, hmrc.html, and hypermail-faq.html files that come
in the docs/ directory.
Please refer to Changelog for the list of recent changes.

Hypermail is distributed under the GNU GPL license (see the file COPYING for
details). Some programs that are distributed with it in the archive and
contrib directories have different licenses - check the individual files for
details.

Hypermail Background:
=====================

Hypermail was originally designed and developed by Tom Gruber for
Enterprise Integration Technologies (EIT) using Common Lisp. 

It was later rewritten in C by Kevin Hughes in 1994 while Kevin 
worked at EIT. 

License Evolution:
------------------

In the spring of 1997, Kevin Hughes heavily pressed Hewlett-Packard
(who was now the legal owner of Hypermail, since EIT was bought by
VeriFone, which was bought by Hewlett-Packard) into placing a free
software license onto his old EIT software.  They officially put the
GNU GPL license on *all* of Kevin's old EIT software, opening it up to
more open methods of development and distribution. So now Hypermail
is under GPL.

EIT's net.disappearance:
------------------------

A very old and established government contractor company called 
Electronic Instrumentation and Technology Inc. made legal moves to 
obtain the eit.com domain. Since VeriFone/HP had no interest in keeping 
EIT, dissolved it completely.  As this company had a trademark on EIT, 
the domain name was given to them. Elizabeth Batson of EIT/VeriFone/HP 
informed Kevin he could maintain all his old software himself wherever 
he wished to put it.

Kevin and ongoing Hypermail Development:
----------------------------------------

Kevin left Hewlett-Packard in 1997 and helped form a new company 
called Veo Systems (www.veosystems.com) with his old boss Marty 
Tenenbaum, who founded EIT. Kevin did not have the time to maintain 
any of his old software, so he was looking for different parties to 
help maintain it and take over different pieces. For instance, Getstats 
has been obsoleted by Analog (http://www.statslab.cam.ac.uk/~sret1/analog/). 
SWISH has been taken over by the SWISH-E project 
(http://sunsite.berkeley.edu/SWISH-E/) and many people have been doing 
good things with it.  April 17, 1998 Kevin passed hypermail development 
to Kent Landfield (http://www.hypermail.org/). Kent had been 
supporting an enhanced version of hypermail he had been using for the 
last few years. It has gradually become a group effort, with Peter McCluskey
<[email protected]> often acting as the leader during its heydays. 
Since a couple of years, it is stable and mostly unmaintained. W3C continues
to contribute to this repository, although infrequently, sharing with the
community enhancements and bug fixes originating from its use of
hypermail.

General:
========

This version has been tested on the platforms listed below. If you would 
like to send portability patches or confirmation that it works on a certain
platform, please do.  There should not be toooo many changes that need to be 
made.

This version of hypermail has substantial support for attachments and for
splitting archives into subdirectories. It also allows an administrator to
customize the header and footers to match their local needs.  This allows
you to have hypermail facilities better integrated into your web site. 

This version is an integration of patches that Kevin had received through
the years, and new features through the individual efforts many people.  
This has been run through lint, Insight and Purify and has been cleaned up 
accordingly.

   * archive - general archive utilites that are useful in managing
               list archives. Much of the functionality here has been
               rendered obsolete by the folder_by_date option.
   * contrib - contributed hypermail relate utilities
   * configs - sample hypermail configuration files,
   * docs    - documentation and documentation support files,
   * libcgi  - support library for the mail utility,
   * src     - here's the beef,
   * tests   - directory for supporting local testing,

Warning:
========

Take the time to read the KNOWN_BUGS file so that you are aware of 
things that might affect your use of hypermail.

GIT Repository:
===============

Hypermail's code base has migrated from CVS to git and after a
residence at sourceforge, now resides at github:

  https://github.com/hypermail-project/hypermail/

CVS Server:
===========

The hypermail CVS repository has been retired. Hypermail's code base
now resides at github (see above).

Thanks to Ashley M. Kirchner <[email protected]> for having
hosted and keep alive the CVS repository during the years.

Getting Help:
=============

    There is no active dedicated mailing list for hypermail support or
    development.

    Please use hypermail's github repository issue tracker for all bug
    reports, feature requests, patches, and other program-related
    things. This project is under low-maintenance priority.

    You can browse the old hypermail development mailing list archives
    from the historical hypermail project homepage:

       http://hypermail-project.org/

Additionally:
=============

    You'll find the image "hypermail.gif" included with the source;
    this icon is for your use in your Hypermail-related pages and links 
    to them. If you are talented with graphics and would like to donate
    new icons and images to the hypermail effort, please feel free.


Regular expression support is provided by the PCRE library package,
which is open source software, written by Philip Hazel, and copyright
by the University of Cambridge, England. See http://www.pcre.org/.

hypermail's People

Contributors

bagder avatar bapt avatar bshannon avatar cacsar avatar ikuraj avatar jkbzh avatar oz-djh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hypermail's Issues

Critmail features (fine-grained links, txt2html style html,

Merges the following features from Critmail:
set_linkquotes, BFALSE, CFG_SWITCH:
Set this to On to create fine-grained links from quoted
text to the text where the quote originated. It also improves
the threads index file by more accurately matching messages
with replies. Note that this may be rather cpu intensive (see
the searchbackmsgnum option to alter the performance).

set_showhtml, INT, CFG_INTEGER:
Adds a new choice for more complex conversion to html similar to that in
http://www.cs.wustl.edu/~seth/txt2html/.

set_monthly_index, BFALSE, CFG_SWITCH:
Set this to On to create additional index files broken up by month.
A summary.html file will provide links to all the monthly indices.

set_yearly_index, BFALSE, CFG_SWITCH:
Set this to On to create additional index files broken up by year.
A summary.html file will provide links to all the yearly indices.

set_thread_file_depth, INT, CFG_INTEGER:
If nonzero, break the threads index file into files,
with the initial message of each thread in the main index file
along with links to files containing the replies. Setting this
to 1 creates one file for each thread that has replies, and is
recommended for archives with over a few hundred messages.
Setting this greater than 1 will produce multiple levels of files
for each thread whose replies are nested by more than 1 level,
but that is rarely useful.

set_link_to_replies, NULL, CFG_STRING:
If the linkquotes option is on, specifying a string here
causes it to generate links from original quoted text the
location(s) in replies which quote them. The string
is used to display the link.

set_quote_hide_threshold, INT, CFG_INTEGER:
If the linkquotes option is on, setting this to an
integer less than 100 will cause it to replace quoted
text with one-line links if the percent of lines in the
message body (exluding the signature) consisting of
quoted text exceeds the number indicated by this option.

set_quote_link_string, NULL, CFG_STRING:
If the quote_hide_threshold option is being used, the
quote_link_string will be used if available to display the
link that replaces the quoted text. If no string is specified
here, the first line of each section ofquoted text will used.

See http://www.hypermail.org/hypermail//mail-archive/1999/Sep/0064.html
for more detail. This patch was created on June 25, 2000.

Reported by: PeterMcCluskey

configure runs succesfully even if yacc is not installed

pcre-8.43 configuration summary:

    Install prefix .................. : /usr/local
    C preprocessor .................. : gcc -E
    C compiler ...................... : gcc
    C++ preprocessor ................ : g++ -E
    C++ compiler .................... : g++
    Linker .......................... : /usr/bin/ld -m elf_x86_64
    C preprocessor flags ............ : 
    C compiler flags ................ : -g -O2 -fvisibility=hidden
    C++ compiler flags .............. : -O2 -fvisibility=hidden -fvisibility-inlines-hidden
    Linker flags .................... : 
    Extra libraries ................. : 

    Build 8 bit pcre library ........ : yes
    Build 16 bit pcre library ....... : no
    Build 32 bit pcre library ....... : no
    Build C++ library ............... : yes
    Enable JIT compiling support .... : no
    Enable UTF-8/16/32 support ...... : no
    Unicode properties .............. : no
    Newline char/sequence ........... : lf
    \R matches only ANYCRLF ......... : no
    EBCDIC coding ................... : no
    EBCDIC code for NL .............. : n/a
    Rebuild char tables ............. : no
    Use stack recursion ............. : yes
    POSIX mem threshold ............. : 10
    Internal link size .............. : 2
    Nested parentheses limit ........ : 250
    Match limit ..................... : 10000000
    Match limit recursion ........... : MATCH_LIMIT
    Build shared libs ............... : yes
    Build static libs ............... : yes
    Use JIT in pcregrep ............. : no
    Buffer size for pcregrep ........ : 20480
    Link pcregrep with libz ......... : no
    Link pcregrep with libbz2 ....... : no
    Link pcretest with libedit ...... : no
    Link pcretest with libreadline .. : no
    Valgrind support ................ : no
    Code coverage ................... : no

src/pcre configured properly
gcc -shared  pcreposix.lo  -Wl,--rpath -Wl,/home/kingram/src/hypermail/src/pcre/.libs -Wl,--rpath -Wl,/usr/local/lib  -L/home/kingram/src/hypermail/src/pcre /home/kingram/src/hypermail/src/pcre/.libs/libpcre.so  -Wl,-soname -Wl,libpcreposix.so.0 -o .libs/libpcreposix.so.0.0.0
(cd .libs && rm -f libpcreposix.so.0 && ln -s libpcreposix.so.0.0.0 libpcreposix.so.0)
(cd .libs && rm -f libpcreposix.so && ln -s libpcreposix.so.0.0.0 libpcreposix.so)
ar cru .libs/libpcreposix.a  pcreposix.o 
ar: `u' modifier ignored since `D' is the default (see `U')
ranlib .libs/libpcreposix.a
creating libpcreposix.la
(cd .libs && rm -f libpcreposix.la && ln -s ../libpcreposix.la libpcreposix.la)
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  -I.   ./pcretest.c
./pcretest.c: In function ‘callout’:
./pcretest.c:327:5: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 if ((int)(cb->callout_data) != 0)
     ^
./pcretest.c:329:43: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
   fprintf(outfile, "Callout data = %d\n", (int)(cb->callout_data));
                                           ^
./pcretest.c:330:10: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
   return (int)(cb->callout_data);
          ^
./pcretest.c: In function ‘main’:
./pcretest.c:1249:31: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
         extra->callout_data = (void *)callout_data;
                               ^
/bin/bash ./libtool --mode=link gcc  -g -O2  -Ipcre -DTRIO_MINIMAL  -I. -I.   -o pcretest  pcretest.o \
        -lpcre libpcreposix.la
gcc -g -O2 -Ipcre -DTRIO_MINIMAL -I. -I. -o .libs/pcretest pcretest.o  ./.libs/libpcreposix.so -L/home/kingram/src/hypermail/src/pcre /home/kingram/src/hypermail/src/pcre/.libs/libpcre.so -Wl,--rpath -Wl,/usr/local/lib
creating pcretest
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  -I.  -DIS_UNIX ./pcregrep.c
/bin/bash ./libtool --mode=link gcc  -g -O2  -Ipcre -DTRIO_MINIMAL  -I. -I. -o pcregrep pcregrep.o -lpcre
gcc -g -O2 -Ipcre -DTRIO_MINIMAL -I. -I. -o .libs/pcregrep pcregrep.o  /home/kingram/src/hypermail/src/pcre/.libs/libpcre.so -Wl,--rpath -Wl,/usr/local/lib
creating pcregrep
make[2]: Leaving directory '/home/kingram/src/hypermail/src/pcre'
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  base64.c
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  date.c
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  domains.c
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  file.c
file.c: In function ‘matches_existing’:
file.c:811:20: warning: implicit declaration of function ‘parse_old_html’ [-Wimplicit-function-declaration]
  msgids_are_same = parse_old_html(msgnum, eptr, 0, 0, NULL, 1);
                    ^~~~~~~~~~~~~~
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  hypermail.c
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  lang.c
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  lock.c
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  mem.c
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  parse.c
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  print.c
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  printfile.c
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  string.c
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  struct.c
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  uudecode.c
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  dmatch.c
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  setup.c
setup.c: In function ‘PreConfig’:
setup.c:960:33: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
          *(int *)cfg[i].value = (int)defval;
                                 ^
gcc  -c -g -O2  -Ipcre -DTRIO_MINIMAL  threadprint.c
Expect 13 shift/reduce conflicts.
yacc getdate.y
make[1]: yacc: Command not found
make[1]: *** [Makefile:86: getdate.c] Error 127
make[1]: Leaving directory '/home/kingram/src/hypermail/src'
make: *** [Makefile:39: hypermail] Error 2

reverse order vs First message in mailbox does not match fir

Just installed hypermail 2.3.0 on Linux. Was using 2.1.4.
Whenever I run hypermail on an mbox, it gives me this:
First message in mailbox does not match first message in archive or obsolete gdbm file present.
Not using gdbm.
After checking a few things out, my hypothesis is this: I run it with reverse=1, so the most recent email appears at the top of the index.html page. This is opposite to the mailbox, where the most recent email is at the end of the file. (But the oldest email archive is 0000.html.)
Could this be what is going on here? If so, what do you suggest?
Thank you,
Ron

Reported by: *anonymous

Cannot overwrite archive files without appending

There is an issue with the way that archives are being overwritten. I have the overwrite directive set to 'On' and the increment directive set to '0'. Having increment = 0 should overwrite the archives with the contents of the mbox. This would be equivalent to setting increment to 'Off' in version 2.2.0 (and earlier).

However, what occurs is the following output:

> hypermail: First message in mailbox does not match first message in archive
> or obsolete gdbm file present.
> Maybe you want to enable the mbox_shortened option?

I do not require the use of the mbox_shortened option, as I am not changing the contents of the mbox. I simply want to overwrite the entire archive. Setting the increment directive to '1' or '-1' causes the entire contents of the mbox to be appended to the existing archive. There needs to be a way to simply overwrite the archive with the exact same contents of the mbox, as with earlier versions of hypermail.

Please let me know if there is any additional information required.

Reported by: splorp

Help setting up Hypermail ???

Hello,
I was hoping to contact someone who could help
me setup HTML Hypermail on my website to have a
small foreum for tracking messages. I am not a
programmer and it seems a bit deep to me. I
downloaded and read most of the documents on
the hypermail.org site but again, it seems just a little
bit over my head.
Thanks for your consideration.
Ken Osborn
Box 4983
Boulder, Co. 80306
[email protected]

Reported by: *anonymous

Modernise docs and helper files; adapt to GH

A few things in the codebase and the documentation look odd in the GH world: there's no .gitignore, the license is more commonly called LICENSE[.md], projects tend to format documentation using Markdown instead of 90's plain-text indentation…

On a more meaningful note, if the code is to evolve it would be more inviting to new contributors if it made use of continuous integration tools that are popular on the GHverse, eg Travis; if it had a test suite, etc.

The suggestions given by Forkability may be a good starting point.

Attachments not deleted using filter_out

Problem: attachments are created for filter[ed]_out messages

To reproduce the problem:

i) create a mbox file with name "mymbox" with 2 messages:
. message 1 with Subject: a
. message 2 with Subject: b

ii) ( message 2 has an atachment )

iii) create the following .hmrc file:

showheaders=0
filter_out=Subject: b
delete_level = 0

iv) run hypermail with the following comamnd:

hypermail -p -u -x -d whatever -m mymbox

v) Expected output: no attachments files created by hypermail in directory whatever

vi) Actual output: an attachment file is created for message b in directory whatever

vii) what is wrong? message b was filtered out, so no attachments files are expected for this message!

Thank you very much.

Reported by: ombzzz

spamify_replacedomain() - incorrect handling of addresses ins de <>

If input is a string like "<[email protected]>\n", we need to take
care to substitute just the domain part, and not simply everthing
from the @ sign to the end of the string, lest we end up with e.g.
"<fred_at_nospam_maam".

---
 src/getname.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/src/getname.c b/src/getname.c
index 2001cd3..8158042 100644
--- a/src/getname.c
+++ b/src/getname.c
@@ -57,6 +57,7 @@ char *spamify_replacedomain(char *input, char *antispamdomain)
     int domainlen = strlen(antispamdomain);

     char *atptr = strchr(input, '@');
+    char *gtptr = strchr(input, '>');

     if (domainlen > 0) {
         newlen = newlen + domainlen;
@@ -72,6 +73,12 @@ char *spamify_replacedomain(char *input, char *antispamdomain)
         if (domainlen > 0) {
             /* append the new domain */
             strcpy(newbuf + index + strlen(set_antispam_at), antispamdomain);
+            /* handle possible '>' character after the domain */
+            if (gtptr) {
+                int i = gtptr - atptr;
+                if (i > 0)
+                    strcpy(newbuf + index + strlen(set_antispam_at) + strlen(antispamdomain), gtptr);
+            }
         }
         else {
             /* append the part after the @ */
-- 
1.7.2.5

broken links / RFC 2646 format=flowed support

Messages may be sent in a format called format=flowed where the lines are wrapped in a special way that lets them be reliably unwrapped later. Hypermail doesn't handle this format. This results in broken links when a paragraph is flowed and the link is broken out between two lines. If format=flowed were supported, the lines would be unwrapped before applying the link detection code.

sort by date problem

If I build an archive using from serveral mailboxes
(either combining into a single file first or using the
hypermail -u option), the result has the same day being
listed multiple times. Here is an example:

Saturday, 2 July
Sunday, 3 July
Monday, 4 July
Tuesday, 5 July
Friday, 1 July
Saturday, 2 July
Sunday, 3 July
Monday, 4 July
Tuesday, 5 July

They messages sorted in each day seem to share the
timezone and the day is repeated for each timezone.

Maybe this is a config problems. I’m not really sure.

Reported by: brianlain

Cannot compile on Mac

macOS Big Sur 11.0.1, hypermail source code downloaded from github on Dec 4th 2020. Compilation fails with error file.c:56:12: error: expected parameter declarator.

cd Desktop/hypermail-master
./configure --prefix=$HOME/hypermail
checking build system type... i386-apple-darwin20.1.0
checking host system type... i386-apple-darwin20.1.0
checking target system type... i386-apple-darwin20.1.0
checking cached information... ok
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for bison... bison -y
checking for bison... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes
checking whether make sets $(MAKE)... yes
checking for ar... ar
checking for ranlib... ranlib
checking that the compiler works... yes
checking whether to enable -Wall... no
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking alloca.h usability... yes
checking alloca.h presence... yes
checking for alloca.h... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking ctype.h usability... yes
checking ctype.h presence... yes
checking for ctype.h... yes
checking dirent.h usability... yes
checking dirent.h presence... yes
checking for dirent.h... yes
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking malloc.h usability... no
checking malloc.h presence... no
checking for malloc.h... no
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking pwd.h usability... yes
checking pwd.h presence... yes
checking for pwd.h... yes
checking stdarg.h usability... yes
checking stdarg.h presence... yes
checking for stdarg.h... yes
checking stdio.h usability... yes
checking stdio.h presence... yes
checking for stdio.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/dir.h usability... yes
checking sys/dir.h presence... yes
checking for sys/dir.h... yes
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking for sys/stat.h... (cached) yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for sys/types.h... (cached) yes
checking time.h usability... yes
checking time.h presence... yes
checking for time.h... yes
checking for unistd.h... (cached) yes
checking whether stat file-mode macros are broken... no
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking whether time.h and sys/time.h may both be included... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking for strftime... yes
checking for mkdir... yes
checking for strdup... yes
checking for strstr... yes
checking for strtol... yes
checking for memcpy... yes
checking for memset... yes
checking for lstat... yes
checking for strcasecmp... yes
checking for strcasestr... yes
checking for getpwuid... yes
checking for getopt... yes
checking for snprintf... yes
checking for memmove... yes
checking for strerror... yes
checking for size_t... yes
checking for gdbm_open in -lgdbm... no
checking for GDBM support... checking for gdbm_open in -lgdbm... (cached) no
checking gdbm library... none found
checking for iconv... configure: WARNING: No gdbm library found - will limit a few features
no
checking iconv.h usability... yes
checking iconv.h presence... yes
checking for iconv.h... yes
configure: using bundled libtrio
  setting INCLUDES to "-Itrio"
  setting LDFLAGS to "-Ltrio"
  setting CPPFLAGS to "-DTRIO_MINIMAL"
configuring package in src/trio now
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for gcc option to accept ISO C99... none needed
checking for gcc option to accept ISO Standard C... (cached) none needed
checking for a BSD-compatible install... /usr/bin/install -c
checking for ranlib... ranlib
checking for IEEE compilation options... none
checking for sigaction()... true
configure: creating ./config.status
config.status: creating Makefile
src/trio configured properly
configure: checking for PCRE regular expressions library
configure: checking for a system libpcre
checking for pcre-config... no
configure: using bundled PCRE regular expressions library
  adding "-Ipcre" to INCLUDES
  adding "-Lpcre/.libs" to LDFLAGS
configuring package in src/pcre now
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking whether make supports the include directive... yes (GNU style)
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... rm: conftest.dSYM: is a directory
gcc3
checking for ar... ar
checking the archiver (ar) interface... ar
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking dependency style of gcc... (cached) gcc3
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... rm: conftest.dSYM: is a directory
rm: conftest.dSYM: is a directory
yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for int64_t... yes
checking build system type... x86_64-apple-darwin20.1.0
checking host system type... x86_64-apple-darwin20.1.0
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
checking if the linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) is GNU ld... no
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 786432
checking how to convert x86_64-apple-darwin20.1.0 file names to x86_64-apple-darwin20.1.0 format... func_convert_file_noop
checking how to convert x86_64-apple-darwin20.1.0 file names to toolchain format... func_convert_file_noop
checking for /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... dlltool
checking how to associate runtime and link libraries... printf %s\n
checking for archiver @FILE support... no
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /bin/dd
checking how to truncate binary pipes... /bin/dd bs=4096 count=1
checking for mt... no
checking if : is a manifest tool... no
checking for dsymutil... dsymutil
checking for nmedit... nmedit
checking for lipo... lipo
checking for otool... otool
checking for otool64... no
checking for -single_module linker flag... yes
checking for -exported_symbols_list linker flag... yes
checking for -force_load linker flag... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... yes
checking for gcc option to produce PIC... -fno-common -DPIC
checking if gcc PIC flag -fno-common -DPIC works... yes
checking if gcc static flag -static works... no
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... darwin20.1.0 dyld
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
checking if the linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) is GNU ld... no
checking whether the g++ linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) supports shared libraries... yes
checking for g++ option to produce PIC... -fno-common -DPIC
checking if g++ PIC flag -fno-common -DPIC works... yes
checking if g++ static flag -static works... no
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... darwin20.1.0 dyld
checking how to hardcode library paths into programs... immediate
checking whether ln -s works... yes
checking whether the -Werror option is usable... yes
checking for simple visibility declarations... yes
checking for ANSI C header files... (cached) yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking for sys/types.h... (cached) yes
checking for sys/stat.h... (cached) yes
checking dirent.h usability... yes
checking dirent.h presence... yes
checking for dirent.h... yes
checking windows.h usability... no
checking windows.h presence... no
checking for windows.h... no
checking for alias support in the linker... yes
checking string usability... yes
checking string presence... yes
checking for string... yes
checking bits/type_traits.h usability... no
checking bits/type_traits.h presence... no
checking for bits/type_traits.h... no
checking type_traits.h usability... no
checking type_traits.h presence... no
checking for type_traits.h... no
checking for strtoq... yes
checking for long long... yes
checking for unsigned long long... yes
checking for an ANSI C-conforming const... yes
checking for size_t... yes
checking for bcopy... yes
checking for memmove... yes
checking for strerror... yes
checking zlib.h usability... yes
checking zlib.h presence... yes
checking for zlib.h... yes
checking for gzopen in -lz... yes
checking bzlib.h usability... yes
checking bzlib.h presence... yes
checking for bzlib.h... yes
checking for libbz2... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating libpcre.pc
config.status: creating libpcre16.pc
config.status: creating libpcre32.pc
config.status: creating libpcreposix.pc
config.status: creating libpcrecpp.pc
config.status: creating pcre-config
config.status: creating pcre.h
config.status: creating pcre_stringpiece.h
config.status: creating pcrecpparg.h
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
config.status: executing script-chmod commands
config.status: executing delete-old-chartables commands

pcre-8.43 configuration summary:

    Install prefix .................. : /Users/kmitko/hypermail
    C preprocessor .................. : gcc -E
    C compiler ...................... : gcc
    C++ preprocessor ................ : g++ -E
    C++ compiler .................... : g++
    Linker .......................... : /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
    C preprocessor flags ............ : 
    C compiler flags ................ : -g -O2 -fvisibility=hidden
    C++ compiler flags .............. : -O2 -fvisibility=hidden -fvisibility-inlines-hidden
    Linker flags .................... : 
    Extra libraries ................. : 

    Build 8 bit pcre library ........ : yes
    Build 16 bit pcre library ....... : no
    Build 32 bit pcre library ....... : no
    Build C++ library ............... : yes
    Enable JIT compiling support .... : no
    Enable UTF-8/16/32 support ...... : no
    Unicode properties .............. : no
    Newline char/sequence ........... : lf
    \R matches only ANYCRLF ......... : no
    EBCDIC coding ................... : no
    EBCDIC code for NL .............. : n/a
    Rebuild char tables ............. : no
    Use stack recursion ............. : yes
    POSIX mem threshold ............. : 10
    Internal link size .............. : 2
    Nested parentheses limit ........ : 250
    Match limit ..................... : 10000000
    Match limit recursion ........... : MATCH_LIMIT
    Build shared libs ............... : yes
    Build static libs ............... : yes
    Use JIT in pcregrep ............. : no
    Buffer size for pcregrep ........ : 20480
    Link pcregrep with libz ......... : no
    Link pcregrep with libbz2 ....... : no
    Link pcretest with libedit ...... : no
    Link pcretest with libreadline .. : no
    Valgrind support ................ : no
    Code coverage ................... : no

src/pcre configured properly
checking whether to use fnv hash library for non-sequential filenames... no
checking for gethostbyaddr in -lsocket... no
checking for gethostbyaddr in -lsocket... (cached) no
checking for inet_addr in -lsocket... no
checking for inet_addr in -lsocket... (cached) no
checking for inet_addr in -lnsl... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating archive/Makefile
config.status: creating docs/Makefile
config.status: creating libcgi/Makefile
config.status: creating src/Makefile
config.status: creating tests/testhm
config.status: creating src/defaults.h
config.status: creating config.h
make
rm -f pcre_chartables.c
ln -s ./pcre_chartables.c.dist pcre_chartables.c
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-am
  CC       pcretest-pcretest.o
  CC       pcretest-pcre_printint.o
  CC       libpcre_la-pcre_byte_order.lo
  CC       libpcre_la-pcre_compile.lo
  CC       libpcre_la-pcre_config.lo
  CC       libpcre_la-pcre_dfa_exec.lo
  CC       libpcre_la-pcre_exec.lo
  CC       libpcre_la-pcre_fullinfo.lo
  CC       libpcre_la-pcre_get.lo
  CC       libpcre_la-pcre_globals.lo
  CC       libpcre_la-pcre_jit_compile.lo
  CC       libpcre_la-pcre_maketables.lo
  CC       libpcre_la-pcre_newline.lo
  CC       libpcre_la-pcre_ord2utf8.lo
  CC       libpcre_la-pcre_refcount.lo
  CC       libpcre_la-pcre_string_utils.lo
  CC       libpcre_la-pcre_study.lo
  CC       libpcre_la-pcre_tables.lo
  CC       libpcre_la-pcre_ucd.lo
  CC       libpcre_la-pcre_valid_utf8.lo
  CC       libpcre_la-pcre_version.lo
  CC       libpcre_la-pcre_xclass.lo
  CC       libpcre_la-pcre_chartables.lo
  CCLD     libpcre.la
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .libs/libpcre.a(libpcre_la-pcre_string_utils.o) has no symbols
  CC       libpcreposix_la-pcreposix.lo
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .libs/libpcre.a(libpcre_la-pcre_string_utils.o) has no symbols
  CCLD     libpcreposix.la
  CCLD     pcretest
  CC       pcregrep-pcregrep.o
  CCLD     pcregrep
  CXX      pcrecpp_unittest-pcrecpp_unittest.o
  CXX      libpcrecpp_la-pcrecpp.lo
  CXX      libpcrecpp_la-pcre_scanner.lo
  CXX      libpcrecpp_la-pcre_stringpiece.lo
  CXXLD    libpcrecpp.la
  CXXLD    pcrecpp_unittest
  CXX      pcre_scanner_unittest-pcre_scanner_unittest.o
  CXXLD    pcre_scanner_unittest
  CXX      pcre_stringpiece_unittest-pcre_stringpiece_unittest.o
  CXXLD    pcre_stringpiece_unittest
gcc -g -O2  -DTRIO_MINIMAL -Itrio -Ipcre  -c -o triostr.o triostr.c
gcc -g -O2  -DTRIO_MINIMAL -Itrio -Ipcre  -c -o trio.o trio.c
gcc -g -O2  -DTRIO_MINIMAL -Itrio -Ipcre  -c -o trionan.o trionan.c
ar ruv libtrio.a triostr.o trio.o trionan.o
a - triostr.o
a - trio.o
a - trionan.o
ranlib libtrio.a
gcc -c -g -O2  -DTRIO_MINIMAL -Itrio -Ipcre base64.c
ar: creating archive libtrio.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libtrio.a(triostr.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libtrio.a(triostr.o) has no symbols
gcc -c -g -O2  -DTRIO_MINIMAL -Itrio -Ipcre date.c
gcc -c -g -O2  -DTRIO_MINIMAL -Itrio -Ipcre domains.c
gcc -c -g -O2  -DTRIO_MINIMAL -Itrio -Ipcre file.c
file.c:56:12: error: expected parameter declarator
extern int snprintf(char *str, size_t size, const  char  *format, ...);
           ^
/Applications/XCode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h:57:39: note: expanded from macro 'snprintf'
  __builtin___snprintf_chk (str, len, 0, __darwin_obsz(str), __VA_ARGS__)
                                      ^
file.c:56:12: error: expected ')'
/Applications/XCode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h:57:39: note: expanded from macro 'snprintf'
  __builtin___snprintf_chk (str, len, 0, __darwin_obsz(str), __VA_ARGS__)
                                      ^
file.c:56:12: note: to match this '('
/Applications/XCode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h:57:28: note: expanded from macro 'snprintf'
  __builtin___snprintf_chk (str, len, 0, __darwin_obsz(str), __VA_ARGS__)
                           ^
file.c:56:12: error: conflicting types for '__builtin___snprintf_chk'
extern int snprintf(char *str, size_t size, const  char  *format, ...);
           ^
/Applications/XCode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h:57:3: note: expanded from macro 'snprintf'
  __builtin___snprintf_chk (str, len, 0, __darwin_obsz(str), __VA_ARGS__)
  ^
file.c:56:12: note: '__builtin___snprintf_chk' is a builtin with type 'int (char *, unsigned long, int, unsigned long, const char *, ...)'
/Applications/XCode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h:57:3: note: expanded from macro 'snprintf'
  __builtin___snprintf_chk (str, len, 0, __darwin_obsz(str), __VA_ARGS__)
  ^
3 errors generated.
make[1]: *** [file.o] Error 1
make: *** [hypermail] Error 2

Add per-line anchors

Please add per-line anchors so that it is possible to link into the middle of a long email. It would be nice to add this, something like

<span id="L23">  and therefore in the second step of the algorithm</span>

string.c:parseurl() doesn't understand unicode spaces

parseurl() uses isblank() and sscanf to extract a URL that is followed by a space. Howerver, if that space is
coded in UTF-8 (for example a non-breakable space 0xC2 0XA)) and takes more than one byte, the sscanf will fail to detect that and will concatenate the space to the URL.

The solution here would be to replace the sscanf by a regexp, taking advantage that hypermail already uses
PCRE for other things elsewhere.

Mail headers are not always displayed in the same order

Hi,

I noticed on some archived messages that the mail headers are not always displayed in the same order (it seems to depend on the sender's mail client).

See examples on some W3C public mailing lists:

Could Hypermail archives always display the mail headers in the same order?

I suggest either:

  • From, Date, To, Cc, Message-Id
  • From, To, Cc, Date, Message-Id

Thanks!

message/rfc822

Although the parser has code to deal with this attachment, instead of displaying it inline, this attachment is being systematically stored raw into the attachments dir and only a link is added to it.

hypermail dies on large mailbox files

I’ve experienced hypermail dying on several occassions
when handling very large mailbox files (~250MB).
Problems occurs under 2.1.4 and 2.1.5 on Solaris 8.

In order to work around the problem, I am able to go
through the mailbox file and remove the message that
hypermail dies on. Running it again, it will get past
that message, but then die at another one…usually in
the middle of outputting the author.html file. The
messages do not look obviously corrupt, although they
may not contain a Message-ID: header…

The most recent time it did this, it dumped core, so I
have a file that I can send you.

[email protected]

Reported by: xpl0re

Don't distribute libpcre with tarball...

This is not the &quot;true way&quot; when dealing with source
code from other projects, unless you really want to
maintain yet another set of library code. I would like
to see an option in the configure script to use our
currently installed libpcre software. A note of this
requirement/dependency should be made in the
documentation for hypermail.

Reported by: *anonymous

Navigation bar used in messages and indexes is the same

Configuration option ihtmlnavbar2upfile allows to set breadcrumb links and applies to both indexes and messages.

It would be good to have an addition configuration option to distinguish between navbars for indexes and messages to have more specific breadcrumbs. For example:

Navbar for the Index of a given period for a list: Home > List
Navbar for a message: Home > List > Period

long non-URL text can be misinterpreted as a URL, causing segfault

A very long plain text input line with multiple URLs might match one of the less-used URI
schemes such as "im:" followed by more than 256 characters before a "://", causing an
internal buffer to overflow, followed by a segfault.

The parseurl method has a list of URI schemes that it looks for, many of which don't end
with "://", yet the code that parses the text looking for URLs assumes that every scheme
ends with "://". The parsing could probably be fixed, but a simpler fix was to comment out
these infrequently used URI schemes, and to add a check to prevent buffer overflow.

ISO-2022-JP support is incomplete and incorrect

Setting the iso2022jp configuration variable is supposed to allow
hypermail to handle messages that might use the ISO-2022-JP character
set. Unfortunately, this support is incomplete and incorrect.

(Even more unfortunately, the i18n_body configuration variable isn't
implemented at all. If it were implemented, messages would be
transformed to utf-8, and all these problems would be avoided.)

hypermail attempts to transform anything that looks like an email
address by replacing the at sign (and optionally the domain name)
with a string (default "at") to confuse screen-scraping programs.
But if there's an "@" character in the middle of a string of
iso-2022-jp encoded Japanese characters, hypermail still converts
it, breaking the Japanese character.

When converting a utf-8 string to iso-2022-jp, hypermail always
adds the "return to ASCII" escape sequence, even if the string
ends with ASCII.

Review files INSTALL and UPGRADE

I think the contents of INSTALL and UPGRADE belong to README.md.

If not, perhaps move files like those to a subdirectory? That'd keep the root directory (the front page of the project) simple and clean.

At any rate, review those contents (simply renaming them will bring up nice markdown formatting).

HTML output: Ampersands (&amp;'s) in URLs

While trying to validate HTML generated by hypermail
I found this:

A common error occurs when including a URL which
contains an ampersand (&quot;&amp;&quot;):
This is invalid! :

&lt;a href=&quot;foo.cgi?chapter=1&amp;section=2&quot;&gt;…&lt;/a&gt;

In HTML the &quot;&amp;&quot; is assumed to begin an entity. In many
cases, browsers will recover safely from the error,
but the example used here will cause the link to fail
in Netscape 3.x (but not other versions of Netscape)
since it will assume that the author intended to write
&amp;sect;ion, which is equivalent to 告on.

To avoid problems with both validators and browsers,
always use &amp;amp; in place of &amp;:

&lt;a href=&quot;foo.cgi?chapter=1&amp;amp;section=2&quot;&gt;…&lt;/a&gt;

Solution: The URL should be parsed and if it contains
an ampersand (&quot;&amp;&quot;) this should be replaced with &quot;&amp;amp;&quot;

Cheers,
Akis

Reported by: akis

Determine current configuration file of hypermail

Hi Support,

Please let me know how to determine the configuration file getting used by Hypermail. I just want to see the path of the configuration file used by hypermail for ouput of “hypermail -v”. Also, can you please let me know if I use hypermail -c <config file>, will it be set for even after reboot of server or do I need to specify the path of config file somewhere so that after server reboot it will use this file for configuration?

Please assists.

Thanks
Saurabh

Reported by: *anonymous

Apple Mail broken multipart/related MIME format

Apple Mail's MIME messages format is broken, when it is configured to send both plain text and HTML
versions of a message by means of multipart/alternative. Under this configuration, if a user sends one or more attachments in a message, Apple mail will transform the part that carries text/html into multipart/mixed and will put there the attachments. If hypermail is configured to give top priority to text/plain, those attachments won't appear. A visual description of this coming from an actual message

multipart/alternative
#alternative 1
I 2 ├─> [text/plain, quoted, utf-8, 2.3K]
#alternative 2
I 3 └─> [multipart/mixed, 7bit, 34K]
I 4 ├─> [text/html, quoted, utf-8, 0.9K]
A 5 ├─>foo.docx [applica/vnd.openxm, base64, 23K]

Here what would be expected is that Apple Mail use multipart/alternative only for the text/plain and text/html parts and make the foo.docx attachment a sibling to that multipart/alternative block.

Even when Apple Mail is configured to send plain text, whenever an attachment is sent it seems to send the message as multipart/alternative with the attachments binded to the text/html part only.

Although this is an Apple Mail bug or design decision, it would be good if hypermail had a way to display those attachments when configured to give top priority to text/plain.

M$ Attachement extraction

I run hypermail 2.2.1 pl 0 on a cygwin 1.3.1 platform
(i686, windows 2000).

When decoding word and powerpoint attachements, an
extra ^M (15) gets added on the way.

Reported by: herve_debar

Malformed CSS declarations

The following declarations in the default hypermail style sheet are missing the closing semicolons. While this doesn’t impact the rendering of the styles in most browsers, they should be corrected for consistency.

body {color: black; background: #ffffff}
[...]
.quotelev1 {color : #990099}
.quotelev2 {color : #ff7700}
.quotelev3 {color : #007799}
.quotelev4 {color : #95c500}
.period {font-weight: bold}

Reported by: splorp

Remove deprecated files?

Files README.CVS, FILES and maybe others don't seem terribly useful. Remove them?

At the very least, move them somewhere where they don't distract or mislead casual visitors and new contributors to the project.

unknown mailer error 255

Hi,

Whenever somebody sends an email to address that is getting archived using hypermail on Solaris box, I see an error in sendmail logs "unknown mailer error 255" and it doesn't create archive of that email. I have tried changing the permissions on the folder containing archive to 777 but no luck.

Can someone please help on this?

Thanks
Saurya

Reported by: saurya1979

getname segfaults on an input string lacking a final '>'

patch below.

getname() - avoid segfault when parsing email address

When searching for "comments" containing a person's name (eg "Fred Nurk")
after an email address (eg <[email protected]>) it is possible that the
trailing > is missing. This can be caused by spamify_replacedomain() not
being careful enough in how it substitutes the domain name. In such cases
strchr() will return a value that could cause a segfault, so take a little
care that we have something valid before attempting to find the comment
segment of the header line.

In some cases the closing '>' of an email address may be missing.

diff --git a/src/getname.c b/src/getname.c
index 740ebc5..2001cd3 100644
--- a/src/getname.c
+++ b/src/getname.c
@@ -249,12 +249,15 @@ void getname(char *line, char **namep, char **emailp)
         }
         else if (*c == '<') {    /* Comment may be on the end */
             /* From: <[email protected]> Bill Campbell */
-            c = strchr(line, '>') + 1;
-            for (i = 0, len = NAMESTRLEN - 1; *c && *c != '\n' && i < len; c++)
-                name[i++] = *c;
-
-            comment_fnd = 1;
+            if (strchr(line, '>')) {
+                c = strchr(line, '>') + 1;
+                for (i = 0, len = NAMESTRLEN - 1; *c && *c != '\n' && i < len; c++)
+                    name[i++] = *c;
+ 
+                comment_fnd = 1;
+            }
     }
+
     }
     else if (strchr(line, '(')) {
         c = strchr(line, '(');
--
1.7.2.5

valid_root_domains() does not understand new domain domains

As part of identifying a valid email address, this function validates if a domain name is correct in an email address using a fixed list of valid domain names. DNS has evolved and allows a variety of domain names that are not covered by that list.

Support RFC 2231 data format

Hypermail fails to find and save the attachment filename when a mail client is using newer MIME attachment standards than hypermail recognizes. Newer Mail clients may split the filename into several fields following the procedure in RFC 2231. hypermail does not recognize this data format, so it failed to find the filename, generated its own, and as a consequence the browser doesn't know to display the file as a PDF. In my personal opinion, we should teach Hypermail to read filenames and other attachment data following RFC 2231.

Bus error when setting antispamdomain directive

I’m been playing with the MacPorts version of the hypermail 2.3.0 release. I have discovered that assigning any value to the antispamdomain directive (quoted, unquoted, whatever) results in a bus error via stdout. This error did not occur with the 2.2.0 release.

Please let me know if there is any additional information you require.

Reported by: splorp

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.