На почтовом сервере начал падать 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]
Готово.





