"http://www.w3.org/TR/REC-html40/loose.dtd">

   Hypermail List Configuration File


The hypermail list configuration file is used to specify list specific or user specific information to hypermail. Comments are denoted by the '#' character at the begining of the line. The file to use can be specified via the -c command line argument. The default file is .hmrc in the user's home direectory.

Examples listed on this page are shown in this style. The default value is shown unless otherwise indicated. Off is equivalent to 0, and On is equivalent to 1 for options which are either on or off.

Options affecting both messages and index pages

Locale

language = [ two-or-more-letter-language-id ]
This is a two-letter string specifying the default language to use, or a longer string specifying a language and locale. Set this the value of the language table you wish to use when running and generating archives. See also iso2022jp and eurodate.

Current supported languages, with their default locales:

de (de_DE) - German
en (en_US) - English
es (es_ES) - Spanish
fi (fi_FI) - Finnish
fr (fr_FR) - French
el (el) - Greek
gr (el_GR) - Greek
is (is_IS) - Icelandic
pl (pl_PL) - Polish
sv (sv_SE) - Swedish

The directory /usr/share/i18n/locales on many systems has the locale codes that are available on that system.

language = en
iso2022jp = [ 0 | 1 ]
Set this to On to support ISO-2022-JP messages.

iso2022jp = 0
eurodate = [ 0 | 1 ]
Set this to reflect how you want dates displayed in the index files.
Set as 1 to to use European date format "DD MM YYYY".
Define as 0 to to use American date format "MM DD YYYY".

eurodate = 0
dateformat = strftime-date-format
Format used in strftime(3) call for displaying dates.
See strftime(3) for the valid conversion specifications.

dateformat = "%D-%r Z" (disabled by default)
isodate = [ 0 | 1 ]
Set this to On to display article received dates in YYYY-MM-DD HH:MM:SS format. If used with the gmtime option, a Z will be inserted between the DD and HH.

isodate = 0
gmtime = [ 0 | 1 ]
Set this to On to display article received dates using Greenwich Mean Time (UTC) rather than local time.

gmtime = 0

Header options

label = [ Title | NONE ]
This is the default title you want to call your archives.
Set this to NONE to use the name of the input mailbox.

label = Hypermail Development List (default value is filename?????)
usetable = [ 0 | 1 ]
Setting this variable to 1 will tell Hypermail to generate an index menu at the top and bottom of each page in a table format. Set to 0 if you want the standard Hypermail page look and feel.

usetable = 0
hmail = [ Mailing List Submission Address | NONE ]
Set this to the list's submission address. When enabled, this can be used to submit a new message to the list served by the hypermail archive. "NONE" means don't use it.

hmail = hypermail@landfield.com (disabled by default)
newmsg_command = [ string ]
This specifies the mail command to use when converting the set_hmail address to links in replies. The variables $TO, $SUBJECT, and $ID can be used in constructing the command string.

newmsg_command=mailto:$TO
replymsg_command = [ string ]
This specifies the mail command to use when converting the set_hmail address to links in replies. The variables $TO, $SUBJECT, and $ID can be used in constructing the command string. The value from the mailcommand option will be used if this option is not specified.
There may be browsers that will benefit from adding something like
%26In-Reply-To=<$ID>
to the command, but I've heard no reports of this actually working.

replymsg_command=mailto:$TO?Subject=$SUBJECT

Miscellaneous

stripsubject = [ string | NONE ]
A string to be stripped from all subject lines. Helps unclutter mailing lists which add tags to subject lines.

stripsubject = NONE
mailcommand = [ direct mailto | cgi-bin script path | NONE ]
This is the mail command that email links go to, for instance "mailto:$TO" or "/cgi-bin/mail?to=$TO&replyto=$ID&subject=$SUBJECT"
In constructing this command, you can specify variables:

$TO : the email address of the person you're sending mail to.
$ID : the ID of the message you're replying to.
$SUBJECT: the subject you're replying to.

NONE disables mailcommand usage.
There may be browsers that will benefit from adding something like
%26In-Reply-To=<$ID>
to the command, but I've heard no reports of this actually working.

mailcommand = mailto:$TO?Subject=$SUBJECT
mailto = [ email-address | NONE ]
The address of the contact point that is put in the HTML header line
<LINK REV=made HREF=mailto:mailto>

The <LINK...> header can be disabled by default by setting mailto to NONE.

mailto = webmaster@landfield.com (disabled by default)
domainaddr = [ domainname | NONE ]
Domain-ize Addresses -- addresses appearing in the RFC822 field which lack hostname can't be made into proper HREFs. Because the MTA resides on the same host as the list, it is often not required to domain-ize these addresses for delivery. In such cases, hypermail will add the DOMAINADDR to the email address.

domainaddr = landfield.com (disabled by default)

Index page options

Index availability

folder_by_date = [ strftime-date-format
This string causes the messages to be put in subdirectories by date. The string will be passed to strftime(3) to generate subdirectory names based on message dates. Suggested values are "%y%m" or "%b%y" for monthly subdirectories, "%Y" for yearly, "%G/%V" for weekly. Do not alter this for an existing archive without removing the old html files. If you use this and update the archive incrementally (e.g. with -u), you must use the usegdbm option.

folder_by_date = %y%m (disabled by default)
monthly_index = [ 0 | 1 ]
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.

monthly_index = 0
msgsperfolder = integer
Put messages in subdirectories with this many messages per directory. Do not use this and folder_by_date on the same archive. Do not alter this for an existing archive without removing the old html files. Deleted/expired messages are counted for the purpose of deciding how many messages to put in a subdirectory.

msgsperfolder = 100 (disabled by default)
yearly_index = [ 0 | 1 ]
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.

yearly_index = 0
defaultindex = [ thread | date | subject | author | attachment ]
This indicates the default type of main index hypermail will generate. Users see this type of index when the archive is first accessed. When using the folder_by_date or msgsperfolder options, this option applies to subdirectories.

defaultindex = thread
default_top_index = [ folders | thread | date | subject | author | attachment ]
This specifies the default index that users can view when entering the top level of an archive that uses the folder_by_date or msgsperfolder option.

default_top_index = folders
avoid_indices = [ string ]
This is a list of index files to not generate. Valid types are date, thread, author, and subject. They can be listed individually on multiple lines or comma or space separated on a single line. When using the folder_by_date or msgsperfolder options, this option applies to subdirectories.

avoid_indices = subject author (disabled by default)
avoid_top_indices = [ string ]
This is a list of index files to not generate for the top directory of an archive using the folder_by_date or msgsperfolder option. Valid types are date, thread, author, subject, folders, and attachment.

avoid_top_indices = date thread author subject
attachmentsindex = [ 0 | 1 ]
Set this to Off to make hypermail not output an index of messages with attachments.

attachmentsindex = On
latest_folder = [ string ]
If folder_by_date or msgsperfolder are in use, create a symbolic link by this name to the most recently created subdirectory. Note that many web servers are configured to not follow symbolic links for security reasons.

latest_folder = current (disabled by default)

Index body style

indextable = [ 0 | 1 ]
Setting this variable to 1 will tell Hypermail to generate a message index Subject/Author/Date listings using a table format. Set to 0 if you want the standard Hypermail index page look and feel.

indextable = 0
reverse = [ 0 | 1 ]
Setting this variable to 1 will reverse-sort the article entries in the date and thread index files by the date they were received. That is, the most recent messages will appear at the top of the index rather than the other way around. Set to 0 if you want latest message on the bottom for date and thread indexes.

reverse = 0
thrdlevels = number
This specifies the number of thread levels to outline in the thread index. For instance, if thrdlevels is 2, replies to messages will be indented once in the index, but replies to replies, etc., will only be indented once as well. The normal value is 4.

thrdlevels = 4
thread_file_depth = [ 0 | 1 ]
If nonzero, break the threads index file into multiple 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. This option is currently disabled if the indextable option is turned on, and probably needs to be less than thrdlevels.

thread_file_depth = 0
icss_url= [ URL | NONE ]
This option let's you specify an external stylesheet that you would like to link to the index files. The stylesheet will be linked to thru a LINK element in the HEAD in the document's HEAD.
By default, this option is deactivated.

icss_url = http://www.w3.org/StyleSheets/Mail/public-messagelist.css
describe_folder = format string
Controls the labels used in folders.html to describe the directories created by the folder_by_date or msgsperfolder options. For folder_by_date labels, the describe_folder string will be passed to strftime(3) the same as the folder_by_date string.
For msgsperfolder:
%d for the directory number (starts with 0)
%D for the directory number (starts with 1)
%m for the number of the first message in the directory
%M for the number of the last message that can be put in the directory.
The default is the value of folder_by_date if that is selected, "%d" for msgsperfolder.

describe_folder = "%b %Y"

Index headers/footers

archives = [ URL | NONE ]
This creates a link in the archived index pages labeled "Other mail archives". Set this to NONE to omit such a link.

archives = NONE
custom_archives = [ HTML text | NONE ]
If this variable is defined, a navigation entry will be created below the sorted_by_x list entry, with the text "Other mail archives: " followed by the value of this variable. Set it to NONE to ommit such an entry.

custom_archives = NONE
about = [ URL | NONE ]
This creates a link in the archived index pages labeled "About this archive". Set this to NONE to omit such a link.

about = NONE
ihtmlheaderfile = [ path to index header template file | NONE ]
Set this to the path to the Index header template file. The template file contains HTML directives and substitution cookies for runtime expansion.

ihtmlheaderfile = /lists/hypermail-idxheader.hyp (disabled by default)
ihtmlfooterfile = [ path to index footer template file | NONE ]
Set this to the path to the Index footer template file. The template file contains HTML directives and substitution cookies for runtime expansion.

ihtmlfooterfile = /lists/hypermail-idxfooter.hyp (disabled by default)

Message page options

Body style

showhtml = [ 0 | 1 | 2 ]
Set this to 1 to show the articles in a proportionally-spaced font rather than a fixed-width (monospace) font. Setting this option to 1 also tells Hypermail to attempt to italicize quoted passages in articles.
Set this to 2 for more complex conversion to html similar to that in txt2html.pl.
Showhtml = 2 will normally produce nicer looking results than
showhtml = 1, and showhtml = 0 will look pretty dull, but
1 and 2 run risks of altering the appearance in undesired ways.

showhtml = 1
showbr = [ 0 | 1 ]
Set this to 1 if you want article lines to end with the <br> tag. Else set to 0 to have non-quoted lines word-wrap. Only takes effect if showhtml is set to 1.

showbr = 1
showhr = [ 0 | 1 ]
Set to 1 if you want horizontal rules <HR> before and after the articles. Set to 0 if you don't.

showhr = 1
iquotes = [ 0 | 1 ]
Set this to 1 if you want quoted lines to be shown in italics. Only take effect if showhtml is set to 1.

iquotes = 1
mcss_url= [ URL | NONE ]
This option let's you specify an external stylesheet that you would like to link to the message files. The stylesheet will be linked to thru a LINK element in the HEAD in the document's HEAD. By default, this option is inactive.

mcss_url = http://www.w3.org/StyleSheets/Mail/public-message.css
quote_hide_threshold = percent (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.

quote_hide_threshold = 100

Message page links

linkquotes = [ 0 | 1 ]
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).

linkquotes = 0
searchbackmsgnum = postive integer
If the linkquotes option is on and an incremental update is being done (-u option), this controls the tradeoff between speed and the reliability of finding the right source for quoted text. Try to set it to the largest number of messages between a message and the final direct reply to that message.

searchbackmsgnum = 500
link_to_replies = [ string | NONE]
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.

link_to_replies = NONE
quote_link_string = [ string | NONE ]
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 of quoted text will used.

quote_link_string = NONE
spamprotect = [ 0 | 1 ]
Set this to On to make hypermail not output real email addresses in the output HTML but instead it will obfuscate them a little.

spamprotect = Off
spamprotect_id = [ 0 | 1 ]
Set this to On to make hypermail not output real email message ids in HTML comments (sometimes used internally by hypermail) but instead it will obfuscate them a little so they don't look like email addresses to spammers.

spamprotect_id = Off

Message page headers/footers

showreplies = [ 0 | 1 ]
Set to 1 to show all replies to a message as links in article files. If this is set to 0 no reply links are generated.

showreplies = 1
show_msg_links = [ 0 | 1 | 3 | 4 ]
Set this to 1 if you want links to Next, Prev, Next thread, Reply to, etc. displayed on the article pages. Setting this to 0 disables these links from appearing on the generated pages. Set it to 3 to produce those links only at the top of the message pages, or 4 to produce those links only at the bottom of the message.

show_msg_links = 1
show_index_links = [ 0 | 1 | 3 | 4 ]
Set this to 1 to show links to index pages from the top and bottom of each message file. Set it to 0 to avoid those links. Set it to 3 to show the links only at the top of the message pages, or 4 to produce those links only at the bottom of the message.

show_index_links = 1
showheaders = [ 0 | 1 ]
Set this to 1 to show the RFC 822 message headers To:, From:, and Subject: information found in the email messages. Set to 0 if you want to hide mail headers in articles.

showheaders = 0
show_headers = List of RFC 822 Headers to display
This is the list of headers to be displayed if showheaders is set to 1 (TRUE) They can be listed comman or space separated all on a single line such as
      show_headers = From,Subject,Date,Message-ID

or they can be listed individually or any combination of.

      show_headers = From
      show_headers = Subject
      show_headers = Date
      show_headers = Message-ID

If show_headers contains the special character ``*'', then hypermail will display all header lines.
NOTE: Do not put the ':' at the end of the headers.

show_headers = From,Subject,Date,Message-ID (disabled by default)
mhtmlheaderfile = [ path to message header template file | NONE ]
Set this to the path to the Message header template file. The template file contains HTML directives and substitution cookies for runtime expansion.

mhtmlheaderfile = /lists/hypermail-msgheader.hyp (disabled by default)
mhtmlfooterfile = [ path to message footer template file | NONE ]
Set this to the path to the Message footer template file. The template file contains HTML directives and substitution cookies for runtime expansion.

mhtmlfooterfile = /lists/hypermail-msgfooter.hyp (disabled by default)

Attachments

inlinehtml [ 0 | 1 ]
Define to On to make text/html parts to get inlined with the mails. If set to Off, HTML-parts will be stored as separate files. A "Content-Disposition: attachment;" line in the mail will cause an HTML-part to be stored as a separate file even if this option is On.

inlinehtml = 1
usemeta [ 0 | 1 ]
This option allows you to use metadata to store the content type of a MIME attachments and, later on, when a user browses the attachment, send back this information in the HTTP Content-Type header. When set to 1, the Content-Type header of a MIME attachment will be stored in a metadata file.
Let us say that the MIME attachments for a message are stored in directory att-num. The metadata for those attachments will then be stored in directory att-num/.meta. If a MIME attachment is stored in file att-file, its metadata will be stored in file att-file.meta. This convention is directly compatible with the Apache server handling of metadata.

usemeta = 0
text_types = list of types to be the same as text/plain
This is a list of MIME types that you want hypermail to treat exactly as if they were text/plain. They can be listed individually on multiple lines or comma or space separated on a single line.

text_types = text, text/plain, message/rfc822 (disabled by default)
inline_types = indicate data types data to be inlined
This is the list of MIME types that you want inlined as opposed to simply linked into the message. They can be listed individually on multiple lines or comma or space separated on a single line.

      inline_types = image/gif image/jpeg
or
      inline_types = image/gif
      inline_types = image/jpeg

inline_types = image/gif image/jpeg
prefered_types = multipart/mixed types to present
When mails using multipart/mixed types are scanned, this list of MIME types defines which part you want presented in the result.

prefered_types = text/plain, text/html
ignore_types = indicate types of attachments to ignore
This is the list of MIME attachment types that you do not want to do anything with. They are quietly ignored and are not processed. They can be listed individually on multiple lines or comma or space separated on a single line.

Two special types may be used here:
$BINARY - ignore all types that would be stored as separate files.
$NONPLAIN - ignore all types not treated as text/plain, and all $BINARY types.
Note: the behavior of these may be affected by the inlinehtml option.


      ignore_types = text/x-vcard application/x-msdownload
or
      ignore_types = text/x-vcard
      ignore_types = application/x-msdownload

ignore_types = text/x-vcard
ignore_types = application/x-msdownload

attachmentlink = attachment-link-format
Format of the attachment links.

%p for the full path to the attachment
%f for the file name part only
%d for the directory name only
%n for the message number
%c for the content type string

attachmentlink = "%p"
unsafe_chars = list of chars to prohibit
Any characters listed in this string are removed from user-specified attachment filenames. Those characters will be replaced by a "_" (which means that specifying "_" here won't have any effect). Note that many characters (including / and \) are removed by the safe_filename in parse.c regardless of what this option says. There might be some security problems that can be prevented if you specify "." here (e.g. if a web server is configured to enable server side includes on filenames ending in something other than .shtml), but that will prevent browsers from recognizing many file types.

unsafe_chars = "." (disabled by default)
save_alts = [ 0 | 1 | 2 ]
This controls what happens to alternatives (other than the prefered alternative) for multipart/alternative messages.
0 - discard non-prefered alternatives
1 - show all alternatives inline
2 - put non-prefered alternatives in a separate file.

save_alts = 0
alts_text = descriptive text
If save_alts is 1, this text is put between the alternatives.
If save_alts is 2, this text is used to describe the link to each alternative file.

alts_text = "alternate version of message" (the default if save_alts = 2)
alts_text = "<hr>" (the default if save_alts = 1)

System administration

Message input

overwrite = [ 0 | 1 ]
Set to 1 to make Hypermail overwrite existing archives by default. (This defaulted to 1 for most versions 2.0 through 2.1.3, presumably to encourage archives that upgraded to have a single style. The default was changed back to 0 after 2.1.3).

overwrite = 0
increment = [ 0 | 1 ]

Define as 1 to append all input messages to the end of existing archives.
Define as 0 for it to read a mailbox that corresponds to the entire archive. If there are any existing html messages, it will figure out which ones at the end of the mailbox are new, and add only those that haven't been converted yet.

increment = 0
readone = [ 0 | 1 ]
Set this to 1 to specify there is only one message in the input.

readone = 0

mbox = [ filename | NONE ]
This is the default mailbox to read messages in from. Set this with a value of NONE to read from standard input as the default.

mbox = NONE
ietf_mbox = [ 0 | 1 ]
Setting this variable to 1 will tell hypermail that the mbox is formatted according to the IETF mbox convention: all lines, except for the envelope, are prefixed with a > char.

ietf_mbox = 0
discard_dup_msgids = [ 0 | 1 ]
Set this to 0 to accept messages with a Message-ID matching that of a message already in this archive. By default such messages are discarded.

discard_dup_msgids = 1
require_msgids = [ 0 | 1 ]
Set this to 0 to accept messages without a Message-ID header.
Set this to 1 to discard messages without a Message-ID header.
By default such messages are discarded.

require_msgids = 1

Message Filtering

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.

The full body searches can be slow, and do not match multi-line strings in message bodies. A string that spans multiple lines of a header can be matched.

filter_out = expression
Delete from the html archives any message having a header line which matches any of these expressions. Uses the same rules for deletion as the expires option. The expressions use the same syntax as Perl regular expressions.

The following examples should reject messages Cc'd to more than 3 addresses or from any address at spammers.com. This option is disabled by default.

filter_out=Cc:([^,]*,){3}
filter_out=From:.+@spammers.com

filter_require = expression
Delete from the html archives any message not having header lines which match each of these expressions. Uses the same rules for deletion as the expires option. The expressions use the same syntax as Perl regular expressions.

filter_require =
filter_out_full_body = expression
Delete from the html archives any message having a line which matches any of these expressions. Uses the same rules for deletion as the expires option. The expressions use the same syntax as Perl regular expressions.

filter_out_full_body =
filter_require_full_body = expression
Delete from the html archives any message not having lines which match each of these expressions. Uses the same rules for deletion as the expires option. The expressions use the same syntax as Perl regular expressions.

filter_require_full_body =

Filesystem output

dir = [ directory path | NONE ]
This is the default directory that Hypermail uses when creating and updating archives. If set to NONE, the directory will have the same name as the input mailbox.

dir = NONE
htmlsuffix = [ html | htm | shtml ... ]
Use this to specify the html file suffix to be used when Hypermail generates the html files. This is dependent on local needs. Do not put a '.' in the value. It would result in "file..html", probably not what you want.

htmlsuffix = shtml
dirmode = octal number
This is an octal number representing the rwx modes that new directories are set to when they are created. If the archives will be made publically available, it's a good idea to define this as 0755. This must be an octal number.

dirmode = 0755
filemode = octal number
This is an octal number representing the permission modes that new files are set to when they are created. If the archives will be made publically available, it's a good idea to define this as 0644. This must be an octal number.

filemode = 0644

System miscellaneous

usegdbm = [ 0 | 1 ]
Set this to 1 to use gdbm to implement a header cache. This will speed up hypermail, especially if your filesystem is slow. It will not provide any speedup with the linkquotes option.

usegdbm = 0
append = [ 0 | 1 ]
Set this to On to maintain a parallel mbox archive. The file name defaults to mbox in the directory specified by -d or dir.

append = 1
append_filename = [ string ]
Specifies the filename to be used by the append option. $DIR may be used to specify a name relative to the directory specified in the -d or dir option.

append_filename = $DIR/INBOX
txtsuffix = [ string ]
If you want the original mail messages archived in individual files, set this to the extension that you want these messages to have (recommended value: txt).

txtsuffix = txt (off by default)
deleted = list of headers used to indicate deletion
This is the list of headers that indicate the message should not be displayed if the value of this header is 'yes'.

deleted = X-Hypermail-Deleted X-No-Archive
expires = list of headers used to indicate expiration
This is the list of headers that indicate the message should not be displayed if the value of this header is a date in the past.

expires = Expires
delete_msgnum = list of message numbers
This is the list of message numbers that should be deleted from the html archive. The mbox is not changed.

delete_msgnum = 42 666 (off by default)
delete_level = [ 0 | 1 | 2 | 3 ]

0 - remove deleted and expired files. Note that with this choice threading may be screwed up if there are replies to deleted or expired options and the archive is updated incrementally
1 - remove message body
2 - remove message body for deleted messages, leave expired messages
3 - leave all messages
Deleted and expired messages are removed from the index files regardless of the delete_level selection.

delete_level = 1
progress = [ 0 | 1 | 2 ]
Set to 1 or 2 to show progress as Hypermail works. Set to 0 for silent operation. Output goes to standard output. Set to 1, progress information relating to attachments creation is overwritten for each new attachment. Set to 2, attachment creation information is listed individually with the number of the message the attachments relates to.

progress = 0
warn_surpressions [ 0 | 1 ]
Set this to 1 to get warnings (on stdout) about messages that are not converted because of they are missing a msgid (if require_msgids is On) or because one of the following options surpressed it: deleted expires delete_msgnum filter_out filter_require filter_out_full_body filter_require_full_body.

warn_surpressions = 1
uselock [ 0 | 1 ]
Controls whether to use hypermail's built-in locking mechanism. By default, this option is set to 1. Set it to 0 if you have an external locking mechanism, like, for example, when using procmail or smartlist.

uselock = 0
locktime = number-of-seconds
The number of seconds that a lock should be honored when processing inbound messages before it is overridden.

locktime = 3600
base_url = url-of-main-archive-directory
The url of the archive's main directory. This is needed when the latest_folder option is used and the folder_by_date makes directories more than one level deep (e.g. with '%y/%m').

base_url = http://www.hypermail.org/mail-archive/


See Also
hypermail(1),   hmrc(4),   Hypermail   and   Customizing Hypermail Pages
Last updated July 17, 2002