26 мая 2012 г.

Отправка логов по почте через ssmtp и mpack

Собственно, после "небольшого" перерыва (с временем свободным всё не важно) пишу очередную памятку "для себя". Если кому и пригодится - отлично.

Короче, встала необходимость регулярно просматривать логи бэкапа на удаленном сервере, копированием там осуществляется регулярно через Rsync. Дабы держать руку на пульсе и периодически поглядывать логи сделал небольшую примочку на сервере - возможность отправки логов бэкапа прямо ко мне на электронную почту. В этом посте рассматривается реализация этого процесса через настройку пакета ssmtp и mpack.

До конца я это еще всё не тестил, но вроде пока все приходит нормально.

Итак, что надо.

1). Регистрируем себе почтовый ящик с которого (через который) будут приходить уведомления. Я выбрал яндекс и все настройки ниже справедливы для него.

2). Ставим замечательный пакет ssmtp, который и занимается отправкой сообщения с локального моего сервера на яндексовский шлюз.

3). Ставим утилиту mpack.


Всё находится в стандартных убунтовских репозиториях.

Дальше идём в /etc/ssmtp

и видим там два файла, их надо немножко откорректировать

Обратите внимание, мой почтовый ящик от которого будет приходить письмо называется backup@ваш_домен_здесь.ру (у меня доменная почта, поэтому домен свой, если вы заводите обычный ящик - естественно домен будет yandex).

Вот пример настройки ssmtp.conf


root=backup
mailhub=smtp.yandex.ru:465
UseTLS=YES
AuthUser=backup@ваш_домен_здесь.ru
AuthPass=ваш_пароль
FromLineOverride=Yes
rewriteDomain=ваш_домен_здесь.ru
hostname=backup

Содержимое второго файла revaliases:

user:backup@ваш_домен_здесь.ru:smtp.yandex.ru:465

Вот тут где я выделил user - надо подставить имя пользователя на сервере от которого будет запуск команды. Внимание, на точность сего конфига не претендую, но методом перебора я сделал конфиг именно таким, так как иначе яндекс ни в какую не хотел от меня получать почту.

Проверяем, работает ли почта, идем в терминал и задаём простую команду на отправку письма на ящик ящик@какой_нибудь_домен.ru


echo "" | ssmtp -v -s Hello ящик@какой_нибудь_домен.ru


Смотрим логи, если всё окей письмо отправится и придет в тот ящик который вы указали.
Если что-то не так смотрите лог в терминале там все будет написано.

Как же отправить теперь лог сервера?

Всё просто, одной командой, в примере ниже, лог лежит по условному пути в файле log.txt  /home/mylog/log.txt

Команда такая:

mpack -s "Лог бэкапа" /home/mylog/log.txt ящик@какой_нибудь_домен.ru

Лог придёт прямо в тексте письма.

Работает это так у меня сейчас.

Срабатывает по крону скрипт который сначала делает бэкап через Rsync, потом после него отправляет готовый лог. Всего две команды в скрипте.

Про локальный и удалённый бэкап через Rsync напишу потом).

2 комментария:

Анонимный комментирует...

Спасибо, сработало, именно то, что надо!

Unknown комментирует...

сообщения приходят но пустые