Отправляем логи по почте через SSMTP и BASH скрипт
Всем привет!
После сбора логов ICQ переписки я озадачился их доставкой руководству.
Поскольку о слежении должно знать как можно меньше человек было решено отсылать логи на почту начальству с сервера.
В качестве SMTP сервера я воспользовался моим любимым SSMTP.
Скачать его можно здесь
Установка проста:
Пользователи Gentoo делают:
emerge ssmtp
На же моё сервере стоит SuSe 10.2 и всё приходится ставить из сорцов.
Приступим:
cd /tmp
wget ftp://ftp.debian.org/debian/pool/main/s/ssmtp/ssmtp_2.62.orig.tar.gz
tar xvzf ssmtp_2.62.orig.tar.gz
cd ssmtp
./configure --prefix=/usr/ssmtp --enable-ssl --enable-md5auth
make
make install
Всё проставилось в /usr/ssmtp, делаем симлинки при необходимости.
Настраиваем:
Пример для Gmail
Правим /usr/ssmtp/etc/ssmtp/ssmtp.conf
root=youraccount@gmail.com # Это e-mail пользователя root, на него будет приходить почта из программ mail и mailx
mailhub=smtp.gmail.com:587
rewriteDomain=
hostname=youraccount@gmail.com
UseSTARTTLS=YES
AuthUser=youraccount
AuthPass=yourpasword
FromLineOverride=YES
/usr/ssmtp/etc/ssmtp/revaliases
root:youraccount@gmail.com:smtp.gmail.com:587 # youraccount@gmail.com – Этот адрес будет писаться в качестве отправителя.
mainuser:youraccount@gmail.com:smtp.gmail.com:587
И пробуем отправить тестовое сообщение:
echo “Hello World” > /tmp/test.txt
ssmtp -v your@mail.com < /tmp/test.txt
Кстати, у меня на сервере почему-то с почтой gmail отправка не заработала.
Хотя дома всё ОК, поэтому я решил воспользоваться почтой от rambler.ru
Подойдёт в принципе любая почта, хотя с mail.ru были проблемы.
Так, сообщения уходят, значит можно переходить ко второй части: Отправка самих логов.
Логи я решил отправлять в архиве, с помощью Bash скрипта и cron’a
Первое что потребовалось – определить MIME тип архива, для этого есть Bash скрипт
Для архива он оказался: application/octet-stream
Затем я написал следующий Bash скрипт:
#!/bin/shPATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin
ADMIN=”Ваша@почта.ru”
CODE=”$1″
SENDER=”$2″
shift 2
FILE=ICQ-BackUP-`date +%d.%m.%Y`.tar.bz2 # Имя файла бэкапа
LOG=”/var/log/imspector/arc/$FILE” # Файл, который будем пересылать
TMP=/tmp # Директория для временных файловfind /var/log/imspector -type f -mtime +30 -delete # Удаляем файлы, старше 30 дней
tar cjfP /var/log/imspector/arc/$FILE /var/log/imspector/ICQ-AIM #АрхивируемTMPMAIL=$TMP/new_mail.$$
trap “rm -f $TMPMAIL; exit” 0 1 2 15BOUNDARY=”newlog-`date +%s`-$$”
# Create mail header:
echo “To: $ADMIN” > $TMPMAIL
echo “Subject: Log from SERVER ” >> $TMPMAIL
echo “Mime-Version: 1.0″ >> $TMPMAIL
echo “Content-Type: multipart/mixed; boundary=$BOUNDARY” >> $TMPMAIL# Create first part of the mail
echo "--$BOUNDARY" >> $TMPMAIL
echo “Content-Type: text/plain; charset=utf-8″ >> $TMPMAIL #кодировка письма
echo “” >> $TMPMAIL
echo “ICQ message log” >> $TMPMAIL
echo “`date`.” >> $TMPMAIL
echo “” >> $TMPMAIL
echo "--$BOUNDARY" >> $TMPMAIL
echo “Content-Type: application/octet-stream” >> $TMPMAIL # тип содержимого
echo “Content-Transfer-Encoding: base64″ >> $TMPMAIL
echo “Content-Disposition: attachment; filename=\”$FILE\”" >> $TMPMAIL
echo “” >> $TMPMAILcat $LOG | base64 >> $TMPMAIL
echo “” >> $TMPMAIL
echo "--$BOUNDARY--" >> $TMPMAIL# Send out the created mail:
#sendmail -i -f $SENDER -- $ADMIN -- < $TMPMAIL # FOR SENDMAILssmtp почта@доставки.ru < $TMPMAIL # FOR SSMTP, почта получателя
rm -rf /var/log/imspector/ICQ-AIM/*
exit 0
Это для ознакомления (wordpress частенько код искажает), если будете использовать воспользуйтесь ссылками ниже:
То-же самое выложил сюда
И с подсветкой синтаксиса сюда . Тут-же Вы его можете скачать.
И засунул его в cron на выполнение.
Кстати, скрипт можно использовать и для отправки любых файлов в качестве аттачей.
Всё, задача выполнена.
1. Не стоит создавать временный файл, т.к. эти данные можно в переменную запихнуть
2. при настроенном смтп можно воспользоваться командой mail или mailx
3. переменную PATH лучше описывать:
PATH=my_dirs:$PATH
в целом – всё понятно, но можно упростить этот скрипт, убрав ненужное.
Довольно интересно.
А как сделать, что бы логи отправлялись как вложение. А не как текст письма.
На будущие учту, сейчас же скрипт исправно и бесперебойно работает, а значит лучше не трогать.
В данном скрипте логи архивируются, и высылаются в качестве вложения на мыло, что Тебе и требуется.