Я не могу понять, почему cron на моем AWS EC2 (Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64)
) не может отправлять электронную почту через sSmtp в AWS SES.
Это работает: echo "test" | ssmtp my@myemail.com
и я получаю электронное письмо от моего локального пользователя.
Это работает: echo "test" | sudo ssmtp my@myemail.com
и я получаю письмо от root.
Но когда cron запускается и пытается отправить электронное письмо, я ничего не получаю, и это отображается в системных журналах: sSMTP[14608]: 554 Transaction failed: Missing final '@domain'
или иногда: 554 Transaction failed: User name is missing: 'Cron Daemon <root>'
.
От кого cron пытается отправить электронное письмо? Я бы предположил, что это было root
.
/ и т.д. / crontab:
MAILTO="me@myemail.com"
(Я также пробовал MAILTO=root
)
/ etc / ssmtp / revaliases:
root:me@myemail.com:email-smtp.us-east-1.amazonaws.com:465
me:me@myemail.com:email-smtp.us-east-1.amazonaws.com:465
/etc/ssmtp/ssmtp.conf:
root=me@myemail.com
mailhub=email-smtp.us-east-1.amazonaws.com:465
rewriteDomain=myemail.com
hostname=myemail.com
#UseSTARTTLS=YES
UseTLS=YES
AuthUser=XXXXXXXXXXXXXXXXX
AuthPass=XXXXXXXXXXXXXXXXX
AuthMethod=LOGIN
FromLineOverride=YES
Основываясь на некотором поиске в Google, MAILFROM=
похоже, не работает на Ubuntu, и его изменение, похоже, не имеет никакого эффекта (из корневого cron и моего локального пользователя cron).
Я сбит с толку и озадачен. Похоже, что sSmtp не имеет каких-либо параметров отладки, которые помогли бы понять, от кого исходит электронное письмо cron, и посмотреть его заголовки.
Сервер требует минимальной установки, и я не хочу устанавливать postfix
просто отправлять 10 писем в день (в основном файлы журналов).
Спасибо!
Таким образом, afaict SES требует наличия домена в полях «от» и «до».
Пока MAILFROM=
не поддерживается в cron Ubuntu, вы можете установить FromLineOverride=NO
в ssmtp.conf, и ssmtp заставит адрес "from" быть "root @ hostname", а не просто "root". Это заботится об адресе "от".
Теперь - вам также необходимо убедиться, что адрес «Кому» имеет доменное имя (по умолчанию это также просто «root»). Это можно исправить, добавив MAILTO=you@whereever.com
строку в / etc / crontab.
Это решило мои проблемы «Ошибка транзакции 554: отсутствует последний '@domain'». Я не сталкивался с вашими сообщениями «Transaction failed: User name is missing: 'Cron Daemon'», поэтому я не могу это комментировать.
Главный вывод из всего этого заключается в том, что Debug=YES
в ssmtp.conf записывает кучу информации в системный журнал.