Next: , Previous: How ezmlm-cron works, Up: Overview of ezmlm function


4.41 How ezmlm-make works

ezmlm lists allow almost infinite customization. The component build, together with the qmail delivery mechanism makes it possible to create any variant of list function imaginable. However, this complexity makes it somewhat daunting to the average user wanting to set up a mailing list. ezmlm-make(1) allows automated list setup, while permitting a large amount of configurability.

At first glance, ezmlm-make(1) has many complicated options. However, these can be applied iteratively through the ezmlm-make(1) edit mechanism. Also, they are intended to be relatively complete so that execution of ezmlm-make(1) by e.g. a GUI can be used to safely set up and edit any list.

ezmlm-make(1) reads its command line arguments and switches, then creates the list directory. If the -e edit or -+ sticky edit switches are not specified, ezmlm-make(1) will fail if the directory already exists. The directory argument must be an absolute path starting with a slash. The dot-qmail file argument, if specified, must also be absolute.

ezmlm-make(1) next reads ezmlmrc(5) located in the /etc/ directory with a default install. If not found, the file in the ezmlm binary directory will be used. The second ezmlm-make command line argument specify the root name of the .qmail files. If the ezmlm-make(1) -c switch is used, ezmlm-make(1) will look in that directory for a .ezmlmrc file and use it instead. If this file does not exist, ezmlm-make(1) will print a warning and use the previously discussed ezmlmrc(5) files in the same order. You can also use -C ezmlmrc.alt to use ezmlmrc.alt as the ezmlmrc(5) file. Again, ezmlm-make(1) will fall back to the others with a warning, if the specified ezmlmrc(5) file is not found.

When not run in -e edit or -+ sticky edit modes, ezmlm-make(1) first creates the list directory. It also as the last step of its action creates DIR/key containing the key used for cookie generation.

The ezmlmrc(5) file consists of a number of file names relative to the list directory, followed by conditional flags (see ezmlm-make(1) and ezmlmrc(5) for details). If all the conditional flags (controlled by the corresponding command line switches) are true, the lines that follow are entered into the named file. There are also tags to erase files. Tags in the format <#X#> (where ‘X’ is any number, except ‘1’ and ‘2’) are replaced by the corresponding ezmlm-make(1) switch argument. The ezmlm-make(1) command line arguments and the ezmlm binary path can be similarly substituted into the text. Thus, ezmlmrc(5) controls (within reason) the entire operation of ezmlm-make(1). ezmlmrc(5) is also set up so that no messages or file containing list state information are lost. Therefore, ezmlm-make(1) can be used to safely edit existing lists. The only caveat is that the list state is undefined while editing is in progress. Thus, it is advisable to prevent mail delivery by setting the ‘sticky’ bit on the user's home directory while editing lists.

ezmlm-make(1) will create the file DIR/config. This files saves all the flags that were set at the last execution of ezmlm-make, as well as all the switch and command line arguments. When editing a list, only ‘DIR’ and the non-default letter switches need to be specified. Other command line arguments and the ‘digit switch’ arguments are read from DIR/config. To remove a digit switch, simply use it with two single quotes as the argument.

You can also easily determine how a list was set up by looking at DIR/config.

Note: DIR/text/ files will be created but not overwritten when using the -e or -+ edit switches. This is to preserve manual customizations. To overwrite these and reset the files to the content specified by ezmlmrc, use -ee or -++.

Note: As of ezmlm-idx-0.40 the ezmlm-make(1) -c and -C file switches are sticky when using -+ or -++, so you do not need to specify them. This feature is disabled if ezmlm-make(1) is run as root.