Как заставить crontab отправлять мне сообщения по электронной почте?

Как я могу заставить 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

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

Вывод 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.

1
задан 14 October 2014 в 05:39

2 ответа

Установить 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 (перезагрузка won ' t!).

Теперь у вас установлена ​​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 будет в нужном месте, поскольку он, вероятно, не будет.

11
ответ дан 24 May 2018 в 02:54
  • 1
    Спасибо, но Postfix является сложным, хотя бы потому, что, похоже, нет простых руководств. Во всяком случае, я сработал с sSMTP очень хорошо, что делает именно то, что мне нужно, и действительно просто (хотя для его работы на самом деле все равно было занято много путаных и случайных догадок). Я хотел опубликовать ответ, но забыл - мне удалось уничтожить установку ОС , поэтому, как только у меня все получится, я отправлю свой собственный ответ :) – Clonkex 14 October 2014 в 13:25
  • 2
    И на самом деле мои задания cron отлично работали с ~/Desktop/. – Clonkex 14 October 2014 в 13:31
  • 3
    Мне нужно inet_interfaces = localhost. loopback-only дал мне postfix: fatal: config variable inet_interfaces: host not found: loopback-only – craq 28 June 2017 в 11:50

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

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

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

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

sudo dpkg-reconfigure exim4-config

и следуют через подсказки. Эта страница: https://help.ubuntu.com/community/Exim4 была очень полезной. Мне потребовалось около 10 минут, чтобы запустить его.

2
ответ дан 24 May 2018 в 02:54

Другие вопросы по тегам:

Похожие вопросы: