На почтовом сервере начал падать Spamassassin. Сервер старый, причину на ночь глядя искать откровенно лень (думаю, падает во время выполнения /usr/bin/sa-learn
в cron
-задаче – по времени прихода уведомлений будет яснее), да и почта будет скоро переезжать на сервер в AWS, поближе к RTFM (сейчас работает на VPS в ДЦ Воля-Кабель), потому добавлю скрипт для быстрого “фикса”.
Суть работы: пробуем подключиться к порту Spamassassin, если неудача – шлём уведомление на почту и стартуем сервис, благо стартует он без проблем.
#!/usr/bin/env bash check_spamd_port () { # connect to spamd's port # redirect outpur to /dev/null to avoid messaging from crontab after successful tests nc -z 127.0.0.1 783 > /dev/null } send_notify () { # send notification with status local status=$1 echo "spamd status == $status" | mail -s "Venti spamd status: $status" [email protected] } start_spamd () { service spamassassin start } if ! check_spamd_port; then send_notify "Down" start_spamd && send_notify "Up" || send_notify "Unable to start" fi
Проверяем – стопаем Spamassassin:
[simterm]
# service spamassassin stop Stopping spamd: [ OK ]
[/simterm]
Запускаем скрипт:
[simterm]
# ./check_spamd.sh Starting spamd: [ OK ]
[/simterm]
Проверяем статус:
[simterm]
# service spamassassin status spamd (pid 1655) is running...
[/simterm]
И ещё раз скрипт:
[simterm]
# ./check_spamd.sh Connection to 127.0.0.1 783 port [tcp/*] succeeded! spamd Up and running
[/simterm]
И уведомление:
[simterm]
19:49:55 [root@venti /opt] # crontab -l | grep spam 00 */12 * * * /usr/bin/sa-learn --spam /var/vmail/domain.kiev.ua/boxname\@domain.kiev.ua/.Junk/ */30 * * * * /opt/check_spamd.sh
[/simterm]
Готово.