Я пытаюсь настроить машину так, чтобы она отправляла мне электронное письмо, если одно из 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