Как я могу заставить 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.
В конце я использовал 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 (опять же без скобок).
В конце я использовал 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 (опять же без скобок).
Из 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
Надеюсь, что это поможет.
Мне очень повезло с 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 минут, чтобы запустить его.
Установить 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 будет в нужном месте, поскольку он, вероятно, не будет.
Из 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
Надеюсь, что это поможет.
Мне очень повезло с 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 минут, чтобы запустить его.
Установить 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 будет в нужном месте, поскольку он, вероятно, не будет.