Как сделать crontab отправить мне письмо с выходом?

27

Как я могу заставить crontab отправить мне письмо с результатами своих работ? У меня [email protected] выше заданий, но оно не работает.

Я знаю, что мне нужно использовать что-то вроде Postfix или Sendmail, но для жизни я не могу понять, как этого добиться. Я искал и искал простое руководство по настройке Postfix, но все они безумно сложны и ожидают, что вы настроите целый сервер для отправки и получения электронной почты и для ознакомления со всеми условиями (например, что такое доменное имя для исходящих писем?).

Все, что я хочу сделать, это написать мне письмо crontab. Почему это так сложно?

Дополнительная информация:

Мой файл crontab выглядит следующим образом:

[email protected]
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 [email protected] .

    
задан Clonkex 14.10.2014 в 00:03
источник

3 ответа

22

В конце я использовал sSMTP . Это намного проще, чем Postfix или sendmail , и делает работу красиво.

Для справки в будущем, вот как использовать sSMTP с Yahoo Mail (не волнуйтесь, это гораздо менее сложно, чем выглядит):

  • Используйте Synaptic для загрузки ssmtp. Кроме того, вы можете запустить sudo apt-get install ssmtp .

  • Откройте файл конфигурации в /etc/ssmtp/ssmtp.conf.

  • Сделайте конфигурацию так:

root=[[email protected]]
mailhub=smtp.mail.yahoo.com:587
FromLineOverride=YES
UseSTARTTLS=YES
AuthUser=[[email protected]]
AuthPass=[yourRealYahooPassword]
TLS_CA_File=~/cert.pem
  • Создайте файл 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]:[[email protected]]:smtp.mail.yahoo.com:587 . Если вы используете root, я думаю, вам нужно добавить еще одну строку, заменяющую ваше имя «root».

  • Вот и все, ты в порядке! Для тестирования самым простым способом (IMO) является создание в нем файла со следующим:

To: [[email protected]]
From: "whateverYaWant" <[[email protected]]>
Subject: Some Notifying Email
MIME-Version: 1.0
Content-Type: text/plain

Body of your email goes here! Hello world!
  • Сохраните и закройте файл, затем убедитесь, что у вас нет реального sendmail , запустите sendmail -V - он должен сказать «sSMTP».
  • Наконец, запустите cat fileWithEmailInIt.txt | sendmail -i -t , затем подождите несколько секунд (10-30) и проверьте свою электронную почту!

Очевидно, замените [[email protected]] на ваш адрес электронной почты (без скобок) и [yourRealYahooPassword] с вашим почтовым паролем Yahoo Mail (опять же без скобок).

Примечание: Если у вас возникли проблемы с Gmail, попробуйте вариант 1 этот ответ (спасибо для Бена Креси для этой информации).

    
ответ дан Clonkex 14.10.2014 в 12:23
источник
11

Установите Postfix. Это сложнее, чем большинство других пакетов, но он все еще не сложный .

sudo apt-get install postfix

Выберите «Интернет-сайт», а затем примите все значения по умолчанию. Затем нам просто нужно остановить внешние подключения, превратив это в « нулевой клиент ». Запустите: sudoedit /etc/postfix/main.cf и найдите параметр inet_interfaces (ближе к концу) и измените его на loopback-only , например:

inet_interfaces = loopback-only

И, наконец, перезапустите Postfix с sudo /etc/init.d/postfix restart (перезагрузка не будет).

Теперь у вас есть установка Postfix, которая не будет ретранслировать электронную почту для внешних машин, она просто примет соединения на 127.0.0.1 (и :: 1 для IPv6).

В отдельном примечании ваши линии cron, вероятно, не работают, потому что вы используете не относительные пути и пути с подстановками Bash в. sh не понимает ~ , и у него может не быть надлежащего PATH задавать. Поэтому замените их (я просто догадываюсь о реальных путях):

1 0 * * *   /home/clonkex/Desktop/toskymesh.sh
59 6 * * *  /home/clonkex/Desktop/tooptus.sh
0 3 * * *   /usr/bin/snapraid sync

И если ваши сценарии требуют запуска из определенного каталога, убедитесь, что они cd в правильном каталоге. Не предполагайте, что cron будет в нужном месте, так как это, вероятно, не будет.

    
ответ дан Oli 14.10.2014 в 08:16
2

Мне очень повезло с exim4.

sudo apt-get install alpine exim4 mailutils eximon4 spf-tools-perl swaks

(alpine - это только почтовый клиент, который мне нравится)

После этого я запустил

sudo dpkg-reconfigure exim4-config

и следуйте подсказкам. Эта страница: Ссылка также очень полезна. Мне потребовалось около 10 минут, чтобы запустить его.

    
ответ дан Oh Ar 11.09.2015 в 17:06