Назад | Перейти на главную страницу

Cron не будет использовать msmtp для отправки писем в случае сбоя cronjob

Я пытаюсь настроить машину так, чтобы она отправляла мне электронное письмо, если одно из cronjobs выводит что-то в случае ошибки.

Я могу отправить электронное письмо, используя:

echo "test" | mail -s "subject" user@target.tld

или выполнив:

echo "test" | /usr/sbin/sendmail

Без символической ссылки (/ usr / sbin / sendmail) cron скажет мне, что:

(CRON) info (No MTA installed, discarding output)

С символическими ссылками я получаю:

(root) MAIL (mailed 1 byte of output; but got status 0x004e, #012)

Вы можете подсказать, как настроить пару cron / msmtp?

Спасибо!

РЕДАКТИРОВАТЬ:

Примечание: я по ошибке написал "msmtpd". Это не демон, а скорее клиент SMTP с именем «msmtp» (без окончания «d»). Он выполняется по запросу и не работает все время в фоновом режиме.

Когда я пытаюсь отправить электронное письмо, используя msmtp, он работает:

echo "test" | msmtp USER@TARGETHOST.TLD

С другой стороны, в журналах SMTP-сервера я прочитал:

Nov  2 09:26:10 S01 postfix/smtpd[12728]: connect from unknown[CLIENT_IP]
Nov  2 09:26:12 S01 postfix/smtpd[12728]: 532301C318: client=unknown[CLIENT_IP], sasl_method=CRAM-MD5, sasl_username=USER@TARGETHOST.TLD
Nov  2 09:26:12 S01 postfix/cleanup[12733]: 532301C318: message-id=<>
Nov  2 09:26:12 S01 postfix/qmgr[2404]: 532301C318: from=<USER@TARGETHOST.TLD>, size=191, nrcpt=1 (queue active)
Nov  2 09:26:12 S01 postfix/local[12734]: 532301C318: to=<FORWARD_TO@TARGETHOST.TLD>, orig_to=<USER@TARGETHOST.TLD>, relay=local, delay=0.62, delays=0.59/0.01/0/0.03, dsn=2.0.0, status=sent (delivered to command: IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #1001)
Nov  2 09:26:12 S01 postfix/qmgr[2404]: 532301C318: removed
Nov  2 09:26:13 S01 postfix/smtpd[12728]: disconnect from unknown[CLIENT_IP]

И электронное письмо доставляется целевому пользователю. Итак, похоже, что клиент msmtp работает правильно.

Это должно быть что-то в интеграции cron / msmtp, но я понятия не имею, что это может быть. Вы можете помочь мне?

У меня был точно такой же сценарий, как описано в вопросе, однако текущий ответ не устранил для меня проблему. В моем случае проблема заключалась в том, что каждый раз, когда cron казнен sendmail команда, которую он устанавливал $HOME к /, скорее, чем /home/<user>. Таким образом, даже если msmtp заменены sendmail через символическую ссылку он не смог найти свой файл конфигурации для конкретного пользователя, расположенный в $HOME/.msmtprc.

Мой РЕШЕНИЕ было использовать /etc/msmtprc вместо того $HOME/.msmtprc.

Это может быть не лучшим решением для вашей системы, так как это может привести к тому, что некоторые конфиденциальные данные будут /etc/msmtprc для чтения другими пользователями.

Подробнее здесь: http://comments.gmane.org/gmane.linux.debian.devel.bugs.general/671011

Решением было добавить в конфигурацию cron для моего пользователя (путем вызова crontab -e) следующее:

CRONARGS=-m/usr/bin/msmtp