Вопрос или проблема
Я хочу, чтобы crontab
записывал ошибки. Насколько я знаю, это записывается в /var/mail/root
, но, похоже, это не работает. Нужно ли мне установить postfix
, чтобы это заработало?
Если под “Запись ошибок” вы имеете в виду “отправку ошибок владельцу задания cron по электронной почте”, то адрес электронной почты должен работать. В простом случае cron предполагает, что у пользователя есть адрес электронной почты на локальной машине, и требует доставки почты, чтобы почта для локальных пользователей работала – это означает, что вам нужно запустить почтовый сервер (например, postfix, но есть и другие), чтобы это работало.
Другой вариант (по крайней мере, для большинства версий cron) – указать, кому должна быть доставлена электронная почта. Это можно сделать, поставив следующую строку над заинтересованными заданиями (обычно вверху) файла cron:
MAILTO="[email protected]"
Вам все равно нужно будет иметь MTA (который должен присутствовать на любой “правильно” настроенной linux машине – но этот MTA может просто пересылать всю почту на внешний сайт, т.е. стандартная настройка, которая идет с linux, будет вполне приемлемой).
Еще один вариант (который не требует MTA) – перенаправить вывод каждой строки в crontab в соответствующий файл. Что-то вроде
* * * * * /bin/date 2>&1 >> /tmp/cron-datecheck.log
Может подойти вам, с частью после слова “date”, говорящей записывать stderr в stdin и добавлять stdin в файл /tmp/cron-datecheck.log.
Электронная почта для root доставляется/должна быть доставлена непривилегированному пользователю.
Используйте sendmail -bv root
, чтобы узнать, настроен ли ваш postfix на перенаправление электронной почты на root.
http://www.postfix.org/sendmail.1.html
Если вы хотите создать перенаправление:
http://www.postfix.org/aliases.5.html
Ответ или решение
Необходим ли Postfix для работы /var/mail/root?
Ваша задача заключается в том, чтобы настроить систему таким образом, чтобы ошибки, возникающие при выполнении заданий Cron, логировались в почтовом ящике root, расположенном по адресу /var/mail/root
. Давайте разберем, нужно ли устанавливать Postfix для достижения этой цели.
1. Что такое Postfix и его значения
Postfix — это одна из распространенных систем передачи почты (MTA — Mail Transfer Agent), которая отвечает за отправку, получение и пересылку электронной почты. Для того чтобы Cron мог отправлять email-уведомления о своих заданиях (включая ошибки), необходим корректно работающий MTA. В этом контексте Postfix может использоваться для доставки почты на локальном уровне, что обеспечит функциональность, необходимую для получения уведомлений о процессах в системе.
2. Локальная доставка почты
Cron по умолчанию предполагает, что у пользователя (в вашем случае, это root) есть рабочий email-адрес на локальной машине. Для этого требуется, чтобы сервер электронной почты был установлен и настроен. Если у вас уже есть другая MTA, такая как Sendmail или Exim, вы можете не устанавливать Postfix — важно, чтобы любой MTA был корректно настроен для доставки локальной почты.
3. Альтернативы Postfix
Если вы не хотите устанавливать Postfix или другую MTA, есть несколько альтернативных вариантов:
-
Настройка перенаправления почты: Вы можете указать адрес электронной почты, на который должны поступать уведомления. Для этого добавьте строку
MAILTO
выше заданий в вашем crontab:MAILTO="ваш_email@пример.com"
Это позволит перенаправлять все почтовые уведомления на указанный адрес.
-
Логи ошибок в файл: Если вы хотите обойтись без использования MTA, можно записывать вывод команд cron в файл:
* * * * * /bin/date >> /tmp/cron-datecheck.log 2>&1
В этом случае stderr и stdout будут перенаправлены в файл
/tmp/cron-datecheck.log
, что позволит вам отслеживать ошибки без отправки электронной почты.
4. Проверка конфигурации
Если Postfix уже установлен, вы можете проверить его работоспособность с помощью команды:
sendmail -bv root
Эта команда позволит вам увидеть, правильно ли настроен Postfix для отправки почты на адрес root. Если почта не доставляется, вам нужно будет просмотреть настройки Postfix и, возможно, перенастроить правила перенаправления.
5. Заключение
Таким образом, для того чтобы /var/mail/root
функционировал корректно и работал с Cron, установка Postfix является одним из вариантов, но не единственным. Вы можете использовать другую MTA или, если не требуется электронной почты, перенаправлять вывод команд в файл лога. Выбор метода зависит от ваших предпочтений и требований к системе.
Работоспособность системы уведомлений о cron будет зависеть от настройки вашего окружения, так что выберите тот вариант, который лучше всего подходит для вашей инфраструктуры.