Вот правило для блокирования спама при помощи iptables и модуля tbf, написаннного Колей Малых:
-A FORWARD -p tcp -m tcp --dport smtp -m state --state NEW -m tbf ! \
--tbf 1/s --tbf-deep 1 --tbf-mode srcip --tbf-name SMTP \
--tbf-htable-expire 360000 -j TBFforSMTP
-----------
Предоставляю слово автору:
Словами это можно описать так - принимать не более 1 (параметр) попытки в секунду соединения с портом 25 и разрешать не существование более 1 (параметр) такого пакета в хэш-таблице с хешированием по адресу отправителя. Т. е. у меня сейчас все работает так - если некий (любой) хост предпринимает шлет более 1 (можно установить любое значение) SYN-пакета в секунду в порт 25, то принимается только первое соединение, а остальные отвергаются. очень легко и эффективно рубятся выбросы спама с одного хоста, когда тебе могут одномоментно заслать штук 100 сообщений. При этом не возникает никакой дискриминации по странам, континентам и прочим условиям - все в равной мере фильтруются просто по скорости попыток организации соединений.
Модуль доступен тута -
http://www.nmalykh.org/work/tbf.tar.gz
А вот статья о нём (в том числе) -
http://www.protocols.ru/Papers/iptables-tbf.shtml