我正在为一些不同的域名托pipe邮件服务器。 最近,其中一个用户的密码被人猜到了/被黑客攻击,并且在我注意到之前,这个帐户被用来发送了几十万条消息,并且能够closures它,导致整个服务器被列入黑名单
我想在qmail中设置一个限制,以每个用户/域/时间为基础限速发送的电子邮件,但到目前为止还没有find任何内置的function。
你所知道的任何技术都是有用的。 我遇到的一个select是通过SpamAssassin发送出站电子邮件,但我担心阻止合法的消息。
Qmail有一些适合你的描述的节stream补丁 。 我怀疑有没有修补Qmail的function,因为Qmail是啊,完美的编码。
请看这个关于各种MTA的讨论 ,特别是关于Qmail的说明。 请记住,这个讨论是从6年前开始的,关于Qmail的评论更是如此。 这可能不是你的短期或中期计划,但从Qmail迁移应该是需要考虑的事情,特别是如果你必须应用一堆随机补丁来达到你想要的目的。
嗯,关于如何在Postfix中做类似的讨论是使用policyd插件。 看一下这个项目,可以发现它可以和不同的MTA一起使用,所以你可以说服Qmail使用它。
它工作得很好,谢谢!
您还应该在第一个grep之后包含下一行:
grep“$(date +”%b%d“)”/ var / log / maillog | grep提交:| awk -Fsuccess {'print $ 2'} | awk -F:{'print $ 1'} | sorting| uniq -c | sort -n | grep -v(unknown)| awk {'print $ 1“|”$ 2“}
所以你可以阻止简单的未encryption的smtp提交也。
问候!
你也可以用swatch监控外发邮件,当swatch检测到qmail-send最大时(比如:remote 30/30)发送一个提醒。
你可以使用tcpserver限制补丁:当服务器的负载平均值高于一定数量时,给予tcpserver拒绝连接的能力,当从同一个IP地址接收到超过一定数量的连接时,或者当超过一定数量从同一个C类块中的机器收到连接(即IP地址中的“前三个数字”是相同的。“1.2.3.4”和“1.2.3.100”在同一个C类块中) https ://qmail.jms1.net/ucspi-tcp/
此脚本限制每个用户每天发送的电子邮件数量。 如果用户达到最大预设值,则脚本将更改密码,并将电子邮件发送给pipe理员。
安装:
在crontab中添加
*/5 * * * * /home/vpopmail/bin/qmail-antispam >> /var/log/maillog 2>&1
检查日志,以检查它是否工作:
tail -f /var/log/maillog | grep "qmail-antispam"
#!/bin/sh #Qmail Toaster AntiSpam - qmail limit number of emails sent by user by day #PseudoAntiSpam - Fake Antispam - Toxic Antispam - LogBased Antispam #Prevent when an attacker steal a user password and abuse the server. # #Español Spanish #Script para limitar la cantidad de envios realizados por usuario por dia. Si el usuario alcanzo un maximo prefijado se la cambia el password y se envia un correo al administrador. #Este script previene los casos en los que un atacante roba una clave y abusa de nuestro server haciendo envios masivos. Normalmente estos envios masivos implican multiples autenticaciones y contando la cantidad de envios con autenticacion se identifica el ataque, y se le cambia el password para frenar esos envios. # #Para instalar: #1- Guardar y dar permisos de ejecucion a este script como: /home/vpopmail/bin/qmail-antispam #2- Crear este archivo: /etc/qmailadmin/qmail-antispam/blacklist #3- En el crontab agregar #*/5 * * * * /home/vpopmail/bin/qmail-antispam >> /var/log/maillog 2>&1 # # #Revisar los logs asi para verificar que este funcionando #tail -f /var/log/maillog | grep "qmail-antispam" # #English Ingles #Google translate: # #This script limit the number of emails sent per user per day. If the user reached a maximum preset, the script will change the password and an email is sent to the administrator. # # To install: # 1 - Save and execute permissions to this script as: /home/vpopmail/bin/qmail-antispam # 2 - Create this file: /etc/qmailadmin/qmail-spam/blacklist # 3 - In the crontab add # * / 5 **** /home/vpopmail/bin/qmail-antispam >> /var/log/maillog 2>&1 # # # Review the logs so to check if it works: # tail-f / var / log / maillog | grep "qmail-antispam" # # #Author: 3.14 #Contact: [email protected] #Configuracion / Config MAILLOG="/var/log/maillog" MAX_CORREOS=3000 ID_SERVER="ID_SERVER" [email protected] LISTA_NEGRA=/etc/qmailadmin/qmail-antispam/blacklist VUSERINFO="/home/vpopmail/bin/vuserinfo" VPASSWD="/home/vpopmail/bin/vpasswd" AUX=$(mktemp) echo "$(date) qmail-antispam : Revisando logs" function LstUsers { grep "$(date +"%b %d")" /var/log/maillog| grep auth: | grep ALL| awk -Fauth: {'print $2'} | awk {'print $1'} | sort | uniq -c | sort -n | grep -v \(unknown\) | awk {'print $1"|"$2'} } LstUsers >$AUX #cat $AUX for i in $(cat $AUX); do cantidad=$(echo $i | awk -F\| {'print $1'}) usuario=$(echo $i | awk -F\| {'print $2'}) if [ $cantidad -gt $MAX_CORREOS ]; then #echo "$(date) Limite de autenticaciones exedido: $usuario" #echo "$(date) Verificando si $usuario se encuentra suspendido" if [ "$(cat $LISTA_NEGRA | grep "$(date +"%b %d %Y")" | grep $usuario)" == "" ]; then echo "$(date) qmail-antispam : Suspendiendo al usuario: $usuario envios: $cantidad maximo_permitido: $MAX_CORREOS" >> $MAILLOG password_capturado=$($VUSERINFO $usuario | grep "clear passwd" | awk -F: {'print $2'}) echo "$(date +"%b %d %Y")" $usuario $password_capturado>>$LISTA_NEGRA echo -e "Fecha: $(date) \nUsuario: $usuario \nPassword: $password_capturado \nEnvios: $cantidad" | mail -s "Aviso de spam en el $ID_SERVER" "$CONTACTO" $VPASSWD $usuario -r fi fi done echo "$(date) qmail-antispam : Fin de revision"