Коллеги, хотелось бы услышать ваше мнение.
Работает у меня postfix, рубит кучу потенциального спама, в том числе на этапе соединения, HELO, MAIL FROM и RCPT TO.
Но вдруг стало жаль мне свой мэйл сервер, да и шлюз: очень уж много таких вот "отвергнутых" попыток ежеминутно появляется в логах. И прикрутил я к fail2ban еще один фильтр (причем заготовка для него есть в поставке):
# Fail2Ban configuration file
#
[Definition]
# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "<HOST>" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>[\w\-.^_]+)
# Values: TEXT
#
failregex = reject: RCPT from (.*)\[<HOST>\]: 550
reject: RCPT from (.*)\[<HOST>\]: 450
reject: RCPT from (.*)\[<HOST>\]: 554
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex = reject: RCPT from (.*)\[<HOST>\]: 450 4.2.0
Параметры фильтра в конфиге jail.conf такие:
[postfix]
enabled = true
port = smtp
filter = postfix
logpath = /var/log/mail.info
maxretry = 3
banaction = iptables-allports
bantime = 3600
Т.е. при трехкратной неудачной попытке послать письмо, закончившейся reject с кодами 550, 450 или 554 IP-адрес получает бан по порту smtp на 1 час. Некоторые особо активные спамеры, правда, успевают сделать несколько больше попыток, но это уже мелочь.
Если же это был "отлуп" из-за грейлистинга, то бана не последует: в строке ignoreregex это событие (с кодом 4.2.0) игнорируется.
Ну и - если это действительно какая-то временная ошибка (например, с DNS), из-за чего мой сервер ответил 450, то через час он готов будет снова попробовать принять это сообщение.
Ваше мнение, коллеги?