2017-01-06 1 views
1

Использование Integrating Amazon SES with Sendmail Я настроил SES, чтобы он мог отправлять электронные письма с подтвержденного адреса электронной почты. Я был в состоянии успешно отправить электронную почту из командной строки с помощью подтвержденного адреса электронной почты:AWS SES sendmail from CRON Fails

sudo /usr/sbin/sendmail -f [email protected] [email protected] < file_to_send.txt 

Следующих насторить Баш скрипт, чтобы собрать некоторую ежедневную информацию отчета.

#!/bin/bash                                              

# copy the cw file                                          
cp /var/log/cwr.log /cwr_analysis/cwr.log                           

# append the cw info to the subject file                                     
cat /cwr_analysis/subject.txt /cwr_analysis/cwr.log > /cwr_analysis/daily.txt                          

# send the mail                                             
/usr/sbin/sendmail -f [email protected] [email protected] < /cwr_analysis/daily.txt 

Если я запустить сценарий Баша вручную из командной строки в отчете собран и по электронной почте, как это должно быть. Я изменил разрешения на файл, чтобы позволить ему быть выполнена корнем (по аналогии с другими заданиями CR на экземпляре AWS):

-rwxr-xr-x 1 root  root  375 Jan 6 17:37 cwr_email.sh 

ПРОБЛЕМА

I Настройка хроны и установить его курсируют каждые 5 минут для тестирования (скрипт предназначен для запуска один раз в день, как только начнется производство):

*/5 * * * * /home/ec2-user/cwr_email.sh 

Баш копии сценария, а затем добавляет daily.txt файл правильно, но не посылает электронная почта. В спайке электронной почты нет никаких отказов или каких-либо других ошибок.

Я потратил большую часть сегодняшнего дня на поиск ответа, и многие поиски заканчиваются на мертвых концах, практически без информации об использовании CRON для отправки электронной почты через AWS SES.

Как исправить эту проблему?

+0

Является ли задание cron добавленным пользователем 'root'? – helloV

+0

Да @helloV, cron предназначен для пользователя root. –

+0

Вы пробовали это? http://serverfault.com/a/615344 –

ответ

4

Одна «проблема» с cron заключается в отсутствии переменных окружения (по очевидным соображениям безопасности). Вероятно, вам не хватает PATH и HOME. Вы можете определить их в скрипте напрямую или в файле crontab.

Добавить PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/us‌​r/bin в кронтаб перед вызовом Sendmail скрипт и он должен работать

#!/bin/bash 
#Adding the path                                              
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/us‌​r/bin 

# copy the cw file                                          
cp /var/log/cwr.log /cwr_analysis/cwr.log                           

# append the cw info to the subject file                                     
cat /cwr_analysis/subject.txt /cwr_analysis/cwr.log > /cwr_analysis/daily.txt                          

# send the mail                                             
/usr/sbin/sendmail -f [email protected] [email protected] < /cwr_analysis/daily.txt 

Вы должны проверить, пока все необходимые переменные не определены в соответствии с требованиями сценария.

+0

CRON работает, он просто не отправляет электронное письмо. –

+0

Я имел в виду, что добавление PATH поможет найти переменные env, необходимые для запуска команды sendmail. –

+0

Добавление какой PATH? Путь к sendmail очень четко определен в скрипте. –

Смежные вопросы