1 - установить почтовый сервер
Это легко, используя любой современный дистрибутив Linux. "yum install" или "apt-get" будут обрабатывать детали для вас. Все, что вам нужно сделать, это решить, какой SMTP-сервер вы хотите (postfix, exim, sendmail и т. Д.)
2 - настроить брандмауэр, чтобы ТОЛЬКО разрешать соединения с почтовым сервером с моего сайта
Любой недавний SMTP-сервер должен быть настроен «из коробки», чтобы НЕ действовать как открытый ретранслятор. Это означает, что ваш сервер «сайта A» не будет принимать электронную почту от «сайта B» и пересылать ее на «сайт C». Если вы не хотите выступать в качестве обычного почтового сервера, вы можете отключить брандмауэр от прослушивающих портов (для этого обычно используются TCP-порты 25, 465 и 587). Или вы можете просто настроить сервер на прослушивание localhost: 25 вместо *: 25, чтобы никакие «внешние» соединения не принимались.
3 - настроить почтовый сервер таким образом, чтобы каждые 5 минут можно было отправлять максимум x писем
Это зависит от сервера. Вот серверный сбой ответ для постфикса.
4 - Создайте фильтр php перед отправкой почты, который проверяет наличие «плохих» слов.
Достаточно просто. Некоторые str_replace / preg_replace могут справиться с этим. Вопрос в том, насколько подробную информацию вы хотите получить, или если люди, использующие вашу систему из , это место будет S.O.L.
5 - При необходимости, в крайнем случае, задать пользователю вопрос (например, 5 + 5) перед отправкой формы
Опять достаточно просто. Там полно библиотек, похожих на капчу.