Спамом могут быть боты или люди - боты более вероятны.
Чтобы остановить ботов, поместите в скрытое поле, заполненное Javascript - с вероятностью 99,5% стандартный глупый бот, не настроенный для вашего сайта, не сможет его заполнить.
Если они не заполнили его правильно, сообщите им, что Javascript необходим или что-то в этом роде, и дайте им возможность опубликовать другим способом (например, с помощью капчи или регистрации). Таким образом, анонимные пользователи, которые не являются спам-ботами, могут (в основном) по-прежнему публиковать сообщения без проблем, а большинство спам-ботов (которые не были адаптированы для вашего конкретного сайта) не будут.
Не беспокойтесь о внесении в черный список IP-адресов или использовании сторонних черных списков, которые будут генерировать ложные срабатывания. Почти все боты используют те же IP-адреса, что и (некоторые) законные пользователи.
Еще одна хитрость заключается в том, чтобы вставить текстовое поле с правдоподобно звучащим именем, которое трудно увидеть с помощью CSS - любой, кто заполняет это поле чем-либо, считается ботом.