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
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"
- 5,731
- 12
- 61
- 107
- 15,314
- 12
- 51
- 78
-
17One 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. – David Gardner Sep 06 '13 at 08:23
-
2When 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 '13 at 08:52
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.
- 4,579
- 1
- 28
- 31
-
IMHO this is the right answer. Who wants to maintain individual lists of email addresses in various crontabs? – Satanicpuppy Feb 03 '14 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. – joeytwiddle Jul 17 '17 at 02:29
One solution might be a .forward
file on that user account which sends mail to the appropriate addresses.
- 3,639
- 10
- 26
- 36
- 20,218
- 10
- 67
- 114
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
.
- 243
- 1
- 6
- 31,092
- 9
- 65
- 87
Add ,
after each email, e.g.: MAILTO="some.user1@example.com,some.user2@example.com"
- 17
- 2
-
3In the documentation, the e-mails are separated by a comma, you are using a semicolon here. Are you sure this syntax is working? – physicalattraction Dec 28 '15 at 13:51
-
1
-
@Alfred I'm well aware of that. So is the other person who commented! – Michael Hampton Feb 18 '16 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. – Michael Hampton Feb 18 '16 at 21:38
-
1Corrected 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 '16 at 10:58