67

In the beginning of a crontab file you could use the MAILTO instruction to indicate you want the output to be sent as an e-mail to an e-mail address. I would like to send the output to multiple addresses. Is it possible (and how) to specify multiple addresses?

5 Answers 5

90

It may differ depending exactly which cron daemon package you use, but this is from the manpage of Vixie Cron on Ubuntu Hardy:

If MAILTO is defined (and non-empty), mail is sent to the user so named. MAILTO may also be used to direct mail to multiple recipients by separating recipient users with a comma. If MAILTO is defined but empty (MAILTO=""), no mail will be sent. Otherwise mail is sent to the owner of the crontab.

If you're not using Vixie Cron, or aren't sure, try the manual page for the crontab file: man 5 crontab

Example

MAILTO="user.one@domain.one,user.two@domain.two"
2
  • 17
    One thing to note -- use just a comma between addresses. Do not use a space as well, otherwise cron will log the address (probably in /var/log/cron or /var/log/daemon) as "UNSAFE" and will refuse to send to that list of addresses. Sep 6, 2013 at 8:23
  • 2
    When separating addresses with spaces instead of commas, it happened to me that cron sent mails to the first address only (and crontab had not complained when saving changes, which is a shame). There are errors in the syslog ((CRON) error (bad mailto)), but nobody noticed ...
    – Tobias
    Sep 11, 2013 at 8:52
12

As an alternative to the above answers, you can send email to a single address which is a mail group or distribution list. This works especially well if you manage multiple servers since it is easier to manage addresses on your mail server rather than in crontab of each individual machine.

2
  • IMHO this is the right answer. Who wants to maintain individual lists of email addresses in various crontabs? Feb 3, 2014 at 16:49
  • I created a simple list: 1. As root, add a "virtual recipient" to /etc/aliases by adding a line like this: cron-listeners: fred@example.com, george@example.com 2. In the crontab, set MAILTO=cron-listeners If you don't have root access, then you could try the .forward method instead. Jul 17, 2017 at 2:29
5

One solution might be a .forward file on that user account which sends mail to the appropriate addresses.

1
  • 1
    +1 .forward file is the way to go.
    – sleske
    Apr 16, 2010 at 11:17
2

The best answer is probably to either check your man pages for your distro's current version of cron/crontab to see if there's something that can be done with the MAILTO parameter or specify a mail address that in turn forwards mail to multiple addresses for you.

There are often two crontab man pages, the configuration file is typically in section 5, so use man -s 5 crontab.

0

Add , after each email, e.g.: MAILTO="some.user1@example.com,some.user2@example.com"

6
  • 3
    In the documentation, the e-mails are separated by a comma, you are using a semicolon here. Are you sure this syntax is working? Dec 28, 2015 at 13:51
  • 1
    @MichaelHampton the ; does not work
    – 030
    Feb 18, 2016 at 15:42
  • @Alfred I'm well aware of that. So is the other person who commented! Feb 18, 2016 at 16:01
  • 1
    @kasperd Because it is not appropriate to change the meaning of others' posts. That's for the poster alone, and so far he has chosen not to correct it. Wrong answers should be downvoted and commented on instead. Feb 18, 2016 at 21:38
  • 1
    Corrected my post. Don't know how it was working back in 2010. As @ThatGraemeGuy in an above post. Could depend on the Cron package.
    – dannyb2100
    Feb 19, 2016 at 10:58

Not the answer you're looking for? Browse other questions tagged or ask your own question.