Man Linux: Main Page and Category List


       couriermlm - The Courier mailing list manager


       couriermlm {command} {directory} [arg...]


       couriermlm is the Courier mail server´s mailing list manager. This
       command sets up, maintains, and manages mailing lists.  couriermlm
       automatically handles requests to subscribe and unsubscribe list
       members, detects undeliverable addresses and removes them from the
       subscription rolls. Mailing lists managed by couriermlm require zero
       human administrative oversight.  couriermlm supports digests,
       write-only posting aliases, and moderated mailing lists.

       Anyone can use couriermlm, not just the system administrator. The
       Courier mail server mail server translates an address list-name@domain
       as a local address with a corresponding dot-courier(5)[1] file. Anyone
       that can install a dot-courier(5)[1] file, and can schedule cron(8)
       jobs, can run a couriermlm mailing list.

       Note that the system administrator can optionally remove the dot-
       courier(5)[1] support from the the Courier mail server.  couriermlm
       will not work in that case.

       Setting up a mailing list consists of the following steps:

       Run couriermlm create
           Use this command to create a directory where couriermlm keeps all
           mailing list related files.

       Configure the mailing list
           The couriermlm create command initializes the mailing list
           subdirectory with some default template responses. It is necessary
           to customize them for your mailing list, and it may be necessary to
           issue some additional commands in order to configure appropriate
           mailing list options -- such as enabling unrestricted posting
           privileges, and enabling moderation.

       Create dot-courier(5)[1] files
           Set up to run couriermlm to distribute mailing list messages, and
           process requests.

       Set up cron(8)
           You need to set up cron(8) jobs to run the couriermlm hourly and
           couriermlm daily commands, which perform regular mailing list

       Back up subscription lists
           As part of your daily job you should also run the export command,
           in order to back up the mailing list subscriber information. In the
           event that the mailing list database gets corrupted or lost, you
           can restore it from this backup file. See the export command for
           more information.

           Setting up a digest for the mailing list requires additional steps.
           See "Setting up a mailing list digest[2]" below for more

       The first step is to run the following command:

           couriermlm create directory ADDRESS=list@domain

       directory is the mailing list directory that will be managed by
       couriermlm. This directory should not be created in advance, this
       command creates this directory, and initializes it.

       list@domain is the mailing list´s address, the address that sends
       messages to the mailing list.

       An additional setting, URL may also be specified:

           couriermlm create directory ADDRESS=list@domain URL=url

       “url” would be the URL of the WebMLM web page for this mailing list.
       See webmlmd(1)[3] for more information.

       The directory created by couriermlm create is initialized to contain a
       number of text files that couriermlm sends back as replies to
       administrative commands. It is necessary to edit these template files
       and adjust the text in those files for this mailing list. All template
       filenames end with .tmpl, and their contents are self explanatory. Some
       important template files are:

           This text is returned in response to the help command. This text
           must be modified depending upon whether this mailing list is a
           moderated mailing list, has a digest version, or if any other
           non-default configuration options are set for the mailing list.

           This is the reply that´s sent back in response to a subscription
           request. Less important is unsub.tmpl, which is the response to a
           request to unsubscribe.

           This is the successful subscription confirmation. A brief overview
           of the mailing list might be appropriate here.

       couriermlm has rudimentary support for non-English templates. The
       couriermlm create command has a single, optional parameter,
       --lang=suffix The option must be specified after the mailing list
       directory´s name:

           couriermlm create directory --lang=es ADDRESS=list@domain URL=url

       The templates for the stock text files come from
       /usr/lib/courier/couriermlm. This directory contains all the *.tmpl and
       *.html template files that couriermlm create installs in the new
       mailing list directory.

       Translated versions of template files are installed in the same
       directory, /usr/lib/courier/couriermlm. The translated version of file
       must be installed as file.suffix, for example: is the
       translated version of help.tmpl, with the “es” suffix.

       The --lang=suffix option installs the the .suffix version of each text
       template file, if available. If not, the stock English template file
       gets copied, as usual.

           Do not remove the English template files, even if you never use
           them. They must be left in place, in /usr/lib/courier/couriermlm,
           for couriermlm create to work correctly.


           couriermlm create /home/lists/users-list --lang=es ...

       This example installs the *.es versions of mailing list template files.
       Only the stock, English template files come with the Courier mail
       server. This mechanism only provides an easy integration ability with
       template files from other sources.

       There are some additional configuration files that can be modified to
       suit your taste:

           This file can be initialized to contain any mail headers that will
           be automatically added to every mailing list message. The contents
           of this file are simply prepended to every message that goes out.
           Blank lines are not allowed.

           This file lists any headers that will be automatically removed from
           every mailing list message before it´s sent. List each header one
           per line, including the : character. For example, to remove all
           Received: and Date: headers from every message, initialize this
           file to contain the following two lines:


       Both the headeradd and headerdel files can be used to implement a
       popular feature of setting the replies to every message to go to the
       mailing list. Having "Reply-To:" in headerdel, removes any existing
       Reply-To: header, and then having "Reply-To: list@domain" in headeradd
       appends a fixed Reply-To: header to every message.

       The create command also creates the following subdirectories in the
       mailing list directory:

           This subdirectory has the database files that contain the mailing
           list´s subscription list.

           This subdirectory stores files that contain information about
           addresses that have been unsubscribed from the mailing list. This
           information might be of some use when tracking down an old
           subscription. The contents of this directory are not automatically
           purged, you must set up your own purging mechanism for this

       commands, commands.dat
           These directories store temporary files that contain pending
           (unconfirmed) commands for the mailing list manager. The couriermlm
           commands hourly and daily must be executed regularly in order to
           periodically purge stale entries.

           Messages awaiting moderator approval (for moderated lists).

           Messages received by this mailing list will be stored here, in
           addition to being forwarded to subscribers.  couriermlm does not
           automatically do any purging on this subdirectory, you must set up
           your own archiving mechanism that cleans out this subdirectory.

       The last step involves installing a couple of dot-courier(5)[1] files
       that run couriermlm to receive mailing list messages and administrative
       commands. The mailing list address, list@domain, corresponds to some
       dot-courier(5)[1] file. For example, if your system account is john,
       and your mail domain is, then the dot-courier(5)[1] file
       for the mailing list <> is $HOME/.courier-list.

       Let´s say that the dot-courier(5)[1] file is $HOME/.courier-list. To
       properly support the mailing list, the following dot-courier(5)[1]
       files will have to be initialized as follows:

           This file should be initialized to contain the following delivery

               | /usr/bin/couriermlm msg directory

           directory is the created mailing list directory.

           This file should contain the appropriate delivery instructions for
           forwarding all mail addressed to <list-owner@domain> to the address
           of the owner of the mailing list. This can be another E-mail
           address, or a mailbox specification.

           This file should be initialized to contain the following delivery

               | /usr/bin/couriermlm ctlmsg directory

           directory is the created mailing list directory. This dot-
           courier(5)[1] file provides support for all other addresses of the
           form <list-command@domain>, where command is a mailing list
           administrative command. Commands are sent to this mailing list
           manager by sending a message to one of several special addresses,
           described more fully in "Mailing list commands[4]", below.

       couriermlm may also be run manually from the command line as follows:

           /usr/bin/couriermlm command directory [ options... ]

       command is a command from the following list.  directory is the mailing
       list directory. The commands are:

           Create a mailing list.

           Update/restore mailing list templates. The original, default,
           mailing list message template files (*.tmpl and *.tmpl.html) are
           reinstalled into the mailing list directory. This command must be
           processed for every mailing list directory after upgrading to the
           Courier server version 0.55, or later, from earlier versions (but
           see below).  couriermlm in version 0.55 of the Courier mail server
           uses updated templates files, which must be installed in every
           mailing list directory. Although the names of many template files
           have not changed, the embedded markup codes in the template files
           work differently.

            1. Begin by making a backup copy of all *.tmpl files in the
               existing couriermlm mailing list directory.

            2. Run the “update” command on the list directory.

            3. Review the backed up template files, identify your customized
               changes, then retype them into new template files installed by
               the “update” command.

            4. Proceed to the next mailing list directory.
               Yes, this is going to be a pain. This is the first overhaul of
               couriermlm´s infrastructure in many years. Once a decade, some
               elbow grease must be sacrificed in the name of progress. It´s
               not the end of the world.

               In an extreme emergency, preserve the couriermlm from the
               previous version of the Courier mail server. Mass-update all
               existing lists´ .courier-list and .courier-list-default files
               to run the old couriermlm. Then, migrate each mailing list on a
               predetermined schedule. After migrating each list, put the
               default path back into the list´s .courier files.

               Keep in mind the following issues, while migrating the lists:

               ·   The help.tmpl template file is usually the one that gets
                   customized the most. In most cases, large bits and pieces
                   of this file, that document certain list options that do
                   not apply to this list, must be removed.

               ·   There are several new template files, including a number of
                   *.html files that refer to new HTML-formatted responses
                   from couriermlm, and the WebMLM interface.

               ·   Be aware of updated mail headers declared in several
                   template files. The MIME character set is now given as
                   utf-8. Some templates no longer contain the Mime-Version
                   and Subject headers. The Subject headers are moved to
                   separate template files. Many existing template files now
                   contain both a plain text and an HTML-formatted version of
                   the couriermlm response. Always scroll to the end of each
                   template file, to reveal any appended HTML portion of
                   template´s text.

               Set mailing list options.

               Manually subscribe an address to the mailing list.

               Manually unsubscribe an address from the mailing list.

               List all the subscribers to this mailing list.

               List write-only aliases for this mailing list.

               Export mailing list subscriber information.

               Import mailing list subscriber information.

               Receive and interpret a control message.

               Display a subscription record.

               Post a message to the mailing list.

               Perform hourly maintenance. It is necessary to set up a cron(8)
               job to execute the hourly command once an hour.

               Perform daily maintenance. It is necessary to set up a cron(8)
               job to execute the daily command once a day.

               Create a digest. See "Setting up a mailing list digest[2]"
               below for more information.

       The sub, unsub, lsub, laliases, export, and import commands allow
       manual subscription list management. Normally, subscription-related
       commands are done by sending an appropriate mailing list command, see
       "Mailing List Commands[4]", below.

           couriermlm sub directory user@domain

       This command adds the address <user@domain> to the subscription list.
       couriermlm will now read a free-form comment or a note from standard
       input, terminated by an end-of-file (usually CTRL-D). The free-form
       comment is stored in the subscription database, together with the
       address, and is shown by the "info" command.

           couriermlm unsub directory user@domain

       This command remove the address <user@domain> from the subscription
       rolls.  couriermlm will also read a free-form comment, which is added
       to the subscription record. After removing this address from the
       subscription rolls, its subscription record is archived in the
       directory/unsublist directory.

           couriermlm lsub directory

       This command lists all the addresses subscribed to the list, on
       standard output, one per line.

           couriermlm laliases directory

       This command lists all write-only aliases that have been subscribed to
       the list, together with the subscriber address that added each alias.
       See "Write-Only Aliases[5]" for more information.

           couriermlm export directory

       The export command lists the contents of the subscription database on
       standard output. The export command produces the following output

           subscription information
           subscription information

       "address", is an address subscribed to the mailing list. This is
       followed by its corresponding subscription information, usually a copy
       of the subscription request that was used to add the address to the
       mailing list. The subscription information is terminated by a line
       containing a single period. Any lines in the subscription information
       that begin with a period have an extra period prepended to them.

           couriermlm import directory

       The import command reads on standard input a previously exported
       mailing list subscription database, and adds those addresses to the
       indicated mailing list.

       It is highly recommended to make a regular backup of subscriber
       information using the export command, in the event that the
       subscription database gets corrupted. In which case the import command
       can be used to rebuild the subscription database, in absence of any
       direct backups of the database files.

       The set command sets various list options:

           couriermlm set directory option=value option=value...

           Setting the ADDRESS or the URL options, described below,
           automatically updates the contents of the headeradd configuration
           file. Its existing “List-” headers are removed and replaced by
           updated “List-” headers that reflect the revised list address or

       One or more options can be set with the same command. The available
       options are:

           The base E-mail address for this mailing list.

           The URL of WebMLM web page for this mailing list.

               WebMLM determines its own URL automatically, by reading its
               HTTP headers. This setting is used by couriermlm, which has no
               knowledge of the web server´s configuration, and needs to know
               the correct URL to insert into generated messages.

           If flag is "1", the userid portion of E-mail addresses are
           case-sensitive. The domain address portion is always
           case-insensitive. The default setting is "0" making both userid and
           domain address portions of E-mail addresses case-insensitive.

               Be careful when changing this setting on an active list.
               Changing this option to “CASESENSITIVE=1”, forces all existing
               subscribers to make sure their addresses are lowercase-only,
               otherwise they will no longer be recognized as subscribers.
               Changing this option to “CASESENSITIVE=0” blocks all subscribed
               addresses that have uppercase characters in the userid portion
               of their E-mail address. They will continue to receive mailing
               list traffic, but unable to post messages to the list, or
               unsubscribe from it. It will not be possible to unsubscribe
               those addresses even by running the couriermlm command

           Enable digests.  directory is the pathname to the
           previously-createddigest list directory. See "Setting up a mailing
           list digest[2]" below for more information.

           Set the subject line keyword for mailing list messages. If set,
           couriermlm inserts "[keyword]" into the subject of every mailing
           list message, to aid sorting by the recipients.

           Maximum number of bounce notifications sent by the hourly command,
           in order to prevent the mail system from being overloaded. The
           default is 20 bounce notifications. Any unsent notifications will
           be carried over to the next hourly job.

           Maximum number of moderation reminders sent by the hourly command,
           in order to prevent the mail system from being overloaded. The
           default is 20 moderation reminders. Any unsent reminders will be
           carried over to the next hourly job.

           Maximum size, in kilobytes, of a response to the fetch command. The
           default is 100Kb. This option is used to minimize the impact of
           abusive requests for the entire archive, with a forged return

           The name that´s listed on the return address of administrative
           messages. Note that if name contains spaces, you should quote this
           argument in the shell. The default value is "Courier Mailing List

           If flag is "0" couriermlm will not attempt to block misdirected
           subscribes and unsubscribes that are sent to the mailing list´s
           posting address. If flag is "1" (the default), those kinds of
           messages will be bounced appropriately.

           If flag is "1" couriermlm will use a Delivery Status Notification
           setting of "never" when it sends confirmation requests and help
           messages: this should reduce the amount of useless failure
           notifications generated when couriermlm dutifully replies to spam
           received by the mailing list administrative addresses, i.e.
           -(un)subscribe and -help. If flag is "0" (the default), a DSN
           setting of "fail" will be used. Please see sendmail(1)´s -n option
           for more details on the DSN setting.

           Set posting options.  option is one of three values: "subscribers"
           - only subscribers may post messages to this mailing list (this is
           the default); "all" - anyone can post messages to this mailing
           list; "mod" - only subscribers may post, and messages are sent to
           the list owner for approval (moderation).

           Set access to archived messages.  option is either: "all" - Anyone
           can access the mailing list archive; or "subscribers" - only
           subscribers can access the archive. The default is "all".

           Purge archived mailing list messages after d days. The default is 0
           days - messages are never removed from the archive subdirectory.

           Wait d days for the probe message, that automatically unsubscribes
           undeliverable addresses, to bounce (default: 14 days). Probe
           messages are sent three days (default) after the first message to
           an address bounces.

           Purge unconfirmed subscribe/unsubscribe requests after h hours
           (default: 48 hours).

           Resend a moderation reminder after h hours (default: 12 hours).

           Mail daily reports of new and removed subscribers to this address.
           Must be set in order to receive reports. Provide an empty address
           to stop reporting.

           If n is 1, confirmation requests may be acknowledged without adding
           “yes” to the subject line.

               The text in sub.tmpl, unsub.tmpl, and help.tmpl may need

           Set subscription options.  option is either "all", meaning that
           anyone can subscribe, or "mod", meaning moderated subscription
           requests, where all subscription requests are sent to the mailing
           list owner for approval. The default is "all".

           Send a probe to a bouncing address n days after receiving the first
           bounce. Basically this means that an address must bounce for at
           least n days before it gets a probe message. The default is 3 days.

       Option names and settings are case sensitive.

           If you set up a digest list, you MUST set identical POSTARCHIVE
           option for both the main list and the digest list.

       The info command displays the subscription record for the requested

           couriermlm info directory user@domain

       This displays the subscription record for "user@domain", which
       typically consists of a copy of the initial subscription request, and

       The msg commands reads an E-mail message on standard input, and mails
       the contents of the message to the mailing list´s subscribers.

       If the POST option is set to "subscribers", the message is rejected
       unless the address in its From: header is a subscriber to this mailing

       Control files headeradd and headerdel are read, and are applied to the
       message, as described previously.

       Mailing list commands can be sent via E-mail to couriermlm by sending a
       message to <list-command@domain>. The "default" dot-courier(5)[1] file
       runs couriermlm to receive mail for all addresses of this form.

       couriermlm reads the DEFAULT environment variable, which is set by the
       Courier mail server, that indicates the specific command. The available
       commands are:

           A simple autoresponder.  couriermlm mails the sender the contents
           of the help.tmpl file.

           A request to subscribe to this mailing list.  couriermlm reads the
           sender´s address in order to determine what address to subscribe.

           Explicitly specify the address to subscribe to the mailing list,
           instead of using a return address. In the previous example, sending
           a message addressed to
           <> would result in
           a subscription request for <>. Any unusual
           punctuation characters in the address must be replaced by a plus
           sign, followed by two hexadecimal digits that represent the
           punctuation character´s ASCII code.

           A request to unsubscribe to this mailing list.

           Explicitly specify the address to unsubscribe from the mailing

           Set up a write-only alias (see below).

           Explicitly specify the subscriber address for which a write-only
           alias needs to be set up.

       There are other commands that are used internally for maintaining the
       mailing list.

       Write-only E-mail aliases can send messages to the mailing list, but
       they do not receive any mailing list messages themselves. A write-only
       alias can be set up by any subscriber. Only one write-only alias is
       allowed per subscribed E-mail address. Write-only aliases are not
       needed for mailing list that has the POST=all option set.

       To set up a write-only alias, the subscriber sends a couriermlm
       alias-subscribe command. The subscriber´s E-mail address can be
       explicitly specified in a similar manner as the subscribe command.

       The subject line of the E-mail message must contain the E-mail
       write-only alias to be set up, and nothing else.  couriermlm responds
       with a confirmation request, just like when subscribing to the list.
       This request must be acknowledged in the same way.

       A subscriber´s write-only alias can be changed at any time by repeating
       this procedure. The new alias replaces the previous one. To prevent
       abuse, there´s a limit of at most one alias-subscribe command every 30

       Leave the subject of the E-mail message blank in order to remove an
       existing write-only alias,

       couriermlm supports mailing list digests. Mailing list digests are
       created as a second, separate, mailing list. The create command
       initializes a second mailing list directory, and then additional
       configuration takes place which links the main mailing list to the
       digest list.

       If the mailing list address is, the address of
       the digest version of the mailing list is usually, but it doesn´t have to be this
       address. The only requirement is that the directory for the digest
       version of the mailing list must reside on the same file system as the
       directory for the mailing list itself, and both must be owned by the
       same userid.

       To set up a mailing list digest, first proceed with the steps to create
       the mailing list itself. After the mailing list is created and
       configured, proceed as follows:

       Create the digest list directory
           Execute the create command to create the digest version of the

               /usr/bin/couriermlm create \
                  /path/to/digest/list/directory \
           Use the full pathname to the mailing list directory, and the
           address of the digest version of the mailing list.

       Configure the digest list
           Execute the set command to set any appropriate options for the
           digest list. There one important differences to note: messages are
           not posted to the digest list directly, so there is no moderation
           option, however the digest version of the list can have moderated
           subscription requests.

       Link the two lists
           Set the DIGEST option for the main mailing list, specifying the
           directory of the digest list. This keyword lets couriermlm know
           that a digest version is available.

               You MUST set identical POSTARCHIVE option for both the main
               list, and the digest list.

       Create dot-courier(5)[1] files
           It is necessary to create dot-courier(5)[1] files for the digest
           list just like the main list, except for some important
           differences, which are noted below.

       Create cron(8) jobs
           It is also necessary to create cron jobs for the digest list
           exactly like the main list, to run the hourly and daily cleanup.
           It´s possible to set up one set of cron jobs to run hourly and
           daily cleanups consecutively for both lists.

       Create a digest cron(8) job
           The digest creates and distributes the digest version of the list.
           It can be executed by a cron(8) job, or the command can be executed

       The main mailing list is supported by three dot-courier(5)[1] files, as
       previously described: the posting address, the owner forwarding
       address, and the default address that handles administrative control
       messages. In the following example, the names $HOME/.courier-list,
       $HOME/.courier-list-owner, and $HOME/.courier-list-default are used to
       represent each one of these files, and the following names are used to
       represent the dot-courier(5)[1] files that correspond to the digest
       version of the mailing list: $HOME/.courier-list-digest,
       $HOME/.courier-list-digest-owner, and
       $HOME/.courier-list-digest-default. Note, however, that the digest
       version of the mailing list can have any name, not necessary the name
       of the list, followed by "digest".

       The contents of both $HOME/.courier-list $HOME/.courier-list-digest
       must be the same. Sending a message to the digest address should really
       end up sending a message to the main mailing list. Do not put the
       address of the digest mailing list directory in
       $HOME/.courier-list-digest, instead specify the address of the main
       mailing list directory. Just copy $HOME/.courier-list to

       However, the contents of $HOME/.courier-list-digest-default must
       specify the directory of the digest version of the mailing list. The
       digest list is managed separately from the main list, it has its own
       subscriber list that is separate from the list of subscribers to the
       main list.  $HOME/.courier-list-default can simply be copied to
       $HOME/.courier-list-digest-default, then the directory can be changed
       in the latter.

       $HOME/.courier-list-owner may use the same mailing list owner address
       as $HOME/.courier-list-digest-owner, or it can specify a different
       address. The both the digest and the main mailing list can have the
       same mailing list owner/moderator, or have a different owner/moderator.

       The following command must be executed in order to link the two lists

           /usr/bin/couriermlm set \
               /path/to/main/list/directory \

       Setting the DIGEST option on the main list lets couriermlm know that a
       digest version is available. The DIGEST option must either use an
       absolute pathname, or a pathname that´s relative to the main list
       directory (NOT the current directory).

       When the DIGEST option is set, messages are simultaneously distributed
       to the mailing list´s subscribers, saved in the archive subdirectory of
       the main list, then placed in the modqueue subdirectory of the digest
       list. Digest list do not employ moderation -- any moderation must take
       place on the main list -- so the modqueue subdirectory is recycled to
       compile individual messages for the digest.

       Finally, something needs to be done in order to actually distribute the
       digest to the digest list´s subscribers. This is done by running the
       following command:

           /usr/bin/couriermlm digest /path/to/digest/directory N H

       This command creates a digest, and sends it out. The N and H arguments
       are optional. The digest is created only if there´s at least N messages
       that are waiting to be sent in the digest list, or if the oldest
       message is at least H hours old. Both options default to 0, so the
       default behavior is to send a digest with all unsent messages.

       Note that when the digest is created, ALL unsent messages are packaged
       into the digest, even if some messages are more recent than the time
       interval specified by the H option. A cron(8) job can be set up to run
       the digest command, or run it manually.

       couriermlm automatically provides the From:, To: headers on a message
       digest. Additional headers may be specified by the headeradd file in
       the digest list directory. The headerdel file has no effect. Note that
       the individual messages in the digest are copies of the messages from
       the main mailing list, and thus have the headeradd and headerdel
       headers processed from the main mailing list directory.


       couriermlm will not work if the Courier mail server´s support for dot-
       courier(5)[1] extensions is disabled.


       courier(8)[6], dot-courier(5)[1], webmlmd(1)[3].


        1. dot-courier(5)
           [set $man.base.url.for.relative.links]/dot-courier.html

        2. Setting up a mailing list digest
           [set $man.base.url.for.relative.links]/#digest

        3. webmlmd(1)
           [set $man.base.url.for.relative.links]/webmlmd.html

        4. Mailing list commands
           [set $man.base.url.for.relative.links]/#command

        5. Write-Only Aliases
           [set $man.base.url.for.relative.links]/#wonly

        6. courier(8)
           [set $man.base.url.for.relative.links]/courier.html