Что бы отправлять сообщения электронной почты из Ubuntu, установим утилиту mutt
apt install mutt
Отредактируем конфигурационный файл mutt, что бы настоить SMTP сервер для отправки сообщений
vi ~/.muttrc
Внесем следующую строку и сохраним файл. Для примера мы будем использовать SMTP сервер mail.ru без авторизации
set smtp_url="smtp://smtp.mail.ru:25"
Для отправки сообщений через SMTP сервер с авторизацией пользователя нужно внести следующие данные
set smtp_url="smtp://smtp_user@smtp.mail.ru:465"
set smtp_pass = password
set ssl_verify_host = no
set ssl_verify_dates = no
set ssl_starttls = no
set ssl_force_tls = yes
- smtp_user — имя учетной записи, под которой нужно авторизоваться на SMTP.
- smtp_pass — пароль для аутентификации.
- ssl_verify_host — нужно ли проверять валидность сертификата.
- ssl_verify_dates — нужно ли проверять дату действия сертификата.
- ssl_starttls — нужно ли использовать STARTTLS (обычно, при подключении по порту 587).
- ssl_force_tls — нужно ли использование SSL/TLS (обычно, при подключении по порту 465).
Создадим новую директорию /scripts в корне и внутри нее создадим скрипт для отправки отчетов об ошибках.
mkdir /scripts
vi /scripts/emailerrorlog.sh
Копируем в файл следующее содержимое
# !/bin/bash
# Определяем имя хоста
HOSTNAME=`hostname`
# Установим переменную, равную нулю
prev_count=0
count=$(grep -i "`date --date='yesterday' '+%b %e'`" /var/log/syslog | egrep -wi 'warning|error|critical' | wc -l)
if [ "$prev_count" -lt "$count" ] ; then
# Отправляем письмо на указанный адрес электронной почты, если в журнале обнаружены ошибки.
SUBJECT="WARNING: Errors found in log on $HOSTNAME `date --date='yesterday' '+%b %e %Y'`"
# Это временный файл, созданный для хранения сообщения электронной почты.
MESSAGE="/tmp/logs.txt"
# Указываем адрес, куда будем отправлять отчеты
TO="no-spam@it-manager.pro"
echo "ATTENTION: Errors are found in /var/log/messages. Please Check with Linux admin." >> $MESSAGE
echo "Hostname: $HOSTNAME" >> $MESSAGE
echo -e "\n" >> $MESSAGE
echo "+------------------------------------------------------------------------------------+" >> $MESSAGE
echo "Error messages in the log file as below" >> $MESSAGE
echo "+------------------------------------------------------------------------------------+" >> $MESSAGE
grep -i "`date --date='yesterday' '+%b %e'`" /var/log/syslog | awk '{ $3=""; print}' | egrep -wi 'warning|error|critical' >> $MESSAGE
cat $MESSAGE | mutt -s "$SUBJECT" -- "$TO"
rm $MESSAGE
fi
Добавим разрешение на запуск скрипта
chmod +x /scripts/emailerrorlog.sh
Добавляем задачу в cron, чтобы скрипт выполнялся автоматически. Он будет срабатывать каждый день в 00 часов.
vi /etc/crontab
В конец файла добавляем строку
0 0 * * * root /scripts/emailerrorlog.sh
Для лучшего понимания планировщика cron рекомендую посмотреть сайт Crontab Guru