Создавать оповещения в crontab в зависимости от состояния [duplicate]

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

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

8 ответов

В конце я использовал sSMTP.

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

Используйте Synaptic для загрузки ssmtp. В качестве альтернативы вы можете запустить sudo apt-get install ssmtp. Откройте файл конфигурации в /etc/ssmtp/ssmtp.conf. Сделайте config следующим образом:

root=[yourRealEmail@yahoo.com.au] mailhub=smtp.mail.yahoo.com:587 FromLineOverride=YES UseSTARTTLS=YES AuthUser=[yourRealEmail@yahoo.com.au] AuthPass=[yourRealYahooPassword] TLS_CA_File=~/cert.pem Используйте Synaptic для загрузки ssmtp. В качестве альтернативы вы можете запустить sudo apt-get install ssmtp.

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

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

Откройте файл /etc/ssmtp/revaliases и добавьте строку [yourPCUsername]:[yourRealEmail@yahoo.com.au]:smtp.mail.yahoo.com:587. Если вы используете root, я думаю, вам нужно добавить еще одну строку, заменяющую ваше имя «root».

To: [yourRealEmail@yahoo.com.au] From: "whateverYaWant" <[yourRealEmail@yahoo.com.au]> Subject: Some Notifying Email MIME-Version: 1.0 Content-Type: text/plain Body of your email goes here! Hello world!

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

Наконец, запустите cat fileWithEmailInIt.txt | sendmail -i -t, затем подождите несколько секунд (10-30) и проверьте свою электронную почту!

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

26
ответ дан 18 July 2018 в 03:05

В конце я использовал sSMTP.

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

Используйте Synaptic для загрузки ssmtp. В качестве альтернативы вы можете запустить sudo apt-get install ssmtp. Откройте файл конфигурации в /etc/ssmtp/ssmtp.conf. Сделайте config следующим образом:

root=[yourRealEmail@yahoo.com.au] mailhub=smtp.mail.yahoo.com:587 FromLineOverride=YES UseSTARTTLS=YES AuthUser=[yourRealEmail@yahoo.com.au] AuthPass=[yourRealYahooPassword] TLS_CA_File=~/cert.pem Используйте Synaptic для загрузки ssmtp. В качестве альтернативы вы можете запустить sudo apt-get install ssmtp.

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

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

Откройте файл /etc/ssmtp/revaliases и добавьте строку [yourPCUsername]:[yourRealEmail@yahoo.com.au]:smtp.mail.yahoo.com:587. Если вы используете root, я думаю, вам нужно добавить еще одну строку, заменяющую ваше имя «root».

To: [yourRealEmail@yahoo.com.au] From: "whateverYaWant" <[yourRealEmail@yahoo.com.au]> Subject: Some Notifying Email MIME-Version: 1.0 Content-Type: text/plain Body of your email goes here! Hello world!

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

Наконец, запустите cat fileWithEmailInIt.txt | sendmail -i -t, затем подождите несколько секунд (10-30) и проверьте свою электронную почту!

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

26
ответ дан 24 July 2018 в 17:44

Из man-страницы sSMTP: «Это не делает сглаживание, которое должно выполняться либо в пользовательском агенте, либо в почтовом ящике. Оно также не имеет значения .forwards, которое должно выполняться на принимающем узле. к каналам. "

Итак, если вы хотите получать все сообщения, отправленные root, на ваш extenal email, это плохая идея использовать sSMTP, потому что он не поддерживает псевдонимы.

Вместо этого вы можете использовать постфикс. Это все еще очень просто. Вот как использовать его с gmail как ваш smtp для отправки сообщений:

sudo apt-get install postfix mailutils

Общий тип конфигурации почты: «Он не делает сглаживание, которое должно выполняться либо в пользовательском агенте, либо в на почтовом ящике.Он не выполняет чек, которые должны выполняться на принимающем узле.Это особенно не доставляет до трубопроводов. "

Имя системной почты: предпочтительный полностью квалифицированный имя почтового сервера, например, mail.example.com

SMTP-ретранслятор хоста (пустой для none): mail.example.com

Добавить в /etc/postfix/main.cf:

smtp_use_tls = yes smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd smtp_sasl_security_options = noanonymous smtp_sasl_tls_security_options = noanonymous

Создать / etc / postfix / sasl / sasl_passwd

[smtp.gmail.com]:587 emailtouseforsending@gmail.com:password

Затем:

sudo postmap /etc/postfix/sasl/sasl_passwd sudo chown -R root:postfix /etc/postfix/sasl sudo chmod 750 /etc/postfix/sasl sudo chmod 640 /etc/postfix/sasl/sasl_passwd*

Измените / etc / aliases и добавьте:

root: email@example.com

И наконец, запустите:

sudo newaliases sudo systemctl stop postfix.service sudo systemctl start postfix.service

Теперь вы можете проверить, работает ли перенаправление:

echo "Test to root." | mail -s "Test message to root" root

Надеюсь, что это поможет.

0
ответ дан 18 July 2018 в 03:05

Мне очень повезло с 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
ответ дан 18 July 2018 в 03:05

Установить 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
ответ дан 18 July 2018 в 03:05

Из man-страницы sSMTP: «Это не делает сглаживание, которое должно выполняться либо в пользовательском агенте, либо в почтовом ящике. Оно также не имеет значения .forwards, которое должно выполняться на принимающем узле. к каналам. "

Итак, если вы хотите получать все сообщения, отправленные root, на ваш extenal email, это плохая идея использовать sSMTP, потому что он не поддерживает псевдонимы.

Вместо этого вы можете использовать постфикс. Это все еще очень просто. Вот как использовать его с gmail как ваш smtp для отправки сообщений:

sudo apt-get install postfix mailutils

Общий тип конфигурации почты: «Он не делает сглаживание, которое должно выполняться либо в пользовательском агенте, либо в на почтовом ящике.Он не выполняет чек, которые должны выполняться на принимающем узле.Это особенно не доставляет до трубопроводов. "

Имя системной почты: предпочтительный полностью квалифицированный имя почтового сервера, например, mail.example.com

SMTP-ретранслятор хоста (пустой для none): mail.example.com

Добавить в /etc/postfix/main.cf:

smtp_use_tls = yes smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd smtp_sasl_security_options = noanonymous smtp_sasl_tls_security_options = noanonymous

Создать / etc / postfix / sasl / sasl_passwd

[smtp.gmail.com]:587 emailtouseforsending@gmail.com:password

Затем:

sudo postmap /etc/postfix/sasl/sasl_passwd sudo chown -R root:postfix /etc/postfix/sasl sudo chmod 750 /etc/postfix/sasl sudo chmod 640 /etc/postfix/sasl/sasl_passwd*

Измените / etc / aliases и добавьте:

root: email@example.com

И наконец, запустите:

sudo newaliases sudo systemctl stop postfix.service sudo systemctl start postfix.service

Теперь вы можете проверить, работает ли перенаправление:

echo "Test to root." | mail -s "Test message to root" root

Надеюсь, что это поможет.

0
ответ дан 24 July 2018 в 17:44

Мне очень повезло с 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 July 2018 в 17:44

Установить 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 July 2018 в 17:44
  • 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

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

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