Простой скрипт для postfix на UNIX shell для обнаружения рассылки спама

Скрипт блокирует отправку почты, при условии, что проверка smtpd_recipient_restrictions включена, используется hash:

check_sender_access hash:$config_directory/access_sender
#!/bin/sh
msg_qnt_def=25
def_mail=admin@example.com
file_ctl=/var/tmp/check_hack_ctl
msg_qnt=`find /var/spool/postfix/deferred -type f | wc -l | sed 's/^[ \t]*//'`
sndfl=/usr/local/etc/postfix/access_sender

if [ ! -f $file_ctl -a $msg_qnt -gt $msg_qnt_def ]; then
    cat << EOF > /tmp/check_hack_msg
Mail queue is too much. (Messages in queues - $msg_qnt)
Maybe hacked one or more email accounts.
------------------------------------------------------
`mailq`
EOF
    cat /tmp/check_hack_msg | mail -s "Mail Server :: Mail queue is too much" $def_mail
    rm -f /tmp/check_hack_msg

    for send_adr in `mailq | grep -E -o '\b[A-Za-z0-9._%+-]+@example+\.com\b' | uniq -d`; do
        echo "$send_adr REJECT # `date '+%d.%m.%Y %T'` - Обнаружена рассылка спама. Смените пароль." >> $sndfl
        mailq | grep $send_adr | awk '{print $1}' | /usr/local/sbin/postsuper -d -
        cat << EOF | sendmail -t
Subject: Отправка почты заблокирована.
From: noreply@example.com
To: $send_adr
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Это письмо сгенерировано автоматически сервером почты. Отвечать на него не нужно!
С вашего почтового ящика обнаружена рассылка спама, поэтому отправка почты временно блокирована.
Для восстановления работы почтового ящика обратитесь в вычислительный центр.
Вам необходимо изменить пароль вашей учетной записи.
EOF
    done
    /usr/local/sbin/postmap $sndfl
    touch $file_ctl
fi

if [ -f $file_ctl -a $msg_qnt -lt $msg_qnt_def ]; then
    cat << EOF > /tmp/check_hack_msg_nrl
Mail queue is normal. (Current messages in queues - $msg_qnt)
EOF
    cat /tmp/check_hack_msg_nrl | mail -s "MarSU - Mail Server :: Mail queue is normal" $def_mail
    rm -f /tmp/check_hack_msg_nrl
    rm $file_ctl
fi

Теперь можно добавить его в cron с периодичностью, минут 5.
P.S. Домен example.com меняем, конечно же, на свой)

Be the first to comment on "Простой скрипт для postfix на UNIX shell для обнаружения рассылки спама"

Leave a comment

Your email address will not be published.