LINUX.ORG.RU

mail из скрипта по cron


0

0

Доброе время суток! Столкнулся со следующей проблемой. Есть скрипт который отправляет mail на требуемый адрес примерно так: echo "Тест" | /bin/mail -s test -r a@mail.ru a@mail.ru Когда запускаю скрипт руками из консоли - все ОК Но если скрипт запускает crond письма не отправляются. В логах ничего нет. :( Подскажите куда смотреть?

anonymous

„Запускаю скрипт руками из консоли“ - это небось от рута? А из крона не от рута?

Вообще, при чём тут /bin/mail? Оно для другого, оно для локальной доставки.

Teak ★★★★★
()

>В логах ничего нет. :( Подскажите куда смотреть?
В логи :-)
Ты какие логи проверял?

sdio ★★★★★
()

Кроме логов, еще нужно смотреть почту по адресу, который указан в crontab в параметре MAILTO. А может просто ошибка в скрипте и он не доходит до этой строчки или crond не запускает его?

mky ★★★★★
()
Ответ на: комментарий от mky

в MAILTO указан root, но ему ничего не приходит Смотрел в логи postfix /var/log/mail Причем когда из командной строки скрипт запускаю, то в логах видно что письмо появилось и доставляется, а когда все запускается из crond то в лога вообще ничего.

Это все может быть связано с окружением в котором запускается скрипт?

anonymous
()
Ответ на: комментарий от anonymous

Вот еще интересные подробности. Направил вывод скрипта в файл. Когда скрипт запускается из crond, то в лог пишется "/root/dead.letter" 1/81 Как я понимаю это вывод mail

В файле /root/dead.letter при этом текст не отправленного письма

anonymous
()
Ответ на: комментарий от anonymous

Вроде бы mail использует $HOME для чтения .mailrc и может быть $USER. Возможно, что mail путается с полем From и postfix рубит такую почту...

Ну раз тут больше ничего не советуют, я посоветую strace. Для начала:

echo TEST | strace -s 2000 -v -o /tmp/strace.mail /bin/mail -s test -r a@mail.ru a@mail.ru

Там будет видно, что mail пишет во временный файл, и делается ли fork() (для вызова sendmail). При этом можно сравнит результаты для вызова из командой строки и из crond.

mky ★★★★★
()
Ответ на: комментарий от mky

Похоже разница в том, что когда скрипт запускается из консоли (от root), то mail открывает файл не в /tmp а в /root/tmp затем пишет в него

Когда скрипт запускает crond, то mail открывает файл в /tmp затем пишет в него.

Это вся разница... И что теперь с этим делать?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.