Задался вопросом а как отслеживать события на подконтрольных серверах, вроде отвалившегося раздела из RAID-массива. По умолчанию система отправляет системные сообщения на почту root, т.е. в файл /var/mail/root. Нам же нужно, чтобы почту уходила не внешний ящик, информацию на котором мы сразу увидим. Решить вопрос можно двумя (как минимум) путями:
postfix
Задача разбивается на 2 части:
- Научить систему отправлять почту. И если вам не нужно настраивать полноценный почтовый сервер с доступом в мир, то проще всего завести relay, например через Яндекс. Как это сделать я уже писал ранее http://help.ubuntu.ru/wiki/postfix_relay_yandex
- Перенаправить почту для root в наш внешний почтовый ящик.
Первое уже решено ранее, нужно разобраться со 2-й задачкой. Поискал инфу, попробовал, получил резальтат, решил в вики оформить, благо писать не много.
sudo su echo "root: my@email.ru" >> /etc/aliases newaliases
Вот и все, почта для root будет падать на наш внешний почтовый ящик. Проверил на ВМ, имитацией отказа одного из разделов в RAID1.
ssmtp
Также, вместо postfix, можно воспользоваться утилитой ssmtp.
Установка
sudo apt-get install ssmtp
Настройка
Редактируем файл /etc/ssmtp/ssmtp.conf
root= mailhub=smtp.yandex.ru:465 # SMTP-сервер яндекса UseTLS=Yes AuthUser=почта@с_которой_отсылаем # Почтовый ящик AuthPass=pass # Пароль hostname=localhost FromLineOverride=YES
Настраиваем отправителей писем:
Редактируем файл /etc/ssmtp/revaliases
root:почта@с_которой_отсылаем:smtp.yandex.ru:465 user:почта@с_которой_отсылаем:smtp.yandex.ru:465
Измените user на пользователя, который заведен в вашей системе.
Проверим настройки, отправив тестовое письмо
echo test | sendmail -v почта@куда_отсылаем
Теперь вы можете отправлять почту из консоли и скриптов. Однако, таким способом системная почта для root и пользователей отправляться не будет. Чтобы заставить ssmtp работать и с системной почтой, выполним следующие действия:
sudo rm /usr/sbin/sendmail
sudo nano /usr/sbin/sendmail
Пишем следующее:
#!/bin/sh sed -r \ -e 's/^From: .*$/From: Server <почта@с_которой_отсылаем>/' \ -e 's/^To: .*$/To: почта@куда_отсылаем/' \ | /usr/sbin/ssmtp 'почта@куда_отсылаем'
Даём права на исполнение
sudo chmod +x /usr/sbin/sendmail