ezmlm-cron(1) Sets up digest request messages generation via crond


ezmlm-cron [ -cCdDlL ][ -w dow ][ -t hh:mm ][ -i hrs ] listadr code[f]


ezmlm-cron is a very restrictive interface to crond(8). It edits the effective user's ~/crontab (see crontab(5)) file. It then executes crontab(1) to update crond(8) with the changes.

ezmlm-cron sets up the generation of trigger messages to the list listadr and the digest code code. A optional digest format specifier f can be added to code.

ezmlm-cron reads dir/ezcronrc, where dir is the home directory of the effective user. The first line of this file is the host name, 'host', to which bounces should be sent. Any bounces for lists set up by 'user' will go to 'user@host'. Subsequent lines are entries for users made up of: user:local:host:num:[list1[,list2...]]. The ':'-separated parameters are:

the user name to which this line corresponds.
the list address must start with exactly these characters (case sensitive). If this field is empty, any list local address is allowed.
the list host name must exactly match this parameter (case insensitive). If this field is empty, any list host address is allowed. (Host names for the list and the digest list must still match.)
the user is permitted a maximum of num entries.
list1 [,list2...]
a set of complete list names separated by commas. The user may edit entries for these lists, even if they do not match the criteria set above. If these lists exist, they are counted in determining num. No while space is allowed before or between list names. If no list names are specified, the final ':' can be omitted.

The first line matching the executing user will be used.

If ezmlm-cron is installed SUID euser, the configuration and crontab files from that user's home directory will be used for all ezmlm-cron actions. This way, users on a system can be given limited crond(8) access via ezmlm-cron restricted by dir/ezcronrc and to the generation of digest trigger messages. This is especially useful for users without shell access or access to crond(8). euser is usually 'ezmlm'. To install ezmlm-cron SUID ezmlm:

  # chown ezmlm /usr/local/bin/ezmlm/ezmlm-cron
  # chmod 4555 /usr/local/bin/ezmlm/ezmlm-cron

ezmlm-cron refuses to run if installed SUID root. ezmlm-cron when executed by 'root', will still use the files in ~root.

To allow crond(8) access, you may need to list the effective user (all users allowed access or ~ezmlm if ezmlm-cron is installed SUID ezmlm) in /etc/cron.allow. See crontab(1) for further information.


The -c, -d, and -l switches are mutually exclusive.

List user entry from ezcronrc.
(Default.) Do not list user entry.
Delete entry. ezmlm-cron will search ~euser/crontab for an entry belonging to the executing user, permitted by ~euser/ezcronrc and matching the command line arguments supplied. code is ignored and may be omitted.
(Default.) Do not delete entry.
-i hrs
Generate trigger message with hrs hours interval. Accepted intervals are 0, 1 ,2, 3, 6, 12, 24, 48, and 72 hours. Other numbers will be silently adjusted upwards to the nearest accepted interval (intervals above 72 hours will result in weekly trigger messages).
List entries. If no other command line arguments are given, ezmlm-cron lists the entries created in the name of the user. If listadr is given, ezmlm-cron will list the entries for all the matching lists, even if the entries were not set up by the current user. Arguments, if given, still have to comply with the rules set in ezcronrc.

Crude crontab(5) lines are listed. These are taken from the ~/crontab file. Usually, these are active entries, although if the last execution of crontab(1) failed, they may not be.

(Default.) Do not list entry.
-t hh:mm
The time for the trigger message. Other trigger messages will be sent hrs hours before and after this time.
-w dow
The days of the week on which trigger messages are sent. day 0 and 7 are Sunday, 1 is Monday, etc (see crontab(5)). The string specified for dow must consists of single comma-separated digits in the range '0'-'7' only. The default is every day, except for hrs of 48 (default Monday, Wednesday, Friday), 72 (default Monday and Thursday), or greater than 72 (default Monday). Both hrs and dow can be specified. In this case, trigger messages are sent on the day specified by dow at the interval specified by hrs. If hrs is greater than 24 h, it is ignored and trigger messages are generated daily or as specified by dow.


The configuration file for ezmlm-cron. euser is the effective user id. This is the executing user, unless ezmlm-cron is installed SUID otheruser, in which case it is otheruser.
The file edited by ezmlm-cron. euser is the effective user.
The lock file used to assure that only one process at a time is editing the crond(8) settings. euser is the effective user.


ezmlm-cron should use the output of 'crontab -l' to list crontab lines, rather than parse the crontab file (and assume that the last execution of crontab(1) was successful).