Hypermail - hmrc list configuration

# 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 directory.

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 English, German, French, etc.
    - iso2022jp Japanese characters
    - i18n enable Internationalization (i18n) features
    - eurodate format
    - dateformat strftime-style format string
    - isodate standard YYYY-MM-DD HH:MM:SS format
    - gmtime GMT/UTC vs local time
  - Headers
    - label set the <title>
    - hmail list submission address
    - newmsg_command new list message mailto
    - replymsg_command reply mailto
    - inreplyto_command resolver for messages found outside the archive
  - Miscellaneous
    - stripsubject text to be removed from subject line
    - mailcommand controls most mailto's
    - mailto for <link rev=made href=mailto:
    - domainaddr to append to incomplete addresses
    - use_sender_date which date to trust more
    - fragment_prefix how to prefix each URI fragment
    - email_address_obfuscation simple obfuscation of email addresses
- Index page options
  - Index availability
    - folder_by_date split into subdirs by date
    - msgsperfolder split into subdirs of n messages
    - monthly_index create monthly index files
    - yearly_index create yearly index files
    - defaultindex what goes in index.html
    - default_top_index what goes in top directory index.html
    - avoid_indices don't generate these files
    - avoid_top_indices don't generate these files
    - attachmentsindex create these files
    - latest_folder symlink to recent subdir
  - Body style
    - indextable style of message lists
    - reverse sort order, date/thread files
    - reverse_folders sort order, list of folders
    - thrdlevels max indentation
    - thread_file_depth threads get their own files
    - icss_url stylesheet
    - describe_folder labels for subdirs
  - Headers/footers
    - archives link to other archives
    - custom_archives link to other archives
    - about descriptive link
    - ihtmlheaderfile template
    - ihtmlfooterfile template
- Message page options
  - Body style
    - showhtml how much conversion to html?
    - href_detection how to handle URLs
    - showbr line wrapping for body
    - iquotes italicize quotes
    - i18n_body translate message body into UTF-8
    - mcss_url stylesheet
    - quote_hide_threshold cut excessive quoting
    - files_by_thread add file with all messages in 1 thread
  - Links
    - linkquotes fine-grained link to source of quoted text
    - searchbackmsgnum linkquotes performance
    - link_to_replies fine-grained link to responses
    - quote_link_string linkquotes labels
    - spamprotect obfuscate email addresses
    - antispamdomain how to obfuscate address
    - spamprotect_id obfuscate message ids
  - Headers/footers
    - showreplies list of messages
    - show_msg_links next, previous, next in thread
    - show_index_links control links to index pages
    - showheaders To:, From:, Subject:
    - show_headers others (Message-ID, etc)
    - mhtmlheaderfile template
    - mhtmlfooterfile template
- Attachments Note that some of these may affect security
  - inlinehtml where to put text/html
  - usemeta save Content-Type in meta file
  - text_types what types are like text/plain?
  - inline_types list what should go on main page
  - inline_addlink add in-line links to attachments
  - prefered_types choose from multipart/mixed
  - ignore_types discard text/x-vcard, etc
  - attachmentlink control filenames
  - unsafe_chars restrict filename chars
  - save_alts multipart/alternative handling
  - alts_text text for some save_alts choices
  - filename_base attachment file name
- System Administration
  - Message Input
    - increment append new message(s) to old archive
    - readone treat input as one message
    - mbox read messages from this file
    - mbox_shortened allow partial mbox
    - ietf_mbox file format
    - discard_dup_msgids
    - require_msgids discard messages without ids
  - Message Filtering
    - filter_out delete files with header line(s)
    - filter_require delete files without header line(s)
    - filter_out_full_body delete files with line(s)
    - filter_require_full_body delete files without line(s)
  - Filesystem Output
    - dir where the archive goes
    - overwrite regenerate old messages
    - htmlsuffix .html, .htm, etc
    - dirmode chmod directories
    - filemode chmod html files
    - filename_base attachment file name
  - Miscellaneous
    - usegdbm cache header info
    - writehaof write XML archive overview file
    - append create mbox archive also
    - append_filename name of mbox output
    - txtsuffix save each raw message
    - deleted what headers indicate deletion
    - expires what headers indicate expire date
    - delete_older delete messages before a date
    - delete_newer delete messages after a date
    - delete_msgnum delete these messages
    - delete_level what to do with deleted messages
    - delete_incremental remove previous deleted messages on-the-fly
    - htmlmessage_deleted custom markup body for deleted messages
    - progress verbosity
    - warn_surpressions warn about ignored messages
    - uselock serialize
    - locktime timeouts
    - base_url
    - report_new_folder notify when creating directory
    - report_new_file notify when creating new message files

## 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
  no (no_NO) - Norwegian
  pl (pl_PL) - Polish
  pt (pt_BR) - Brazilian Portuguese
  ru (ru_RU) - Russian
  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
i18n = [ 0 | 1 ]
  Enable I18N features, hypermail must be linked with libiconv.
  i18n = 1 (disabled by default)
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?????)
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@hypermail.org (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=&lt;$ID&gt;

  to the command, but I've heard no reports of this actually working.
  replymsg_command=mailto:$TO?Subject=$SUBJECT
inreplyto_command = [ string ]
  This specifies a URI template to a script that hypermail will link to if it's unable to find in the archive's messages the MID corresponding to an In-Reply-To header. The variable $ID is used to specify where the Message-Identifier value will appear in the link.
  inreplyto_command = http://example.org/mid-resolver/$ID. (disabled by default)

### 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=&lt;$ID&gt;

  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@hypermail.org (disabled by default)
domainaddr = [ domainname | NONE ]
  Domain-ize Addresses -- addresses appearing in the RFC2822 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 = hypermail.org (disabled by default)
use_sender_date = [ 0 | 1 ]
  Set this to On to have it use the Date: header (created by the the system that sent the message) rather than the date/time the message was received, for purposes such as putting in folders or sorting. Details of which purposes this affects may change in the future.
  use_sender_date = 0
fragment_prefix = [ preifx ]
  Put this string before the message number in each URI fragment.
  fragment_prefix = id (default is msg)
email_address_obfuscation = [ 0 | 1 ]
  Set to 1 to enable email address obfuscation using numeric character references.
  mail_address_obfuscationx = 1 (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. The link will be created in the directory specified by the "dir" or "-d" option.
  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
reverse_folders = [ 0 | 1 ]
  Setting this variable to On will reverse-sort the list of folders. That is, the most recent folders will appear at the top of the index rather than the other way around.
  reverse_folders = 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
href_detection = [ 0 | 1 ]
  Set this to 1 to assume that any string on the body of the message that says <A HREF=" ... </A> is a URL, together with its markup and treat it as such.
  href_detection = 0
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
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
i18n_body = [ 0 | 1 ]
  Translate message body into UTF-8. The i18n configuration option must be enabled.
  i18n_body = 1 (disabled by default)
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
files_by_thread = [ 0 | 1]
  Set this to 1 to generate (in addition to the usual files), a file for each thread that contains all the messages in that thread. The first line in each thread of the thread index page links to this file instead of to a single message.
  files_by_thread = 0

### 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. You can control the obfuscation with antispamdomain.
  spamprotect = On
antispamdomain = string with invalid domain
  By default the spamprotect option only does a small amount of massaging of email addresses. Use this to completely replace the domain from which a message originates (everything after the @) with some string to confuse screen-scraping programs. It is probably wise to make this an invalid mail domain.
  antispamdomain = "email.domain.hidden" (disabled by default)
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 = On

### 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 2822 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 2822 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/rfc2822 (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
inline_addlink = [ 0 | 1 ]
  Set to On to add inline links to content that is stored in the\ attachments subdirectory. inline_types must be enabled.
  inline_addlink = 1 (enabled by default)
prefered_types = multipart/mixed types to present
  When mails using multipart/mixed or multipart/alternative 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

increment = [ -1 | 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. (See the mbox_shortened option for an exception to the requirement that it be 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.
  Define as -1 to have hypermail figure out whether the input is entirely new messages to be appended or whether it contains messages that are already in the archive. A value of -1 cannot be used with the mbox_shortened option or with the -i command line option or with mbox = NONE.
  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

mbox_shortened = [ 0 | 1 ]
  Set this to 1 to enable use of mbox that has had some of its initial messages deleted. Requires usegdbm = 1 and increment = 0. The first message in the shortened mbox must have a Message-Id header. If discard_dup_msgids is 0, the first message in the shortened mbox may not have the same Message-Id as a message that was deleted. The mbox may not be altered in any way other than deleting from beginning of the mbox or appending new messages to the end (unless you rebuild the archive from scratch using a complete mbox).
  mbox_shortened = 0
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.
  Note that the date that Hypermail was run will be used, not a date from the message (use the folder_by_date option to have Hypermail use dates from messages).
  dir = NONE
overwrite = [ 0 | 1 ]
  Set to 1 to make Hypermail rewrite all messages.
  Set to 0 to rewrite as few messages as possible.
  Rewriting all messages is slower, but if you change the options that control the appearance of the messages you may want to rewrite all the messages to make the appearance consistent throughout the archive. (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
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
filename_base = [ string ]
  This option overrides the normal rules for creating attachment file names, and creates file names from the string that this option is set to plus a file name extension if one can be found in the name supplied by the message. This option is mainly for languages that use different character sets from English.
  filename_base = attachment (disabled by default)

### 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
writehaof = [ 0 | 1 ]
  Set this to On to let hypermail write an XML archive overview file in each directory. The filename is archive_overview.haof.
  writehaof = 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'. See the delete_level option for more info about what happens to the message.
  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. See the delete_level option for more info about what happens to the message.
  expires = Expires
delete_older = date/time string
  Any message older than this date should not be displayed. See the delete_level option for more info about what happens to the message. Any date format that works in the Date: header line of an email message should work here.
  delete_older = "Wed, 14 Mar 2001 12:59:51 +0200" (off by default)
delete_newer = date/time string
  Any message newer than this date should not be displayed. See the delete_level option for more info about what happens to the message. Any date format that works in the Date: header line of an email message should work here.
  delete_newer = "Wed, 28 Mar 2001 12:59:51 +0200" (off by default)
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. See the delete_level option for more info about what happens to the message.
  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
delete_incremental = [ 0 | 1 ]
  If this option is enabled, hypermail will perform deletions on old messages when run in incremental mode (according to the other delete configuration options). Note that depending on your hypermail setup, the size of the archive, and the complexity of the markup, there may be memory and parsing issues, specifically when there are non-deleted replies to a deleted message. If this option is disabled, deleted messages will only be removed when rebuilding the whole archive.
  delete_incremental = 0 (enabled by default)
htmlmessage_deleted = [HTML markup string]
  Custom markup to use in the body of deleted messages when delete_level is equal or superior to 2.
  htmlmessage_deleted = <div class="spam"><img src="http://example.org/Mail/noUCE.png" alt="unsolicited bulk email removed" /> <p class="spammes">This message was determined to be unsolicited bulk email and has been removed from our archives.</p><p class="spamfooter">The removal of this email is consistent with <a href="http://example.org/Mail/">example.org's Mailing List and Archive Usage Policy.</a></p></div> (disabled by default)
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-project.org/archive/
report_new_folder = [ 0 | 1 ]
  Set this to On to have it print (on stdout) the names of any new directories created pursuant to the folder_by_date or msgsperfolder option, or the initial creation of the archive. It will print the full path if that is what you use to specify the archive directory. Does not print anything when attachment or metadata directories are created.
  report_new_folder = 0
report_new_file = [ 0 | 1 ]
  Set this to On to have it print (on stdout) the names of any new files created for new messages. It will print the full path if that is what you use to specify the archive directory.
  report_new_file = 0

See Also

> hypermail(1), hmrc(4), Hypermail and Customizing Hypermail Pages and Adding a Search Engines to your Hypermail Archive

> Last updated February 4, 2004