Как сделать crontab электронную почту мной с выводом?

Как я могу сделать crontab электронную почту мной с выводом ее заданий? Я имею MAILTO=redacted@yahoo.com.au выше заданий, но это не работает.

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

Все, что я хочу сделать, имеют 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

Я знаю наверняка, что крон работает, но я тестирую почтовую команду с echo Test | mail -s Test redacted@yahoo.com.au так или иначе.

54
задан 14 October 2014 в 04:39

5 ответов

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

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

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

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

  • Сделайте конфигурацию похожей на (скрыто ) mailhub = smtp.mail.yahoo.com: 587 FromLineOverride = ДА UseSTARTTLS = ДА (скрыто) AuthPass = [вашRealYahooPassword] TLS_CA_File = ~ / cert.pem

  • Создайте файл cert.pem с помощью OpenSSL. Я использовал команду openssl req -x509 -newkey rsa: 2048 -keyout key.pem -out cert.pem -days 9999 -nodes (подробнее на Как создать самозаверяющий сертификат с OpenSSL ). Вы можете прикрепить файл куда угодно, но я просто закинул его в ~ /. Куда бы вы его ни поместили, убедитесь, что вы указали строку TLS_CA_File = в ssmtp.conf в правильном месте.

  • Откройте файл / etc / ssmtp / revaliases и добавьте строку :

    (скрыто)

    Если вы работаете как root, я думаю, вам нужно добавить еще одну строку, заменив ваше имя на 'root'.

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

     Кому: (скрыто)
    От: "whatYaWant" (скрыто)
    Тема: Уведомление по электронной почте
    MIME-версия: 1.0
    Контент-Тип: текст / простой
    
    Тело вашего электронного письма отправляется сюда!  Привет, мир!
     
  • Сохраните и закройте файл, затем, чтобы убедиться, что у вас не установлен настоящий sendmail , запустите sendmail -V - он должен сказать «sSMTP».

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

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

Дополнительное примечание 1: Если у вас возникли проблемы с Gmail, попробуйте вариант 1 этого ответа .
(Спасибо Бену Кризи !)

Дополнительное примечание 2: Если почта отправляется из командной строки, но не через crontab, попробуйте изменить FromLineOverride на НЕТ в /etc/ssmtp/ssmtp.conf . Вы также можете получить более подробное ведение журнала, добавив Debug = YES в ssmtp.conf - дополнительная запись идет в /var/log/mail.log .
(Спасибо Якубу Кукулу !)

41
ответ дан 16 November 2019 в 10:31

Установите 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 не понимает ~ и может не иметь правильного набора ПУТЬ . Поэтому замените их на (я просто догадываюсь о реальных путях):

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

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

18
ответ дан 16 November 2019 в 10:31

Мне очень повезло с 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 минут.

3
ответ дан 16 November 2019 в 10:31

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

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

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

sudo apt-get install postfix mailutils

Общий тип конфигурации почты: Спутниковая система

Системное почтовое имя: предпочтительное полное имя почтового сервера, например, mail.example.com

Узел ретрансляции SMTP (пусто, если нет): [smtp.gmail.com]: 587

Добавить в /etc/postfix/main.cf:[12105estiveCreate / 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

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

2
ответ дан 16 November 2019 в 10:31

Я использовал довольно простой метод, чтобы cron отправлять электронные письма: Резервное копирование конфигурации Linux, скриптов и документов в Gmail .

Самый простой способ автоматизировать отправку электронной почты

С Отправлять оповещения по электронной почте с помощью ssmtp мы находим самый простой способ автоматической отправки электронной почты из терминала или сценария. Шаги установки просты:

sudo apt install ssmtp
sudo nano /etc/ssmtp/ssmtp.conf
# Change "MyEmailAddress" and "MyPassword" to your own.

Один шаг не упомянут; Google отправит вам электронное письмо, подтверждающее, что вы хотите разрешить "менее безопасному" приложению отправлять почту с вашей учетной записи:

gmail turns on less secure apps for email

Получение слишком большого количества почты раздражает. Например, каждый раз, когда вы ошибочно набираете свой пароль sudo , вы будете получать электронное письмо: Перестаньте присылать мне неверные попытки ввода пароля sudo

0
ответ дан 5 January 2021 в 23:01

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

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