v2.4.0 is now available for download from
The following lists the changes and bug fixes in v2.4.0:
o Added the following resources:
ADDRESSMODIFYCODE Perl expressions to apply to addresses
during message header conversion.
CHECKNOARCHIVE Check "no archive" flag in messages.
LOCKMETHOD The type of archive locking performed.
SPAMMODE Perform actions to deter email address
SSMARKUP Markup at the *very* beginning of any
STDOUT Destination of stdout messages/data.
STDERR Destination of stderr messages/data.
SUBJECTTHREADS To check, or not to check, subjects when
o Added the following resource variables:
$FROMADDRNAME$ Username portion of From email address.
$FROMADDRDOMAIN$ Domain portion of From email address.
$TOADDRNAME$ Username portion of an email address
(applicable in MAILTOURL only).
$TOADDRDOMAIN$ Domain portion of an email address
(applicable in MAILTOURL only).
o A new utility program: mha-decode. The program functions
as a MIME message decoder. Can be used against mail folders
or single messages.
o The "PARENT" argument to applicable resource variables is now
called "TPARENT". This change should not affect anyone since
the "PARENT" argument did not work properly in previous
o SUBJECTHEADER and HEADBODYSEP resource changes will now affect
existing messages that are edited during normal operations or
via EDITIDX. Note, messages created from old versions of
MHonArc may not be affected.
o The default TIMEZONES settings now has a more complete list.
o Timezone acronym settings now support [+-]HHMM specifications.
o Support for ISO-2022-JP encoded strings in message headers
is now supported. It does assume that HTML viewer supports
o If Digest::MD5 is installed, md5_hex() will be used to create
message-ids for messages without message-ids. This allows
MHonArc to ignore non-message-id archived messages in ADD mode.
The MD5 digest is computed only on message header for efficieny.
If Digest::MD5 is not installed, a message-id will still be
assigned if none present, but MHonArc will not be able to
detect if message has already been archived in subsequent ADD
o Text/html filter supports the "noscript" option. If
specified, any script-related markup will be removed.
This provides added security to avoid sites being compromised
with foreign client-side scripting.
o Added the following options to mhexternal.pl (the save-to-file
filter): forceattach, forceinline, and inlineexts.
o Recognize mailing list headers as defined by RFC 2369 and
hyperlink URLs listed.
o If no boundaries exist in a multipart message (even though
a boundary is defined in the header), MHonArc will treat
the entire body as the first part. This prevents "unable
to process" warnings.
o The "<!--X-From" comment declaration at the top of converted
messages is now munged by a modified ROT13 to facilitate
anti-spam-bot measures, but still provide the "From"
information for mha-dbrecover.
o When editing message pages, the new version of the page is now
created as a temporary file and then if successfully created,
it will get renamed to its proper name. This help avoids "losing"
a message page if there is an error during page editing. The
same method is applied to the dumping of DBFILE.
o Message sorting modified to improve sorting performance when
sorting by subject and author.
o URL matching expression in mhtxtplain.pl modified to handle
Problem: Duplicate message-ids in a message's reference list
were not removed.
Solution: Array changed to my() scope caused remove_dups()
to not do anything (it takes a typeglob). Array
changed back to local().
Problem: TFIRST, TLAST, and PARENT arguments to resource
variables always produced null values.
Solution: Fixed. Note, PARENT is now TPARENT to be consistent
with other thread-related arguments.
Problem: SUBJECTHEADER resource not printed when -savemem is
Solution: Problem is due to the new resource variable handling
in 2.3. The solution is to support the editing of
SUBJECTHEADER (and HEADBODYSEP) in existing message
Problem: Multipart processing not done properly if boundary
parameter not enclosed in quotes and is terminated
by a semi-colon.
Solution: Fixed in readmail.pl.
Problem: %h not recognized in time format strings.
Problem: Use of $ICON$ will generate defective tag like
Solution: Fixed typo in join() call in mhrcvars.pl.
Problem: Some messages with specified inline images are not
having images inlined.
Solution: Content-Disposition parsing fixed.
Problem: Clip length not handled properly in resource variables.
Ie. Characters that are translated into entity
references are not handled properly when computing clip
adjustment. Incorrect clipping can occur.
Problem: MHonArc checking for writable OUTDIR in SINGLE mode.
Problem: Default resource file not read if located in MHonArc
Solution: Fixed improper assumption of @INC setting.
Problem: TLIEND not generated at proper times when thread level
goes beyond TLEVELS.
Solution: A check is made in thread index printing to generate a
TLIEND properly for TLITXT when deeper than TLEVELS.