Как я могу сделать так, чтобы crontab писал мне по электронной почте о результатах своей работы? У меня MAILTO=redacted@yahoo.com.au
выше работы, но это не работает.
Я знаю, что мне нужно использовать что-то вроде Postfix или Sendmail, но я не могу понять, как этого добиться. Я искал и искал простое руководство по настройке Postfix, но все они безумно сложны и ожидают, что вы настроите целый сервер для отправки и получения электронной почты и узнаете все термины (например, что такое доменное имя для исходящих писем?).
Все, что я хочу сделать - это написать мне crontab. Почему это так сложно ??
Дополнительная информация:
Мой файл crontab выглядит так:
MAILTO=redacted@yahoo.com.au
1 0 * * * ~/Desktop/toskymesh.sh
59 6 * * * ~/Desktop/tooptus.sh
0 3 * * * snapraid sync
Дополнительная информация:
Выход из ps -ef | grep '[s]endmail'
root 6840 1370 0 10:26 ? 00:00:00 sendmail: MTA: accepting connections
Я точно знаю, что cron работает, но я все echo Test | mail -s Test redacted@yahoo.com.au
равно проверяю команду mail .
sendmail setup
. Удачи!mail
. В одном из них говорится:Diagnostic-Code: SMTP; 553 5.7.1 [BL21] Connections will not be accepted from [MyIPRedacted], because the ip is in Spamhaus's list; see http://postmaster.yahoo.com/550-bl23.html
это означает, что команда работает, а Yahoo блокирует почту?http://webmasters.stackexchange.com
? Возможно, они могут помочь вам лучше или лучше, ноchat.stackexchange.com/rooms/524/webmasters
там, где, казалось бы, приветствуются все вопросы (хм ... вам может понадобиться больше представителей, чтобы войти, вы находитесь на других сайтах стек-обмена?) Удачи.Ответы:
В конце концов я использовал
sSMTP
. Это гораздо, гораздо проще , чем либоPostfix
илиsendmail
и делает работу красиво.Для дальнейшего использования, вот как использовать sSMTP с Yahoo Mail (не волнуйтесь, это гораздо менее сложно, чем кажется):
Используйте Synaptic для загрузки ssmtp. В качестве альтернативы вы можете бежать
sudo apt-get install ssmtp
.Откройте файл конфигурации в /etc/ssmtp/ssmtp.conf.
Сделайте конфиг похожим на это:
Создайте файл cert.pem с помощью OpenSSL. Я использовал команду
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 9999 -nodes
(подробнее здесь ). Вы можете прикрепить файл куда угодно, но я просто забросил его в ~ /. Куда бы вы ни поместили его, убедитесь, что выTLS_CA_File=
указали строку в ssmtp.conf в правильном месте.Откройте файл
/etc/ssmtp/revaliases
и добавьте строку[yourPCUsername]:[yourRealEmail@yahoo.com.au]:smtp.mail.yahoo.com:587
. Если вы работаете от имени пользователя root, я думаю, вам нужно добавить еще одну строку, заменяя ваше имя на «root».Вот и все, вы готовы идти! Для тестирования самый простой способ (IMO) - создать файл со следующим:
sendmail -V
- он должен сказать «sSTP».cat fileWithEmailInIt.txt | sendmail -i -t
, затем подождите несколько секунд (10-30) и проверьте свою электронную почту!Очевидно, замените
[yourRealEmail@yahoo.com.au]
свой адрес электронной почты (без скобок) и[yourRealYahooPassword]
пароль Yahoo Mail (опять же, без скобок).Дополнительное примечание. Если у вас возникли проблемы с Gmail, попробуйте вариант 1 этого ответа (спасибо Бен Кризи за эту информацию).
источник
hostname
как показано в данный момент). Этот ответ предполагает, что вы можете использовать сертификаты сервера по умолчанию, но я обнаружил, что мне не нужнаTLS_CA_File=
строка для отправки через GMail.Установите Postfix. Это сложнее, чем большинство других пакетов, но все же не сложно .
Выберите «Интернет-сайт» и затем примите все значения по умолчанию. Тогда нам просто нужно прекратить внешние соединения, превратив это в « нулевого клиента ». Запустите:
sudoedit /etc/postfix/main.cf
и найдитеinet_interfaces
настройку (ближе к концу) и измените ееloopback-only
следующим образом:И, наконец, перезапустите Postfix с помощью
sudo /etc/init.d/postfix restart
(перезагрузка не будет).Теперь у вас есть установка Postfix, которая не будет ретранслировать электронную почту для внешних машин, она будет просто принимать соединения на 127.0.0.1 (и :: 1 для IPv6).
В отдельном примечании, ваши строки cron, вероятно, не работают, потому что вы используете не относительные пути и пути с подстановками в Bash.
sh
Не понимает~
и может иметь неправильныйPATH
набор. Поэтому замените их на (я просто угадываю фактические пути):И если ваши скрипты требуют запуска из определенного каталога, убедитесь, что они находятся
cd
в правильном каталоге. Не предполагайте, чтоcron
это будет в правильном месте, поскольку это вероятно не будет.источник
~/Desktop/
.inet_interfaces = localhost
. толькоpostfix: fatal: config variable inet_interfaces: host not found: loopback-only
Мне очень повезло с exim4.
(Alpine - это просто почтовый клиент, который мне нравится использовать)
После этого я побежал
и следовал по подсказкам. Эта страница: https://help.ubuntu.com/community/Exim4 также была очень полезной. Мне понадобилось около 10 минут, чтобы запустить его.
источник
Из справочной страницы sSMTP: «Он не выполняет псевдонимы, что должно быть сделано ни в пользовательском агенте, ни в почтовом концентраторе. Также он не учитывает .forwards, что должно быть сделано на принимающем хосте. Он особенно не доставляет в конвейеры. "
Таким образом, если вы хотите получать все сообщения, отправленные root на вашу электронную почту, использовать sSMTP - плохая идея, поскольку он не поддерживает псевдонимы.
Вместо этого вы можете использовать постфикс пользователя. Это все еще очень просто. Вот как использовать его с Gmail в качестве SMTP для отправки сообщений:
Общий тип почтовой конфигурации: Спутниковая система
Системное почтовое имя: предпочитаемое полное имя почтового сервера, например mail.example.com.
Узел ретрансляции SMTP (пусто для ни одного): [smtp.gmail.com]: 587
Добавьте в /etc/postfix/main.cf:
Создайте / etc / postfix / sasl / sasl_passwd
Затем:
Отредактируйте / etc / aliases и добавьте:
Наконец, запустите:
Теперь вы можете проверить, работает ли перенаправление:
Надеюсь, это поможет.
источник