#! /bin/sh
cd /root/workdir/sendEmail-v1.56
datemonth=`date +%Y-%m`
res=`grep "authentication failed" /volume1/@maillog/maillog | grep $datemonth | awk '{print $5}'|awk -F '[[\\\\]]' '{print $2}'|sort|uniq -c`
blacklist_file=/var/packages/MailPlus-Server/target/etc/access/smtpd_client_blacklist
have_auth_error=0
OLD_IFS=$IFS
IFS=$'\n'
for l in $res
do
f1=`echo $l|awk '{print $1}'`
f2=`echo $l|awk '{print $2}'`
if [ $f1 -gt 3 ]
then
#echo $f2
grep $f2 $blacklist_file
if [ $? != 0 ]
then
have_auth_error=1
echo "$f2 reject" >> $blacklist_file
fi
fi
done
IFS=$OLD_IFS
mailbody="grep result:\n"$res"\n--------------\nblacklist:\n`cat $blacklist_file`"
#echo -e "$mailbody" >ttt
today=`date +%Y%m%d`
if [ $have_auth_error = 1 ]
then
/volume1/@appstore/MailPlus-Server/sbin/postfix reload
sleep 3
./sendEmail -f 'Report<reporter@niuhes.cn>' -t niuhes@163.com -s 127.0.0.1:5870 -u "$today adding blacklist ip" -m "$mailbody" -o tls=no
else
echo "no auth fail.."
fi
timehour=`date +%H`
if [ $timehour = 07 ]
then
./sendEmail -f 'Report<reporter@niuhes.cn>' -t niuhes@163.com -s 127.0.0.1:5870 -u "$today added blacklist ip report" -m "$mailbody" -o tls=no
fi
也可通过iptables禁用ip,参见
屏蔽刷postfix IP的脚本
在/etc/crontab中加入定时任务每小时执行一次
0 */1 * * * root /volume1/docker/frp_0.27.0_linux_386/authfail_sendmail.sh > /dev/null 2>&1
群辉重启服务命令:
synoservice --restart crond
postfix 屏蔽多次auth失败ip:等您坐沙发呢!