Конечно есть готовые решения для этого, но когда понимаешь как все работает и как можно все что хочешь сделать это просто прям ваще!!!
План: первое ставим sstmp, чтобы отправлять сообщения сервера человеку через аккаунт GMAIL, втрое через expect bash анализируем и высылаем то что надо.
Отправлять сообщения из командной строки через обычную учетку(как мне казалось) очень просто!
Сначала отключаем sendmail…
vi /etc/rc.conf
sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO"
…он должен был бы работать, но не работает, потому что… Вообще для отправки почты не нужны же никакие аккаунты ни где — просто уникальный IP, уникальное имя машины и шли, но спамеры все испортили и это не работает уже так!
Перегружаемся или
killall sendmail
Я всегда за перезагрузку — дома можно!
cd /usr/ports/mail/ssmtp
make
make install
если хотим что все системные письма попадали на нашу почту (указанную в ssmtp.conf )доводим файл
vi /etc/mail/mailer.conf
до вида
sendmail /usr/local/sbin/ssmtp send-mail /usr/local/sbin/ssmtp mailq /usr/local/sbin/ssmtp newaliases /usr/local/sbin/ssmtp hoststat /usr/bin/true purgestat /usr/bin/true
а если хотим только отправлять (без получения системныз сообщения на адрес указанный в качестве рутового) оставляем тут только
send-mail /usr/local/sbin/ssmtp
Нам нужна учета GMAIL у этого свои ограничения вот про них написано https://support.google.com/a/answer/176600?hl=ru
Создаем файл
vi /usr/local/etc/ssmtp/ssmtp.conf
добавляем
root=texttest@gmail.com
mailhub=smtp.gmail.com:465
rewriteDomain=gmail.com
hostname=ITCooky_VPS
realname="ITCooky"
FromLineOverride=YES
AuthUser=texttest@gmail.com
AuthPass=mypassword
UseTLS=YES
Ящики root и AuthUser теперь должны совпадать после изменений в жмайле с 5 ноября.
Иии как я понял, на ящик указанный в root= начинают валится системный сообщения сервера — не понял как их отключить
Перегружаемся
Проверяем
ssmtp -v texttest@gmail.com
Ничего не происходит просто подвешивает нам окно терминала! Если подождать пару минут и постучать по клавиатуре появится диалог с ошибкой и с отправкой по ссылке https://support.google.com/mail/answer/78754 оказывается gmail нас не пускает — надо прочитать все что на странице и всё попробовать, мне кажется помогла четвертая строка!
Теперь можно пробовать что-то послать
echo test | mail -v -s "testing ssmtp setup" texttest@gmail.com
Письмо ушло и пришло! Единственно что письмо приходит от Charlie &
идем в
vipw
И в записи root меняем это имя на то что хотим!
Теперь я хотел на expect написать проверялку свободного места на диске, но у него проблемы с палкой!!! А у BASH нет проблем с палкой, у него есть пробелмы с запятой — но это лучше чем проблема с палкой!!! По двум статьям на хабре можно научит элементарный скрипт писать.
Создаем файл
vi mailhddalert.sh
вставляем туда
#!/usr/local/bin/bash ##min hard space sh in Mb sh=600 s1=`/bin/df -b | /usr/bin/grep ada0p3 | /usr/bin/awk '{print $4}'` let "s2 = ( (sh * 1073741824 ) /512 ) / 1024" mail=ypu(a)gmail.com if [[ "$s1" -le "$s2" ]] then let "s3 = (s1 * 512) / 1048576)" echo "Avaiilabel ${s3}M. Minimun alert size is ${sh}M" | mail -v -s "Root low HDD space on your ITC server!!!" ${mail} exit else exit fi
s1 — здесь указана замеряемая партиция ada0p3
s2 — меньше этого размера в битах будет высылаться предупреждение
mail — mail
делаем
chmod +x mailhddalert.sh
и вставляем врасписание
crontab -e
строчку чтобы запускала на каждой 51 — минуте это скрипт
51 * * * * /root/mailhddalert.sh
ААА и Ура работает!!! Как бэ…
…что с GMAIL на Android не так-то!!! Почему нельзя удалить ОДНО ПИСЬМО из цепочки писем, только всю ЦЕПОЧКУ ААА!!!
UPD: Вот скрипт отсылки внешнего IP если поменялся
#!/usr/local/bin/bash s1=`dig +short myip.opendns.com @resolver1.opendns.com` s2=`cat myip.status` mail=mymail(@)gmail.com if [ "$s1" = "$s2" ] then exit else echo ${s1} > myip.status echo "Your IP now is ${s1}" | mail -v -s "IP has changes on your ITC server!!!" ${mail} exit fi
Добавить комментарий