Как отправить вывод из cronjob на несколько адресов электронной почты?


55

В начале файла crontab вы можете использовать MAILTOинструкцию, чтобы указать, что вы хотите, чтобы вывод отправлялся как электронное письмо на адрес электронной почты. Я хотел бы отправить вывод на несколько адресов. Можно ли (и как) указать несколько адресов?

Ответы:


72

Он может отличаться в зависимости от того, какой именно пакет cron daemon вы используете, но это из справочной страницы Vixie Cron в Ubuntu Hardy:

Если MAILTO определено (и не пусто), почта отправляется пользователю с таким именем. MAILTO также может использоваться для направления почты нескольким получателям, разделяя пользователей получателями запятыми. Если MAILTO определено, но пусто (MAILTO = ""), письмо не будет отправлено. В противном случае почта отправляется владельцу crontab.

Если вы не используете Vixie Cron или не уверены, попробуйте страницу руководства для файла crontab: man 5 crontab

пример

MAILTO="user.one@domain.one,user.two@domain.two"

12
Стоит отметить одну вещь - использовать только запятую между адресами. Также не используйте пробел , иначе cron запишет адрес (вероятно, в / var / log / cron или / var / log / daemon) как "UNSAFE" и откажется отправлять на этот список адресов.
Дэвид Гарднер

1
При разделении адресов с пробелами вместо запятых, это случилось со мной , что cronпослал письма в первый адрес толькоcrontabне жаловался при сохранении изменений, что является позором ). Есть ошибки в системном журнале ( (CRON) error (bad mailto)), но никто не заметил ...
Тобиас

11

В качестве альтернативы вышеприведенным ответам вы можете отправить электронное письмо на один адрес, который является почтовой группой или списком рассылки. Это особенно хорошо работает, если вы управляете несколькими серверами, поскольку проще управлять адресами на вашем почтовом сервере, чем в crontab каждого отдельного компьютера.


ИМХО это правильный ответ. Кто хочет вести отдельные списки адресов электронной почты в разных crontabs?
Satanicpuppy

Я создал простой список: 1. В качестве пользователя root добавьте «виртуального получателя» /etc/aliases, добавив строку, подобную этой: cron-listeners: fred@example.com, george@example.com2. В crontab, установите MAILTO=cron-listenersЕсли у вас нет root-доступа, вы можете попробовать .forwardметод вместо этого.
Joeytwiddle

4

Одним из решений может быть .forwardфайл в этой учетной записи пользователя, который отправляет почту на соответствующие адреса.


1
+1 .forward файл это путь.
слеске

0

Наилучший ответ, вероятно, заключается в том, чтобы либо проверить справочные страницы текущей версии вашего cron / crontab на вашем дистрибутиве, чтобы выяснить, можно ли что-то сделать с параметром MAILTO, либо указать почтовый адрес, который, в свою очередь, перенаправляет почту на несколько адресов для вас.


0

Добавляйте ,после каждого письма, например:MAILTO="some.user1@example.com,some.user2@example.com"


3
В документации электронные письма разделяются запятой, здесь вы используете точку с запятой. Вы уверены, что этот синтаксис работает?
физическая

1
@MichaelHampton ;не работает
030

@ Альфред, я хорошо это знаю. Так что другой человек, который прокомментировал!
Майкл Хэмптон

1
@kasperd Потому что не стоит менять смысл постов других. Это только для плаката, и до сих пор он решил не исправлять это. Неправильные ответы должны быть опущены и прокомментированы.
Майкл Хэмптон

1
Исправил мой пост. Не знаю, как это работало в 2010 году. Как @ThatGraemeGuy в посте выше. Может зависеть от пакета Cron.
dannyb2100
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.